11// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals all --include-generated-funcs --version 5
22// RUN: %clang_cc1 -std=c++11 -triple aarch64-linux-gnu -emit-llvm %s -o - | FileCheck %s
33
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 ; }
66
77int bar () {
88 return foo_ovl (1 ) + foo_ovl ();
@@ -45,7 +45,7 @@ void run_foo_tml() {
4545// CHECK: @_ZN7MyClassIssE7foo_tmlEv = weak_odr ifunc i32 (ptr), ptr @_ZN7MyClassIssE7foo_tmlEv.resolver
4646// CHECK: @_ZN7MyClassIisE7foo_tmlEv = weak_odr ifunc i32 (ptr), ptr @_ZN7MyClassIisE7foo_tmlEv.resolver
4747// .
48- // CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovli._Mfp16Mls64_v (
48+ // CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovli._Mfp16Mls64 (
4949// CHECK-SAME: i32 noundef [[TMP0:%.*]]) #[[ATTR0:[0-9]+]] {
5050// CHECK-NEXT: [[ENTRY:.*:]]
5151// CHECK-NEXT: [[DOTADDR:%.*]] = alloca i32, align 4
@@ -57,18 +57,18 @@ void run_foo_tml() {
5757// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
5858// CHECK-NEXT: call void @__init_cpu_features_resolver()
5959// 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
6262// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
6363// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
6464// CHECK: [[RESOLVER_RETURN]]:
65- // CHECK-NEXT: ret ptr @_Z7foo_ovli._Mfp16Mls64_v
65+ // CHECK-NEXT: ret ptr @_Z7foo_ovli._Mfp16Mls64
6666// CHECK: [[RESOLVER_ELSE]]:
6767// CHECK-NEXT: ret ptr @_Z7foo_ovli.default
6868//
6969//
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 ]] {
7272// CHECK-NEXT: [[ENTRY:.*:]]
7373// CHECK-NEXT: ret i32 2
7474//
@@ -77,18 +77,18 @@ void run_foo_tml() {
7777// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
7878// CHECK-NEXT: call void @__init_cpu_features_resolver()
7979// 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
8282// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
8383// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
8484// CHECK: [[RESOLVER_RETURN]]:
85- // CHECK-NEXT: ret ptr @_Z7foo_ovlv._Mls64Mls64_accdata
85+ // CHECK-NEXT: ret ptr @_Z7foo_ovlv._Mfp16Mls64
8686// CHECK: [[RESOLVER_ELSE]]:
8787// CHECK-NEXT: ret ptr @_Z7foo_ovlv.default
8888//
8989//
9090// CHECK-LABEL: define dso_local noundef i32 @_Z3barv(
91- // CHECK-SAME: ) #[[ATTR2 :[0-9]+]] {
91+ // CHECK-SAME: ) #[[ATTR1 :[0-9]+]] {
9292// CHECK-NEXT: [[ENTRY:.*:]]
9393// CHECK-NEXT: [[CALL:%.*]] = call noundef i32 @_Z7foo_ovli(i32 noundef 1)
9494// CHECK-NEXT: [[CALL1:%.*]] = call noundef i32 @_Z7foo_ovlv()
@@ -97,7 +97,7 @@ void run_foo_tml() {
9797//
9898//
9999// CHECK-LABEL: define dso_local void @_Z11run_foo_tmlv(
100- // CHECK-SAME: ) #[[ATTR2 ]] {
100+ // CHECK-SAME: ) #[[ATTR1 ]] {
101101// CHECK-NEXT: [[ENTRY:.*:]]
102102// CHECK-NEXT: [[MC1:%.*]] = alloca [[STRUCT_MYCLASS:%.*]], align 1
103103// CHECK-NEXT: [[MC2:%.*]] = alloca [[STRUCT_MYCLASS_0:%.*]], align 1
@@ -111,7 +111,7 @@ void run_foo_tml() {
111111//
112112//
113113// 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 {
115115// CHECK-NEXT: [[ENTRY:.*:]]
116116// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
117117// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -120,7 +120,7 @@ void run_foo_tml() {
120120//
121121//
122122// 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 {
124124// CHECK-NEXT: [[ENTRY:.*:]]
125125// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
126126// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -129,21 +129,21 @@ void run_foo_tml() {
129129//
130130//
131131// CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovli.default(
132- // CHECK-SAME: i32 noundef [[TMP0:%.*]]) #[[ATTR2 ]] {
132+ // CHECK-SAME: i32 noundef [[TMP0:%.*]]) #[[ATTR1 ]] {
133133// CHECK-NEXT: [[ENTRY:.*:]]
134134// CHECK-NEXT: [[DOTADDR:%.*]] = alloca i32, align 4
135135// CHECK-NEXT: store i32 [[TMP0]], ptr [[DOTADDR]], align 4
136136// CHECK-NEXT: ret i32 1
137137//
138138//
139139// CHECK-LABEL: define dso_local noundef i32 @_Z7foo_ovlv.default(
140- // CHECK-SAME: ) #[[ATTR2 ]] {
140+ // CHECK-SAME: ) #[[ATTR1 ]] {
141141// CHECK-NEXT: [[ENTRY:.*:]]
142142// CHECK-NEXT: ret i32 2
143143//
144144//
145145// 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 {
147147// CHECK-NEXT: [[ENTRY:.*:]]
148148// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
149149// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -152,7 +152,7 @@ void run_foo_tml() {
152152//
153153//
154154// 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 {
156156// CHECK-NEXT: [[ENTRY:.*:]]
157157// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
158158// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -161,7 +161,7 @@ void run_foo_tml() {
161161//
162162//
163163// 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 {
165165// CHECK-NEXT: [[ENTRY:.*:]]
166166// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
167167// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -173,8 +173,8 @@ void run_foo_tml() {
173173// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
174174// CHECK-NEXT: call void @__init_cpu_features_resolver()
175175// 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
178178// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
179179// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
180180// CHECK: [[RESOLVER_RETURN]]:
@@ -192,7 +192,7 @@ void run_foo_tml() {
192192//
193193//
194194// 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 {
196196// CHECK-NEXT: [[ENTRY:.*:]]
197197// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
198198// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -201,7 +201,7 @@ void run_foo_tml() {
201201//
202202//
203203// 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 {
205205// CHECK-NEXT: [[ENTRY:.*:]]
206206// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
207207// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -210,7 +210,7 @@ void run_foo_tml() {
210210//
211211//
212212// 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 {
214214// CHECK-NEXT: [[ENTRY:.*:]]
215215// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
216216// CHECK-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
@@ -222,8 +222,8 @@ void run_foo_tml() {
222222// CHECK-NEXT: [[RESOLVER_ENTRY:.*:]]
223223// CHECK-NEXT: call void @__init_cpu_features_resolver()
224224// 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
227227// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]]
228228// CHECK-NEXT: br i1 [[TMP3]], label %[[RESOLVER_RETURN:.*]], label %[[RESOLVER_ELSE:.*]]
229229// CHECK: [[RESOLVER_RETURN]]:
@@ -240,11 +240,10 @@ void run_foo_tml() {
240240// CHECK-NEXT: ret ptr @_ZN7MyClassIisE7foo_tmlEv.default
241241//
242242// .
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" }
248247// .
249248// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
250249// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
0 commit comments