Skip to content

Commit 461a0d6

Browse files
authored
[FMV] Add "+fmv" to the target-features of versioned functions. (#116028)
This essentially propagates the information that a function is versioned from source code to IR.
1 parent 95b680e commit 461a0d6

File tree

9 files changed

+161
-158
lines changed

9 files changed

+161
-158
lines changed

clang/lib/AST/ASTContext.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14299,7 +14299,7 @@ QualType ASTContext::getCorrespondingSignedFixedPointType(QualType Ty) const {
1429914299
// corresponding backend features (which may contain duplicates).
1430014300
static std::vector<std::string> getFMVBackendFeaturesFor(
1430114301
const llvm::SmallVectorImpl<StringRef> &FMVFeatStrings) {
14302-
std::vector<std::string> BackendFeats;
14302+
std::vector<std::string> BackendFeats{{"+fmv"}};
1430314303
llvm::AArch64::ExtensionSet FeatureBits;
1430414304
for (StringRef F : FMVFeatStrings)
1430514305
if (auto FMVExt = llvm::AArch64::parseFMVExtension(F))

clang/test/CodeGen/AArch64/fmv-dependencies.c

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -150,48 +150,48 @@ int caller() {
150150
return fmv();
151151
}
152152

153-
// CHECK: attributes #[[aes]] = { {{.*}} "target-features"="+aes,+fp-armv8,+neon,+outline-atomics,+v8a"
154-
// CHECK: attributes #[[bf16]] = { {{.*}} "target-features"="+bf16,+fp-armv8,+neon,+outline-atomics,+v8a"
155-
// CHECK: attributes #[[bti]] = { {{.*}} "target-features"="+bti,+fp-armv8,+neon,+outline-atomics,+v8a"
156-
// CHECK: attributes #[[crc]] = { {{.*}} "target-features"="+crc,+fp-armv8,+neon,+outline-atomics,+v8a"
157-
// CHECK: attributes #[[dit]] = { {{.*}} "target-features"="+dit,+fp-armv8,+neon,+outline-atomics,+v8a"
158-
// CHECK: attributes #[[dotprod]] = { {{.*}} "target-features"="+dotprod,+fp-armv8,+neon,+outline-atomics,+v8a"
159-
// CHECK: attributes #[[dpb]] = { {{.*}} "target-features"="+ccpp,+fp-armv8,+neon,+outline-atomics,+v8a"
160-
// CHECK: attributes #[[dpb2]] = { {{.*}} "target-features"="+ccdp,+ccpp,+fp-armv8,+neon,+outline-atomics,+v8a"
161-
// CHECK: attributes #[[f32mm]] = { {{.*}} "target-features"="+f32mm,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+v8a"
162-
// CHECK: attributes #[[f64mm]] = { {{.*}} "target-features"="+f64mm,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+v8a"
163-
// CHECK: attributes #[[fcma]] = { {{.*}} "target-features"="+complxnum,+fp-armv8,+neon,+outline-atomics,+v8a"
164-
// CHECK: attributes #[[flagm]] = { {{.*}} "target-features"="+flagm,+fp-armv8,+neon,+outline-atomics,+v8a"
165-
// CHECK: attributes #[[flagm2]] = { {{.*}} "target-features"="+altnzcv,+flagm,+fp-armv8,+neon,+outline-atomics,+v8a"
166-
// CHECK: attributes #[[default]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+v8a"
167-
// CHECK: attributes #[[fp16]] = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+outline-atomics,+v8a"
168-
// CHECK: attributes #[[fp16fml]] = { {{.*}} "target-features"="+fp-armv8,+fp16fml,+fullfp16,+neon,+outline-atomics,+v8a"
169-
// CHECK: attributes #[[frintts]] = { {{.*}} "target-features"="+fp-armv8,+fptoint,+neon,+outline-atomics,+v8a"
170-
// CHECK: attributes #[[i8mm]] = { {{.*}} "target-features"="+fp-armv8,+i8mm,+neon,+outline-atomics,+v8a"
171-
// CHECK: attributes #[[jscvt]] = { {{.*}} "target-features"="+fp-armv8,+jsconv,+neon,+outline-atomics,+v8a"
172-
// CHECK: attributes #[[ls64]] = { {{.*}} "target-features"="+fp-armv8,+ls64,+neon,+outline-atomics,+v8a"
173-
// CHECK: attributes #[[lse]] = { {{.*}} "target-features"="+fp-armv8,+lse,+neon,+outline-atomics,+v8a"
174-
// CHECK: attributes #[[memtag]] = { {{.*}} "target-features"="+fp-armv8,+mte,+neon,+outline-atomics,+v8a"
175-
// CHECK: attributes #[[mops]] = { {{.*}} "target-features"="+fp-armv8,+mops,+neon,+outline-atomics,+v8a"
176-
// CHECK: attributes #[[predres]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+predres,+v8a"
177-
// CHECK: attributes #[[rcpc]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+rcpc,+v8a"
178-
// CHECK: attributes #[[rcpc2]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+rcpc,+rcpc-immo,+v8a"
179-
// CHECK: attributes #[[rcpc3]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+rcpc,+rcpc-immo,+rcpc3,+v8a"
180-
// CHECK: attributes #[[rdm]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+rdm,+v8a"
181-
// CHECK: attributes #[[rng]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+rand,+v8a"
182-
// CHECK: attributes #[[sb]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+sb,+v8a"
183-
// CHECK: attributes #[[sha2]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+sha2,+v8a"
184-
// CHECK: attributes #[[sha3]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+sha2,+sha3,+v8a"
185-
// CHECK: attributes #[[sm4]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+sm4,+v8a"
186-
// CHECK: attributes #[[sme]] = { {{.*}} "target-features"="+bf16,+fp-armv8,+neon,+outline-atomics,+sme,+v8a"
187-
// CHECK: attributes #[[sme_f64f64]] = { {{.*}} "target-features"="+bf16,+fp-armv8,+neon,+outline-atomics,+sme,+sme-f64f64,+v8a"
188-
// CHECK: attributes #[[sme_i16i64]] = { {{.*}} "target-features"="+bf16,+fp-armv8,+neon,+outline-atomics,+sme,+sme-i16i64,+v8a"
189-
// CHECK: attributes #[[sme2]] = { {{.*}} "target-features"="+bf16,+fp-armv8,+neon,+outline-atomics,+sme,+sme2,+v8a"
190-
// CHECK: attributes #[[ssbs]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+ssbs,+v8a"
191-
// CHECK: attributes #[[sve]] = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+v8a"
192-
// CHECK: attributes #[[sve2]] = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+sve2,+v8a"
193-
// CHECK: attributes #[[sve2_aes]] = { {{.*}} "target-features"="+aes,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+sve2,+sve2-aes,+v8a"
194-
// CHECK: attributes #[[sve2_bitperm]] = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+sve2,+sve2-bitperm,+v8a"
195-
// CHECK: attributes #[[sve2_sha3]] = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+outline-atomics,+sha2,+sha3,+sve,+sve2,+sve2-sha3,+v8a"
196-
// CHECK: attributes #[[sve2_sm4]] = { {{.*}} "target-features"="+fp-armv8,+fullfp16,+neon,+outline-atomics,+sm4,+sve,+sve2,+sve2-sm4,+v8a"
197-
// CHECK: attributes #[[wfxt]] = { {{.*}} "target-features"="+fp-armv8,+neon,+outline-atomics,+v8a,+wfxt"
153+
// CHECK: attributes #[[aes]] = { {{.*}} "target-features"="+aes,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
154+
// CHECK: attributes #[[bf16]] = { {{.*}} "target-features"="+bf16,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
155+
// CHECK: attributes #[[bti]] = { {{.*}} "target-features"="+bti,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
156+
// CHECK: attributes #[[crc]] = { {{.*}} "target-features"="+crc,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
157+
// CHECK: attributes #[[dit]] = { {{.*}} "target-features"="+dit,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
158+
// CHECK: attributes #[[dotprod]] = { {{.*}} "target-features"="+dotprod,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
159+
// CHECK: attributes #[[dpb]] = { {{.*}} "target-features"="+ccpp,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
160+
// CHECK: attributes #[[dpb2]] = { {{.*}} "target-features"="+ccdp,+ccpp,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
161+
// CHECK: attributes #[[f32mm]] = { {{.*}} "target-features"="+f32mm,+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+v8a"
162+
// CHECK: attributes #[[f64mm]] = { {{.*}} "target-features"="+f64mm,+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+v8a"
163+
// CHECK: attributes #[[fcma]] = { {{.*}} "target-features"="+complxnum,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
164+
// CHECK: attributes #[[flagm]] = { {{.*}} "target-features"="+flagm,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
165+
// CHECK: attributes #[[flagm2]] = { {{.*}} "target-features"="+altnzcv,+flagm,+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
166+
// CHECK: attributes #[[default]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+v8a"
167+
// CHECK: attributes #[[fp16]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+v8a"
168+
// CHECK: attributes #[[fp16fml]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fp16fml,+fullfp16,+neon,+outline-atomics,+v8a"
169+
// CHECK: attributes #[[frintts]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fptoint,+neon,+outline-atomics,+v8a"
170+
// CHECK: attributes #[[i8mm]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+i8mm,+neon,+outline-atomics,+v8a"
171+
// CHECK: attributes #[[jscvt]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+jsconv,+neon,+outline-atomics,+v8a"
172+
// CHECK: attributes #[[ls64]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+ls64,+neon,+outline-atomics,+v8a"
173+
// CHECK: attributes #[[lse]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+lse,+neon,+outline-atomics,+v8a"
174+
// CHECK: attributes #[[memtag]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+mte,+neon,+outline-atomics,+v8a"
175+
// CHECK: attributes #[[mops]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+mops,+neon,+outline-atomics,+v8a"
176+
// CHECK: attributes #[[predres]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+predres,+v8a"
177+
// CHECK: attributes #[[rcpc]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+rcpc,+v8a"
178+
// CHECK: attributes #[[rcpc2]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+rcpc,+rcpc-immo,+v8a"
179+
// CHECK: attributes #[[rcpc3]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+rcpc,+rcpc-immo,+rcpc3,+v8a"
180+
// CHECK: attributes #[[rdm]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+rdm,+v8a"
181+
// CHECK: attributes #[[rng]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+rand,+v8a"
182+
// CHECK: attributes #[[sb]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+sb,+v8a"
183+
// CHECK: attributes #[[sha2]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+sha2,+v8a"
184+
// CHECK: attributes #[[sha3]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+sha2,+sha3,+v8a"
185+
// CHECK: attributes #[[sm4]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+sm4,+v8a"
186+
// CHECK: attributes #[[sme]] = { {{.*}} "target-features"="+bf16,+fmv,+fp-armv8,+neon,+outline-atomics,+sme,+v8a"
187+
// CHECK: attributes #[[sme_f64f64]] = { {{.*}} "target-features"="+bf16,+fmv,+fp-armv8,+neon,+outline-atomics,+sme,+sme-f64f64,+v8a"
188+
// CHECK: attributes #[[sme_i16i64]] = { {{.*}} "target-features"="+bf16,+fmv,+fp-armv8,+neon,+outline-atomics,+sme,+sme-i16i64,+v8a"
189+
// CHECK: attributes #[[sme2]] = { {{.*}} "target-features"="+bf16,+fmv,+fp-armv8,+neon,+outline-atomics,+sme,+sme2,+v8a"
190+
// CHECK: attributes #[[ssbs]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+ssbs,+v8a"
191+
// CHECK: attributes #[[sve]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+v8a"
192+
// CHECK: attributes #[[sve2]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+sve2,+v8a"
193+
// CHECK: attributes #[[sve2_aes]] = { {{.*}} "target-features"="+aes,+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+sve2,+sve2-aes,+v8a"
194+
// CHECK: attributes #[[sve2_bitperm]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sve,+sve2,+sve2-bitperm,+v8a"
195+
// CHECK: attributes #[[sve2_sha3]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sha2,+sha3,+sve,+sve2,+sve2-sha3,+v8a"
196+
// CHECK: attributes #[[sve2_sm4]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+fullfp16,+neon,+outline-atomics,+sm4,+sve,+sve2,+sve2-sm4,+v8a"
197+
// CHECK: attributes #[[wfxt]] = { {{.*}} "target-features"="+fmv,+fp-armv8,+neon,+outline-atomics,+v8a,+wfxt"

clang/test/CodeGen/AArch64/fmv-streaming.c

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,61 +2,61 @@
22

33

44
// CHECK-LABEL: define {{[^@]+}}@n_callee._Msve
5-
// CHECK-SAME: () #[[ATTR0:[0-9]+]] {
5+
// CHECK-SAME: () #[[locally_streaming_sve:[0-9]+]] {
66
//
77
// CHECK-LABEL: define {{[^@]+}}@n_callee._Msimd
8-
// CHECK-SAME: () #[[ATTR1:[0-9]+]] {
8+
// CHECK-SAME: () #[[locally_streaming_simd:[0-9]+]] {
99
//
1010
__arm_locally_streaming __attribute__((target_clones("sve", "simd"))) void n_callee(void) {}
1111
// CHECK-LABEL: define {{[^@]+}}@n_callee._Msme2
12-
// CHECK-SAME: () #[[ATTR2:[0-9]+]] {
12+
// CHECK-SAME: () #[[sme2:[0-9]+]] {
1313
//
1414
__attribute__((target_version("sme2"))) void n_callee(void) {}
1515
// CHECK-LABEL: define {{[^@]+}}@n_callee.default
16-
// CHECK-SAME: () #[[ATTR3:[0-9]+]] {
16+
// CHECK-SAME: () #[[default:[0-9]+]] {
1717
//
1818
__attribute__((target_version("default"))) void n_callee(void) {}
1919

2020

2121
// CHECK-LABEL: define {{[^@]+}}@s_callee._Msve
22-
// CHECK-SAME: () #[[ATTR4:[0-9]+]] {
22+
// CHECK-SAME: () #[[sve_streaming:[0-9]+]] {
2323
//
2424
// CHECK-LABEL: define {{[^@]+}}@s_callee._Msimd
25-
// CHECK-SAME: () #[[ATTR5:[0-9]+]] {
25+
// CHECK-SAME: () #[[simd_streaming:[0-9]+]] {
2626
//
2727
__attribute__((target_clones("sve", "simd"))) void s_callee(void) __arm_streaming {}
2828
// CHECK-LABEL: define {{[^@]+}}@s_callee._Msme2
29-
// CHECK-SAME: () #[[ATTR6:[0-9]+]] {
29+
// CHECK-SAME: () #[[locally_streaming_sme2_streaming:[0-9]+]] {
3030
//
3131
__arm_locally_streaming __attribute__((target_version("sme2"))) void s_callee(void) __arm_streaming {}
3232
// CHECK-LABEL: define {{[^@]+}}@s_callee.default
33-
// CHECK-SAME: () #[[ATTR7:[0-9]+]] {
33+
// CHECK-SAME: () #[[default_streaming:[0-9]+]] {
3434
//
3535
__attribute__((target_version("default"))) void s_callee(void) __arm_streaming {}
3636

3737

3838
// CHECK-LABEL: define {{[^@]+}}@sc_callee._Msve
39-
// CHECK-SAME: () #[[ATTR8:[0-9]+]] {
39+
// CHECK-SAME: () #[[sve_streaming_compatible:[0-9]+]] {
4040
//
4141
// CHECK-LABEL: define {{[^@]+}}@sc_callee._Msimd
42-
// CHECK-SAME: () #[[ATTR9:[0-9]+]] {
42+
// CHECK-SAME: () #[[simd_streaming_compatible:[0-9]+]] {
4343
//
4444
__attribute__((target_clones("sve", "simd"))) void sc_callee(void) __arm_streaming_compatible {}
4545
// CHECK-LABEL: define {{[^@]+}}@sc_callee._Msme2
46-
// CHECK-SAME: () #[[ATTR10:[0-9]+]] {
46+
// CHECK-SAME: () #[[locally_streaming_sme2_streaming_compatible:[0-9]+]] {
4747
//
4848
__arm_locally_streaming __attribute__((target_version("sme2"))) void sc_callee(void) __arm_streaming_compatible {}
4949
// CHECK-LABEL: define {{[^@]+}}@sc_callee.default
50-
// CHECK-SAME: () #[[ATTR11:[0-9]+]] {
50+
// CHECK-SAME: () #[[default_streaming_compatible:[0-9]+]] {
5151
//
5252
__attribute__((target_version("default"))) void sc_callee(void) __arm_streaming_compatible {}
5353

5454

5555
// CHECK-LABEL: define {{[^@]+}}@n_caller
56-
// CHECK-SAME: () #[[ATTR3:[0-9]+]] {
56+
// CHECK-SAME: () #[[caller:[0-9]+]] {
5757
// CHECK: call void @n_callee()
58-
// CHECK: call void @s_callee() #[[ATTR12:[0-9]+]]
59-
// CHECK: call void @sc_callee() #[[ATTR13:[0-9]+]]
58+
// CHECK: call void @s_callee() #[[callsite_streaming:[0-9]+]]
59+
// CHECK: call void @sc_callee() #[[callsite_streaming_compatible:[0-9]+]]
6060
//
6161
void n_caller(void) {
6262
n_callee();
@@ -66,10 +66,10 @@ void n_caller(void) {
6666

6767

6868
// CHECK-LABEL: define {{[^@]+}}@s_caller
69-
// CHECK-SAME: () #[[ATTR7:[0-9]+]] {
69+
// CHECK-SAME: () #[[caller_streaming:[0-9]+]] {
7070
// CHECK: call void @n_callee()
71-
// CHECK: call void @s_callee() #[[ATTR12]]
72-
// CHECK: call void @sc_callee() #[[ATTR13]]
71+
// CHECK: call void @s_callee() #[[callsite_streaming]]
72+
// CHECK: call void @sc_callee() #[[callsite_streaming_compatible]]
7373
//
7474
void s_caller(void) __arm_streaming {
7575
n_callee();
@@ -79,10 +79,10 @@ void s_caller(void) __arm_streaming {
7979

8080

8181
// CHECK-LABEL: define {{[^@]+}}@sc_caller
82-
// CHECK-SAME: () #[[ATTR11:[0-9]+]] {
82+
// CHECK-SAME: () #[[caller_streaming_compatible:[0-9]+]] {
8383
// CHECK: call void @n_callee()
84-
// CHECK: call void @s_callee() #[[ATTR12]]
85-
// CHECK: call void @sc_callee() #[[ATTR13]]
84+
// CHECK: call void @s_callee() #[[callsite_streaming]]
85+
// CHECK: call void @sc_callee() #[[callsite_streaming_compatible]]
8686
//
8787
void sc_caller(void) __arm_streaming_compatible {
8888
n_callee();
@@ -91,17 +91,20 @@ void sc_caller(void) __arm_streaming_compatible {
9191
}
9292

9393

94-
// CHECK: attributes #[[ATTR0:[0-9]+]] = {{.*}} "aarch64_pstate_sm_body"
95-
// CHECK: attributes #[[ATTR1:[0-9]+]] = {{.*}} "aarch64_pstate_sm_body"
96-
// CHECK: attributes #[[ATTR2:[0-9]+]] = {{.*}}
97-
// CHECK: attributes #[[ATTR3]] = {{.*}}
98-
// CHECK: attributes #[[ATTR4:[0-9]+]] = {{.*}} "aarch64_pstate_sm_enabled"
99-
// CHECK: attributes #[[ATTR5:[0-9]+]] = {{.*}} "aarch64_pstate_sm_enabled"
100-
// CHECK: attributes #[[ATTR6:[0-9]+]] = {{.*}} "aarch64_pstate_sm_body" "aarch64_pstate_sm_enabled"
101-
// CHECK: attributes #[[ATTR7]] = {{.*}} "aarch64_pstate_sm_enabled"
102-
// CHECK: attributes #[[ATTR8:[0-9]+]] = {{.*}} "aarch64_pstate_sm_compatible"
103-
// CHECK: attributes #[[ATTR9:[0-9]+]] = {{.*}} "aarch64_pstate_sm_compatible"
104-
// CHECK: attributes #[[ATTR10]] = {{.*}} "aarch64_pstate_sm_body" "aarch64_pstate_sm_compatible"
105-
// CHECK: attributes #[[ATTR11]] = {{.*}} "aarch64_pstate_sm_compatible"
106-
// CHECK: attributes #[[ATTR12]] = {{.*}} "aarch64_pstate_sm_enabled"
107-
// CHECK: attributes #[[ATTR13]] = {{.*}} "aarch64_pstate_sm_compatible"
94+
// CHECK: attributes #[[locally_streaming_sve]] = {{.*}} "aarch64_pstate_sm_body"
95+
// CHECK: attributes #[[locally_streaming_simd]] = {{.*}} "aarch64_pstate_sm_body"
96+
// CHECK: attributes #[[sme2]] = {{.*}}
97+
// CHECK: attributes #[[default]] = {{.*}}
98+
// CHECK: attributes #[[sve_streaming]] = {{.*}} "aarch64_pstate_sm_enabled"
99+
// CHECK: attributes #[[simd_streaming]] = {{.*}} "aarch64_pstate_sm_enabled"
100+
// CHECK: attributes #[[locally_streaming_sme2_streaming]] = {{.*}} "aarch64_pstate_sm_body" "aarch64_pstate_sm_enabled"
101+
// CHECK: attributes #[[default_streaming]] = {{.*}} "aarch64_pstate_sm_enabled"
102+
// CHECK: attributes #[[sve_streaming_compatible]] = {{.*}} "aarch64_pstate_sm_compatible"
103+
// CHECK: attributes #[[simd_streaming_compatible]] = {{.*}} "aarch64_pstate_sm_compatible"
104+
// CHECK: attributes #[[locally_streaming_sme2_streaming_compatible]] = {{.*}} "aarch64_pstate_sm_body" "aarch64_pstate_sm_compatible"
105+
// CHECK: attributes #[[default_streaming_compatible]] = {{.*}} "aarch64_pstate_sm_compatible"
106+
// CHECK: attributes #[[caller]] = {{.*}}
107+
// CHECK: attributes #[[caller_streaming]] = {{.*}} "aarch64_pstate_sm_enabled"
108+
// CHECK: attributes #[[caller_streaming_compatible]] = {{.*}} "aarch64_pstate_sm_compatible"
109+
// CHECK: attributes #[[callsite_streaming]] = {{.*}} "aarch64_pstate_sm_enabled"
110+
// CHECK: attributes #[[callsite_streaming_compatible]] = {{.*}} "aarch64_pstate_sm_compatible"

clang/test/CodeGen/AArch64/mixed-target-attributes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ __attribute__((target_version("jscvt"))) int default_def_with_version_decls(void
198198
//
199199
// CHECK: Function Attrs: noinline nounwind optnone
200200
// CHECK-LABEL: define {{[^@]+}}@implicit_default.default
201-
// CHECK-SAME: () #[[ATTR0]] {
201+
// CHECK-SAME: () #[[ATTR6:[0-9]+]] {
202202
// CHECK-NEXT: entry:
203203
// CHECK-NEXT: ret i32 2
204204
//

0 commit comments

Comments
 (0)