1
1
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals all --include-generated-funcs --version 5
2
2
// RUN: %clang_cc1 -std=c++11 -triple aarch64-linux-gnu -emit-llvm %s -o - | FileCheck %s
3
3
4
- int __attribute__ ((target_clones(" ls64_v +fp16" , " default" ))) foo_ovl(int ) { return 1 ; }
5
- int __attribute__ ((target_clones(" ls64_accdata +ls64" ))) foo_ovl(void ) { return 2 ; }
4
+ int __attribute__ ((target_clones(" ls64 +fp16" , " default" ))) foo_ovl(int ) { return 1 ; }
5
+ int __attribute__ ((target_clones(" fp16 +ls64" ))) foo_ovl(void ) { return 2 ; }
6
6
7
7
int bar () {
8
8
return foo_ovl (1 ) + foo_ovl ();
@@ -45,7 +45,7 @@ void run_foo_tml() {
45
45
// CHECK: @_ZN7MyClassIssE7foo_tmlEv = weak_odr ifunc i32 (ptr), ptr @_ZN7MyClassIssE7foo_tmlEv.resolver
46
46
// CHECK: @_ZN7MyClassIisE7foo_tmlEv = weak_odr ifunc i32 (ptr), ptr @_ZN7MyClassIisE7foo_tmlEv.resolver
47
47
// .
48
- // CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovli._Mfp16Mls64_v (
48
+ // CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovli._Mfp16Mls64 (
49
49
// CHECK-SAME: i32 noundef [[TMP0:%.*]]) #[[ATTR0:[0-9]+]] {
50
50
// CHECK-NEXT: [[ENTRY:.*:]]
51
51
// CHECK-NEXT: [[DOTADDR:%.*]] = alloca i32, align 4
@@ -57,18 +57,18 @@ void run_foo_tml() {
57
57
// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
58
58
// CHECK-NEXT: call void @__init_cpu_features_resolver()
59
59
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
60
- // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 4503599627436032
61
- // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 4503599627436032
60
+ // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 2251799813750784
61
+ // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 2251799813750784
62
62
// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
63
63
// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
64
64
// CHECK: [[RESOLVER_RETURN]]:
65
- // CHECK-NEXT: ret ptr @_Z7foo_ovli._Mfp16Mls64_v
65
+ // CHECK-NEXT: ret ptr @_Z7foo_ovli._Mfp16Mls64
66
66
// CHECK: [[RESOLVER_ELSE]]:
67
67
// CHECK-NEXT: ret ptr @_Z7foo_ovli.default
68
68
//
69
69
//
70
- // CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovlv._Mls64Mls64_accdata (
71
- // CHECK-SAME: ) #[[ATTR1:[0-9]+ ]] {
70
+ // CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovlv._Mfp16Mls64 (
71
+ // CHECK-SAME: ) #[[ATTR0 ]] {
72
72
// CHECK-NEXT: [[ENTRY:.*:]]
73
73
// CHECK-NEXT: ret i32 2
74
74
//
@@ -77,18 +77,18 @@ void run_foo_tml() {
77
77
// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
78
78
// CHECK-NEXT: call void @__init_cpu_features_resolver()
79
79
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
80
- // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 11258999068426240
81
- // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 11258999068426240
80
+ // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 2251799813750784
81
+ // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 2251799813750784
82
82
// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
83
83
// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
84
84
// CHECK: [[RESOLVER_RETURN]]:
85
- // CHECK-NEXT: ret ptr @_Z7foo_ovlv._Mls64Mls64_accdata
85
+ // CHECK-NEXT: ret ptr @_Z7foo_ovlv._Mfp16Mls64
86
86
// CHECK: [[RESOLVER_ELSE]]:
87
87
// CHECK-NEXT: ret ptr @_Z7foo_ovlv.default
88
88
//
89
89
//
90
90
// CHECK-LABEL: define dso_local noundef i32 @_Z3barv(
91
- // CHECK-SAME: ) #[[ATTR2 :[0-9]+]] {
91
+ // CHECK-SAME: ) #[[ATTR1 :[0-9]+]] {
92
92
// CHECK-NEXT: [[ENTRY:.*:]]
93
93
// CHECK-NEXT: [[CALL:%.*]] = call noundef i32 @_Z7foo_ovli(i32 noundef 1)
94
94
// CHECK-NEXT: [[CALL1:%.*]] = call noundef i32 @_Z7foo_ovlv()
@@ -97,7 +97,7 @@ void run_foo_tml() {
97
97
//
98
98
//
99
99
// CHECK-LABEL: define dso_local void @_Z11run_foo_tmlv(
100
- // CHECK-SAME: ) #[[ATTR2 ]] {
100
+ // CHECK-SAME: ) #[[ATTR1 ]] {
101
101
// CHECK-NEXT: [[ENTRY:.*:]]
102
102
// CHECK-NEXT: [[MC1:%.*]] = alloca [[STRUCT_MYCLASS:%.*]], align 1
103
103
// CHECK-NEXT: [[MC2:%.*]] = alloca [[STRUCT_MYCLASS_0:%.*]], align 1
@@ -111,7 +111,7 @@ void run_foo_tml() {
111
111
//
112
112
//
113
113
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIfsE7foo_tmlEv(
114
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR2 ]] comdat {
114
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR1 ]] comdat {
115
115
// CHECK-NEXT: [[ENTRY:.*:]]
116
116
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
117
117
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -120,7 +120,7 @@ void run_foo_tml() {
120
120
//
121
121
//
122
122
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIdfE7foo_tmlEv(
123
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR2 ]] comdat {
123
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR1 ]] comdat {
124
124
// CHECK-NEXT: [[ENTRY:.*:]]
125
125
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
126
126
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -129,21 +129,21 @@ void run_foo_tml() {
129
129
//
130
130
//
131
131
// CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovli.default(
132
- // CHECK-SAME: i32 noundef [[TMP0:%.*]]) #[[ATTR2 ]] {
132
+ // CHECK-SAME: i32 noundef [[TMP0:%.*]]) #[[ATTR1 ]] {
133
133
// CHECK-NEXT: [[ENTRY:.*:]]
134
134
// CHECK-NEXT: [[DOTADDR:%.*]] = alloca i32, align 4
135
135
// CHECK-NEXT: store i32 [[TMP0]], ptr [[DOTADDR]], align 4
136
136
// CHECK-NEXT: ret i32 1
137
137
//
138
138
//
139
139
// CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovlv.default(
140
- // CHECK-SAME: ) #[[ATTR2 ]] {
140
+ // CHECK-SAME: ) #[[ATTR1 ]] {
141
141
// CHECK-NEXT: [[ENTRY:.*:]]
142
142
// CHECK-NEXT: ret i32 2
143
143
//
144
144
//
145
145
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIssE7foo_tmlEv._Mfrintts(
146
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR3 :[0-9]+]] comdat {
146
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR2 :[0-9]+]] comdat {
147
147
// CHECK-NEXT: [[ENTRY:.*:]]
148
148
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
149
149
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -152,7 +152,7 @@ void run_foo_tml() {
152
152
//
153
153
//
154
154
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIssE7foo_tmlEv._Msme-f64f64Mssbs(
155
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR4 :[0-9]+]] comdat {
155
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR3 :[0-9]+]] comdat {
156
156
// CHECK-NEXT: [[ENTRY:.*:]]
157
157
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
158
158
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -161,7 +161,7 @@ void run_foo_tml() {
161
161
//
162
162
//
163
163
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIssE7foo_tmlEv.default(
164
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR2 ]] comdat {
164
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR1 ]] comdat {
165
165
// CHECK-NEXT: [[ENTRY:.*:]]
166
166
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
167
167
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -173,8 +173,8 @@ void run_foo_tml() {
173
173
// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
174
174
// CHECK-NEXT: call void @__init_cpu_features_resolver()
175
175
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
176
- // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 36310271995674624
177
- // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 36310271995674624
176
+ // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 9288674231451648
177
+ // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 9288674231451648
178
178
// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
179
179
// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
180
180
// CHECK: [[RESOLVER_RETURN]]:
@@ -192,7 +192,7 @@ void run_foo_tml() {
192
192
//
193
193
//
194
194
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIisE7foo_tmlEv._Mfrintts(
195
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR3 ]] comdat {
195
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR2 ]] comdat {
196
196
// CHECK-NEXT: [[ENTRY:.*:]]
197
197
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
198
198
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -201,7 +201,7 @@ void run_foo_tml() {
201
201
//
202
202
//
203
203
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIisE7foo_tmlEv._Msme-f64f64Mssbs(
204
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR4 ]] comdat {
204
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR3 ]] comdat {
205
205
// CHECK-NEXT: [[ENTRY:.*:]]
206
206
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
207
207
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -210,7 +210,7 @@ void run_foo_tml() {
210
210
//
211
211
//
212
212
// CHECK-LABEL: define linkonce_odr noundef i32 @_ZN7MyClassIisE7foo_tmlEv.default(
213
- // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR2 ]] comdat {
213
+ // CHECK-SAME: ptr noundef nonnull align 1 dereferenceable(1) [[THIS:%.*]]) #[[ATTR1 ]] comdat {
214
214
// CHECK-NEXT: [[ENTRY:.*:]]
215
215
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
216
216
// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -222,8 +222,8 @@ void run_foo_tml() {
222
222
// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
223
223
// CHECK-NEXT: call void @__init_cpu_features_resolver()
224
224
// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
225
- // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 36310271995674624
226
- // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 36310271995674624
225
+ // CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 9288674231451648
226
+ // CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 9288674231451648
227
227
// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
228
228
// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
229
229
// CHECK: [[RESOLVER_RETURN]]:
@@ -240,11 +240,10 @@ void run_foo_tml() {
240
240
// CHECK-NEXT: ret ptr @_ZN7MyClassIisE7foo_tmlEv.default
241
241
//
242
242
// .
243
- // CHECK: attributes #[[ATTR0]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+neon" }
244
- // CHECK: attributes #[[ATTR1]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+ls64" }
245
- // CHECK: attributes #[[ATTR2]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
246
- // CHECK: attributes #[[ATTR3]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fptoint" }
247
- // CHECK: attributes #[[ATTR4]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+sme,+sme-f64f64" }
243
+ // CHECK: attributes #[[ATTR0]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+ls64,+neon" }
244
+ // CHECK: attributes #[[ATTR1]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
245
+ // CHECK: attributes #[[ATTR2]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fptoint" }
246
+ // CHECK: attributes #[[ATTR3]] = { mustprogress noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+sme,+sme-f64f64" }
248
247
// .
249
248
// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
250
249
// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
0 commit comments