@@ -36,6 +36,10 @@ inline int __attribute__((target_version("sve2-aes+sve2-sha3"))) fmv_inline(void
36
36
inline int __attribute__((target_version ("sve2+sve2-pmull128+sve2-bitperm" ))) fmv_inline (void ) { return 9 ; }
37
37
inline int __attribute__((target_version ("sve2-sm4+memtag2" ))) fmv_inline (void ) { return 10 ; }
38
38
inline int __attribute__((target_version ("memtag3+rcpc3+mops" ))) fmv_inline (void ) { return 11 ; }
39
+ inline int __attribute__((target_version ("aes+dotprod" ))) fmv_inline (void ) { return 13 ; }
40
+ inline int __attribute__((target_version ("simd+fp16fml" ))) fmv_inline (void ) { return 14 ; }
41
+ inline int __attribute__((target_version ("fp+sm4" ))) fmv_inline (void ) { return 15 ; }
42
+ inline int __attribute__((target_version ("lse+rdm" ))) fmv_inline (void ) { return 16 ; }
39
43
inline int __attribute__((target_version ("default" ))) fmv_inline (void ) { return 3 ; }
40
44
41
45
__attribute__((target_version ("ls64" ))) int fmv_e (void );
@@ -359,6 +363,38 @@ int hoo(void) {
359
363
// CHECK: resolver_return21:
360
364
// CHECK-NEXT: ret ptr @fmv_inline._Mdpb2Mjscvt
361
365
// CHECK: resolver_else22:
366
+ // CHECK-NEXT: [[TMP48:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
367
+ // CHECK-NEXT: [[TMP49:%.*]] = and i64 [[TMP48]], 16400
368
+ // CHECK-NEXT: [[TMP50:%.*]] = icmp eq i64 [[TMP49]], 16400
369
+ // CHECK-NEXT: [[TMP51:%.*]] = and i1 true, [[TMP50]]
370
+ // CHECK-NEXT: br i1 [[TMP51]], label [[RESOLVER_RETURN23:%.*]], label [[RESOLVER_ELSE24:%.*]]
371
+ // CHECK: resolver_return23:
372
+ // CHECK-NEXT: ret ptr @fmv_inline._MdotprodMaes
373
+ // CHECK: resolver_else24:
374
+ // CHECK-NEXT: [[TMP52:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
375
+ // CHECK-NEXT: [[TMP53:%.*]] = and i64 [[TMP52]], 8
376
+ // CHECK-NEXT: [[TMP54:%.*]] = icmp eq i64 [[TMP53]], 8
377
+ // CHECK-NEXT: [[TMP55:%.*]] = and i1 true, [[TMP54]]
378
+ // CHECK-NEXT: br i1 [[TMP55]], label [[RESOLVER_RETURN25:%.*]], label [[RESOLVER_ELSE26:%.*]]
379
+ // CHECK: resolver_return25:
380
+ // CHECK-NEXT: ret ptr @fmv_inline._Mfp16fmlMsimd
381
+ // CHECK: resolver_else26:
382
+ // CHECK-NEXT: [[TMP56:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
383
+ // CHECK-NEXT: [[TMP57:%.*]] = and i64 [[TMP56]], 32
384
+ // CHECK-NEXT: [[TMP58:%.*]] = icmp eq i64 [[TMP57]], 32
385
+ // CHECK-NEXT: [[TMP59:%.*]] = and i1 true, [[TMP58]]
386
+ // CHECK-NEXT: br i1 [[TMP59]], label [[RESOLVER_RETURN27:%.*]], label [[RESOLVER_ELSE28:%.*]]
387
+ // CHECK: resolver_return27:
388
+ // CHECK-NEXT: ret ptr @fmv_inline._Msm4Mfp
389
+ // CHECK: resolver_else28:
390
+ // CHECK-NEXT: [[TMP60:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
391
+ // CHECK-NEXT: [[TMP61:%.*]] = and i64 [[TMP60]], 192
392
+ // CHECK-NEXT: [[TMP62:%.*]] = icmp eq i64 [[TMP61]], 192
393
+ // CHECK-NEXT: [[TMP63:%.*]] = and i1 true, [[TMP62]]
394
+ // CHECK-NEXT: br i1 [[TMP63]], label [[RESOLVER_RETURN29:%.*]], label [[RESOLVER_ELSE30:%.*]]
395
+ // CHECK: resolver_return29:
396
+ // CHECK-NEXT: ret ptr @fmv_inline._MrdmMlse
397
+ // CHECK: resolver_else30:
362
398
// CHECK-NEXT: ret ptr @fmv_inline.default
363
399
//
364
400
//
@@ -616,6 +652,34 @@ int hoo(void) {
616
652
//
617
653
//
618
654
// CHECK: Function Attrs: noinline nounwind optnone
655
+ // CHECK-LABEL: define {{[^@]+}}@fmv_inline._MdotprodMaes
656
+ // CHECK-SAME: () #[[ATTR6]] {
657
+ // CHECK-NEXT: entry:
658
+ // CHECK-NEXT: ret i32 13
659
+ //
660
+ //
661
+ // CHECK: Function Attrs: noinline nounwind optnone
662
+ // CHECK-LABEL: define {{[^@]+}}@fmv_inline._Mfp16fmlMsimd
663
+ // CHECK-SAME: () #[[ATTR7]] {
664
+ // CHECK-NEXT: entry:
665
+ // CHECK-NEXT: ret i32 14
666
+ //
667
+ //
668
+ // CHECK: Function Attrs: noinline nounwind optnone
669
+ // CHECK-LABEL: define {{[^@]+}}@fmv_inline._Msm4Mfp
670
+ // CHECK-SAME: () #[[ATTR24:[0-9]+]] {
671
+ // CHECK-NEXT: entry:
672
+ // CHECK-NEXT: ret i32 15
673
+ //
674
+ //
675
+ // CHECK: Function Attrs: noinline nounwind optnone
676
+ // CHECK-LABEL: define {{[^@]+}}@fmv_inline._MrdmMlse
677
+ // CHECK-SAME: () #[[ATTR25:[0-9]+]] {
678
+ // CHECK-NEXT: entry:
679
+ // CHECK-NEXT: ret i32 16
680
+ //
681
+ //
682
+ // CHECK: Function Attrs: noinline nounwind optnone
619
683
// CHECK-LABEL: define {{[^@]+}}@fmv_inline.default
620
684
// CHECK-SAME: () #[[ATTR2]] {
621
685
// CHECK-NEXT: entry:
@@ -624,7 +688,7 @@ int hoo(void) {
624
688
//
625
689
// CHECK: Function Attrs: noinline nounwind optnone
626
690
// CHECK-LABEL: define {{[^@]+}}@fmv_d._Msb
627
- // CHECK-SAME: () #[[ATTR24 :[0-9]+]] {
691
+ // CHECK-SAME: () #[[ATTR26 :[0-9]+]] {
628
692
// CHECK-NEXT: entry:
629
693
// CHECK-NEXT: ret i32 0
630
694
//
@@ -769,7 +833,9 @@ int hoo(void) {
769
833
// CHECK: attributes #[[ATTR21]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+ls64,+neon,+sve,+sve2,+sve2-aes,+sve2-bitperm" }
770
834
// CHECK: attributes #[[ATTR22]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+ls64,+mte,+neon,+sve,+sve2,+sve2-sm4" }
771
835
// CHECK: attributes #[[ATTR23]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fullfp16,+ls64,+mops,+mte,+rcpc,+rcpc3" }
772
- // CHECK: attributes #[[ATTR24]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fullfp16,+ls64,+sb" }
836
+ // CHECK: attributes #[[ATTR24]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+ls64,+neon,+sm4" }
837
+ // CHECK: attributes #[[ATTR25]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+ls64,+lse,+neon,+rdm" }
838
+ // CHECK: attributes #[[ATTR26]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fullfp16,+ls64,+sb" }
773
839
//.
774
840
// CHECK-NOFMV: attributes #[[ATTR0]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="-fmv" }
775
841
// CHECK-NOFMV: attributes #[[ATTR1:[0-9]+]] = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="-fmv" }
0 commit comments