llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Alexandros Lamprineas (labrinea) <details> <summary>Changes</summary> Removes attr-target-version.c which doesn't have a clear purpose. Introduces AArch64/fmv-detection.c to check detection bitmasks. Adds coverage in AArch64/fmv-resolver-emission.c --- Patch is 87.47 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/132273.diff 3 Files Affected: - (added) clang/test/CodeGen/AArch64/fmv-detection.c (+790) - (modified) clang/test/CodeGen/AArch64/fmv-resolver-emission.c (+64) - (removed) clang/test/CodeGen/attr-target-version.c (-1145) ``````````diff diff --git a/clang/test/CodeGen/AArch64/fmv-detection.c b/clang/test/CodeGen/AArch64/fmv-detection.c new file mode 100644 index 0000000000000..2dff2bfa6c626 --- /dev/null +++ b/clang/test/CodeGen/AArch64/fmv-detection.c @@ -0,0 +1,790 @@ +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --check-attributes --check-globals --include-generated-funcs --global-value-regex ".*" + +// Test all of the AArch64 feature detection bitmasks in the resolver. + +// RUN: %clang --target=aarch64-linux-gnu --rtlib=compiler-rt -emit-llvm -S -o - %s | FileCheck %s + +__attribute__((target_clones("aes", "bf16"))) int fmv(void) { return 0; } + +__attribute__((target_version("bti"))) int fmv(void) { return 0; } + +__attribute__((target_version("crc"))) int fmv(void) { return 0; } + +__attribute__((target_version("dit"))) int fmv(void) { return 0; } + +__attribute__((target_version("dotprod"))) int fmv(void) { return 0; } + +__attribute__((target_version("dpb"))) int fmv(void) { return 0; } + +__attribute__((target_version("dpb2"))) int fmv(void) { return 0; } + +__attribute__((target_version("f32mm"))) int fmv(void) { return 0; } + +__attribute__((target_version("f64mm"))) int fmv(void) { return 0; } + +__attribute__((target_version("fcma"))) int fmv(void) { return 0; } + +__attribute__((target_version("flagm"))) int fmv(void) { return 0; } + +__attribute__((target_version("flagm2"))) int fmv(void) { return 0; } + +__attribute__((target_version("fp"))) int fmv(void) { return 0; } + +__attribute__((target_version("fp16"))) int fmv(void) { return 0; } + +__attribute__((target_version("fp16fml"))) int fmv(void) { return 0; } + +__attribute__((target_version("frintts"))) int fmv(void) { return 0; } + +__attribute__((target_version("i8mm"))) int fmv(void) { return 0; } + +__attribute__((target_version("jscvt"))) int fmv(void) { return 0; } + +__attribute__((target_version("lse"))) int fmv(void) { return 0; } + +__attribute__((target_version("memtag"))) int fmv(void) { return 0; } + +__attribute__((target_version("mops"))) int fmv(void) { return 0; } + +__attribute__((target_version("rcpc"))) int fmv(void) { return 0; } + +__attribute__((target_version("rcpc2"))) int fmv(void) { return 0; } + +__attribute__((target_version("rcpc3"))) int fmv(void) { return 0; } + +__attribute__((target_version("rdm"))) int fmv(void) { return 0; } + +__attribute__((target_version("rng"))) int fmv(void) { return 0; } + +__attribute__((target_version("sb"))) int fmv(void) { return 0; } + +__attribute__((target_version("sha2"))) int fmv(void) { return 0; } + +__attribute__((target_version("sha3"))) int fmv(void) { return 0; } + +__attribute__((target_version("simd"))) int fmv(void) { return 0; } + +__attribute__((target_version("sm4"))) int fmv(void) { return 0; } + +__attribute__((target_version("sme"))) int fmv(void) { return 0; } + +__attribute__((target_version("sme-f64f64"))) int fmv(void) { return 0; } + +__attribute__((target_version("sme-i16i64"))) int fmv(void) { return 0; } + +__attribute__((target_version("sme2"))) int fmv(void) { return 0; } + +__attribute__((target_version("ssbs"))) int fmv(void) { return 0; } + +__attribute__((target_version("sve"))) int fmv(void) { return 0; } + +__attribute__((target_version("sve2"))) int fmv(void) { return 0; } + +__attribute__((target_version("sve2-aes"))) int fmv(void) { return 0; } + +__attribute__((target_version("sve2-bitperm"))) int fmv(void) { return 0; } + +__attribute__((target_version("sve2-sha3"))) int fmv(void) { return 0; } + +__attribute__((target_version("sve2-sm4"))) int fmv(void) { return 0; } + +__attribute__((target_version("wfxt"))) int fmv(void) { return 0; } + +__attribute__((target_version("default"))) int fmv(void); + +int caller() { + return fmv(); +} + +//. +// CHECK: @__aarch64_cpu_features = external dso_local global { i64 } +// CHECK: @fmv = weak_odr dso_local ifunc i32 (), ptr @fmv.resolver +//. +// CHECK: Function Attrs: noinline nounwind optnone uwtable +// CHECK-LABEL: define {{[^@]+}}@fmv._Maes +// CHECK-SAME: () #[[ATTR0:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 0 +// +// +// CHECK: Function Attrs: noinline nounwind optnone uwtable +// CHECK-LABEL: define {{[^@]+}}@fmv._Mbf16 +// CHECK-SAME: () #[[ATTR1:[0-9]+]] { +// CHECK-NEXT: entry: +// CHECK-NEXT: ret i32 0 +// +// +// CHECK-LABEL: define {{[^@]+}}@fmv.resolver() comdat { +// CHECK-NEXT: resolver_entry: +// CHECK-NEXT: call void @__init_cpu_features_resolver() +// CHECK-NEXT: [[TMP0:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP1:%.*]] = and i64 [[TMP0]], 576460752303423488 +// CHECK-NEXT: [[TMP2:%.*]] = icmp eq i64 [[TMP1]], 576460752303423488 +// CHECK-NEXT: [[TMP3:%.*]] = and i1 true, [[TMP2]] +// CHECK-NEXT: br i1 [[TMP3]], label [[RESOLVER_RETURN:%.*]], label [[RESOLVER_ELSE:%.*]] +// CHECK: resolver_return: +// CHECK-NEXT: ret ptr @fmv._Mmops +// CHECK: resolver_else: +// CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 144119586256651008 +// CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 [[TMP5]], 144119586256651008 +// CHECK-NEXT: [[TMP7:%.*]] = and i1 true, [[TMP6]] +// CHECK-NEXT: br i1 [[TMP7]], label [[RESOLVER_RETURN1:%.*]], label [[RESOLVER_ELSE2:%.*]] +// CHECK: resolver_return1: +// CHECK-NEXT: ret ptr @fmv._Msme2 +// CHECK: resolver_else2: +// CHECK-NEXT: [[TMP8:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], 72061992218723072 +// CHECK-NEXT: [[TMP10:%.*]] = icmp eq i64 [[TMP9]], 72061992218723072 +// CHECK-NEXT: [[TMP11:%.*]] = and i1 true, [[TMP10]] +// CHECK-NEXT: br i1 [[TMP11]], label [[RESOLVER_RETURN3:%.*]], label [[RESOLVER_ELSE4:%.*]] +// CHECK: resolver_return3: +// CHECK-NEXT: ret ptr @fmv._Msme-i16i64 +// CHECK: resolver_else4: +// CHECK-NEXT: [[TMP12:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP13:%.*]] = and i64 [[TMP12]], 36033195199759104 +// CHECK-NEXT: [[TMP14:%.*]] = icmp eq i64 [[TMP13]], 36033195199759104 +// CHECK-NEXT: [[TMP15:%.*]] = and i1 true, [[TMP14]] +// CHECK-NEXT: br i1 [[TMP15]], label [[RESOLVER_RETURN5:%.*]], label [[RESOLVER_ELSE6:%.*]] +// CHECK: resolver_return5: +// CHECK-NEXT: ret ptr @fmv._Msme-f64f64 +// CHECK: resolver_else6: +// CHECK-NEXT: [[TMP16:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP17:%.*]] = and i64 [[TMP16]], 18014398509481984 +// CHECK-NEXT: [[TMP18:%.*]] = icmp eq i64 [[TMP17]], 18014398509481984 +// CHECK-NEXT: [[TMP19:%.*]] = and i1 true, [[TMP18]] +// CHECK-NEXT: br i1 [[TMP19]], label [[RESOLVER_RETURN7:%.*]], label [[RESOLVER_ELSE8:%.*]] +// CHECK: resolver_return7: +// CHECK-NEXT: ret ptr @fmv._Mwfxt +// CHECK: resolver_else8: +// CHECK-NEXT: [[TMP20:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP21:%.*]] = and i64 [[TMP20]], 1125899906842624 +// CHECK-NEXT: [[TMP22:%.*]] = icmp eq i64 [[TMP21]], 1125899906842624 +// CHECK-NEXT: [[TMP23:%.*]] = and i1 true, [[TMP22]] +// CHECK-NEXT: br i1 [[TMP23]], label [[RESOLVER_RETURN9:%.*]], label [[RESOLVER_ELSE10:%.*]] +// CHECK: resolver_return9: +// CHECK-NEXT: ret ptr @fmv._Mbti +// CHECK: resolver_else10: +// CHECK-NEXT: [[TMP24:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP25:%.*]] = and i64 [[TMP24]], 562949953421312 +// CHECK-NEXT: [[TMP26:%.*]] = icmp eq i64 [[TMP25]], 562949953421312 +// CHECK-NEXT: [[TMP27:%.*]] = and i1 true, [[TMP26]] +// CHECK-NEXT: br i1 [[TMP27]], label [[RESOLVER_RETURN11:%.*]], label [[RESOLVER_ELSE12:%.*]] +// CHECK: resolver_return11: +// CHECK-NEXT: ret ptr @fmv._Mssbs +// CHECK: resolver_else12: +// CHECK-NEXT: [[TMP28:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP29:%.*]] = and i64 [[TMP28]], 70368744177664 +// CHECK-NEXT: [[TMP30:%.*]] = icmp eq i64 [[TMP29]], 70368744177664 +// CHECK-NEXT: [[TMP31:%.*]] = and i1 true, [[TMP30]] +// CHECK-NEXT: br i1 [[TMP31]], label [[RESOLVER_RETURN13:%.*]], label [[RESOLVER_ELSE14:%.*]] +// CHECK: resolver_return13: +// CHECK-NEXT: ret ptr @fmv._Msb +// CHECK: resolver_else14: +// CHECK-NEXT: [[TMP32:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP33:%.*]] = and i64 [[TMP32]], 17592186044416 +// CHECK-NEXT: [[TMP34:%.*]] = icmp eq i64 [[TMP33]], 17592186044416 +// CHECK-NEXT: [[TMP35:%.*]] = and i1 true, [[TMP34]] +// CHECK-NEXT: br i1 [[TMP35]], label [[RESOLVER_RETURN15:%.*]], label [[RESOLVER_ELSE16:%.*]] +// CHECK: resolver_return15: +// CHECK-NEXT: ret ptr @fmv._Mmemtag +// CHECK: resolver_else16: +// CHECK-NEXT: [[TMP36:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP37:%.*]] = and i64 [[TMP36]], 4398180795136 +// CHECK-NEXT: [[TMP38:%.*]] = icmp eq i64 [[TMP37]], 4398180795136 +// CHECK-NEXT: [[TMP39:%.*]] = and i1 true, [[TMP38]] +// CHECK-NEXT: br i1 [[TMP39]], label [[RESOLVER_RETURN17:%.*]], label [[RESOLVER_ELSE18:%.*]] +// CHECK: resolver_return17: +// CHECK-NEXT: ret ptr @fmv._Msme +// CHECK: resolver_else18: +// CHECK-NEXT: [[TMP40:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP41:%.*]] = and i64 [[TMP40]], 2268816540448 +// CHECK-NEXT: [[TMP42:%.*]] = icmp eq i64 [[TMP41]], 2268816540448 +// CHECK-NEXT: [[TMP43:%.*]] = and i1 true, [[TMP42]] +// CHECK-NEXT: br i1 [[TMP43]], label [[RESOLVER_RETURN19:%.*]], label [[RESOLVER_ELSE20:%.*]] +// CHECK: resolver_return19: +// CHECK-NEXT: ret ptr @fmv._Msve2-sm4 +// CHECK: resolver_else20: +// CHECK-NEXT: [[TMP44:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP45:%.*]] = and i64 [[TMP44]], 1169304924928 +// CHECK-NEXT: [[TMP46:%.*]] = icmp eq i64 [[TMP45]], 1169304924928 +// CHECK-NEXT: [[TMP47:%.*]] = and i1 true, [[TMP46]] +// CHECK-NEXT: br i1 [[TMP47]], label [[RESOLVER_RETURN21:%.*]], label [[RESOLVER_ELSE22:%.*]] +// CHECK: resolver_return21: +// CHECK-NEXT: ret ptr @fmv._Msve2-sha3 +// CHECK: resolver_else22: +// CHECK-NEXT: [[TMP48:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP49:%.*]] = and i64 [[TMP48]], 619549098240 +// CHECK-NEXT: [[TMP50:%.*]] = icmp eq i64 [[TMP49]], 619549098240 +// CHECK-NEXT: [[TMP51:%.*]] = and i1 true, [[TMP50]] +// CHECK-NEXT: br i1 [[TMP51]], label [[RESOLVER_RETURN23:%.*]], label [[RESOLVER_ELSE24:%.*]] +// CHECK: resolver_return23: +// CHECK-NEXT: ret ptr @fmv._Msve2-bitperm +// CHECK: resolver_else24: +// CHECK-NEXT: [[TMP52:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP53:%.*]] = and i64 [[TMP52]], 344671224576 +// CHECK-NEXT: [[TMP54:%.*]] = icmp eq i64 [[TMP53]], 344671224576 +// CHECK-NEXT: [[TMP55:%.*]] = and i1 true, [[TMP54]] +// CHECK-NEXT: br i1 [[TMP55]], label [[RESOLVER_RETURN25:%.*]], label [[RESOLVER_ELSE26:%.*]] +// CHECK: resolver_return25: +// CHECK-NEXT: ret ptr @fmv._Msve2-aes +// CHECK: resolver_else26: +// CHECK-NEXT: [[TMP56:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP57:%.*]] = and i64 [[TMP56]], 69793284352 +// CHECK-NEXT: [[TMP58:%.*]] = icmp eq i64 [[TMP57]], 69793284352 +// CHECK-NEXT: [[TMP59:%.*]] = and i1 true, [[TMP58]] +// CHECK-NEXT: br i1 [[TMP59]], label [[RESOLVER_RETURN27:%.*]], label [[RESOLVER_ELSE28:%.*]] +// CHECK: resolver_return27: +// CHECK-NEXT: ret ptr @fmv._Msve2 +// CHECK: resolver_else28: +// CHECK-NEXT: [[TMP60:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP61:%.*]] = and i64 [[TMP60]], 35433545984 +// CHECK-NEXT: [[TMP62:%.*]] = icmp eq i64 [[TMP61]], 35433545984 +// CHECK-NEXT: [[TMP63:%.*]] = and i1 true, [[TMP62]] +// CHECK-NEXT: br i1 [[TMP63]], label [[RESOLVER_RETURN29:%.*]], label [[RESOLVER_ELSE30:%.*]] +// CHECK: resolver_return29: +// CHECK-NEXT: ret ptr @fmv._Mf64mm +// CHECK: resolver_else30: +// CHECK-NEXT: [[TMP64:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP65:%.*]] = and i64 [[TMP64]], 18253676800 +// CHECK-NEXT: [[TMP66:%.*]] = icmp eq i64 [[TMP65]], 18253676800 +// CHECK-NEXT: [[TMP67:%.*]] = and i1 true, [[TMP66]] +// CHECK-NEXT: br i1 [[TMP67]], label [[RESOLVER_RETURN31:%.*]], label [[RESOLVER_ELSE32:%.*]] +// CHECK: resolver_return31: +// CHECK-NEXT: ret ptr @fmv._Mf32mm +// CHECK: resolver_else32: +// CHECK-NEXT: [[TMP68:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP69:%.*]] = and i64 [[TMP68]], 1073807616 +// CHECK-NEXT: [[TMP70:%.*]] = icmp eq i64 [[TMP69]], 1073807616 +// CHECK-NEXT: [[TMP71:%.*]] = and i1 true, [[TMP70]] +// CHECK-NEXT: br i1 [[TMP71]], label [[RESOLVER_RETURN33:%.*]], label [[RESOLVER_ELSE34:%.*]] +// CHECK: resolver_return33: +// CHECK-NEXT: ret ptr @fmv._Msve +// CHECK: resolver_else34: +// CHECK-NEXT: [[TMP72:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP73:%.*]] = and i64 [[TMP72]], 134218496 +// CHECK-NEXT: [[TMP74:%.*]] = icmp eq i64 [[TMP73]], 134218496 +// CHECK-NEXT: [[TMP75:%.*]] = and i1 true, [[TMP74]] +// CHECK-NEXT: br i1 [[TMP75]], label [[RESOLVER_RETURN35:%.*]], label [[RESOLVER_ELSE36:%.*]] +// CHECK: resolver_return35: +// CHECK-NEXT: ret ptr @fmv._Mbf16 +// CHECK: resolver_else36: +// CHECK-NEXT: [[TMP76:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP77:%.*]] = and i64 [[TMP76]], 67109632 +// CHECK-NEXT: [[TMP78:%.*]] = icmp eq i64 [[TMP77]], 67109632 +// CHECK-NEXT: [[TMP79:%.*]] = and i1 true, [[TMP78]] +// CHECK-NEXT: br i1 [[TMP79]], label [[RESOLVER_RETURN37:%.*]], label [[RESOLVER_ELSE38:%.*]] +// CHECK: resolver_return37: +// CHECK-NEXT: ret ptr @fmv._Mi8mm +// CHECK: resolver_else38: +// CHECK-NEXT: [[TMP80:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP81:%.*]] = and i64 [[TMP80]], 16777472 +// CHECK-NEXT: [[TMP82:%.*]] = icmp eq i64 [[TMP81]], 16777472 +// CHECK-NEXT: [[TMP83:%.*]] = and i1 true, [[TMP82]] +// CHECK-NEXT: br i1 [[TMP83]], label [[RESOLVER_RETURN39:%.*]], label [[RESOLVER_ELSE40:%.*]] +// CHECK: resolver_return39: +// CHECK-NEXT: ret ptr @fmv._Mfrintts +// CHECK: resolver_else40: +// CHECK-NEXT: [[TMP84:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP85:%.*]] = and i64 [[TMP84]], 288230376164294656 +// CHECK-NEXT: [[TMP86:%.*]] = icmp eq i64 [[TMP85]], 288230376164294656 +// CHECK-NEXT: [[TMP87:%.*]] = and i1 true, [[TMP86]] +// CHECK-NEXT: br i1 [[TMP87]], label [[RESOLVER_RETURN41:%.*]], label [[RESOLVER_ELSE42:%.*]] +// CHECK: resolver_return41: +// CHECK-NEXT: ret ptr @fmv._Mrcpc3 +// CHECK: resolver_else42: +// CHECK-NEXT: [[TMP88:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP89:%.*]] = and i64 [[TMP88]], 12582912 +// CHECK-NEXT: [[TMP90:%.*]] = icmp eq i64 [[TMP89]], 12582912 +// CHECK-NEXT: [[TMP91:%.*]] = and i1 true, [[TMP90]] +// CHECK-NEXT: br i1 [[TMP91]], label [[RESOLVER_RETURN43:%.*]], label [[RESOLVER_ELSE44:%.*]] +// CHECK: resolver_return43: +// CHECK-NEXT: ret ptr @fmv._Mrcpc2 +// CHECK: resolver_else44: +// CHECK-NEXT: [[TMP92:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP93:%.*]] = and i64 [[TMP92]], 4194304 +// CHECK-NEXT: [[TMP94:%.*]] = icmp eq i64 [[TMP93]], 4194304 +// CHECK-NEXT: [[TMP95:%.*]] = and i1 true, [[TMP94]] +// CHECK-NEXT: br i1 [[TMP95]], label [[RESOLVER_RETURN45:%.*]], label [[RESOLVER_ELSE46:%.*]] +// CHECK: resolver_return45: +// CHECK-NEXT: ret ptr @fmv._Mrcpc +// CHECK: resolver_else46: +// CHECK-NEXT: [[TMP96:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP97:%.*]] = and i64 [[TMP96]], 2097920 +// CHECK-NEXT: [[TMP98:%.*]] = icmp eq i64 [[TMP97]], 2097920 +// CHECK-NEXT: [[TMP99:%.*]] = and i1 true, [[TMP98]] +// CHECK-NEXT: br i1 [[TMP99]], label [[RESOLVER_RETURN47:%.*]], label [[RESOLVER_ELSE48:%.*]] +// CHECK: resolver_return47: +// CHECK-NEXT: ret ptr @fmv._Mfcma +// CHECK: resolver_else48: +// CHECK-NEXT: [[TMP100:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP101:%.*]] = and i64 [[TMP100]], 1048832 +// CHECK-NEXT: [[TMP102:%.*]] = icmp eq i64 [[TMP101]], 1048832 +// CHECK-NEXT: [[TMP103:%.*]] = and i1 true, [[TMP102]] +// CHECK-NEXT: br i1 [[TMP103]], label [[RESOLVER_RETURN49:%.*]], label [[RESOLVER_ELSE50:%.*]] +// CHECK: resolver_return49: +// CHECK-NEXT: ret ptr @fmv._Mjscvt +// CHECK: resolver_else50: +// CHECK-NEXT: [[TMP104:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP105:%.*]] = and i64 [[TMP104]], 786432 +// CHECK-NEXT: [[TMP106:%.*]] = icmp eq i64 [[TMP105]], 786432 +// CHECK-NEXT: [[TMP107:%.*]] = and i1 true, [[TMP106]] +// CHECK-NEXT: br i1 [[TMP107]], label [[RESOLVER_RETURN51:%.*]], label [[RESOLVER_ELSE52:%.*]] +// CHECK: resolver_return51: +// CHECK-NEXT: ret ptr @fmv._Mdpb2 +// CHECK: resolver_else52: +// CHECK-NEXT: [[TMP108:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP109:%.*]] = and i64 [[TMP108]], 262144 +// CHECK-NEXT: [[TMP110:%.*]] = icmp eq i64 [[TMP109]], 262144 +// CHECK-NEXT: [[TMP111:%.*]] = and i1 true, [[TMP110]] +// CHECK-NEXT: br i1 [[TMP111]], label [[RESOLVER_RETURN53:%.*]], label [[RESOLVER_ELSE54:%.*]] +// CHECK: resolver_return53: +// CHECK-NEXT: ret ptr @fmv._Mdpb +// CHECK: resolver_else54: +// CHECK-NEXT: [[TMP112:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP113:%.*]] = and i64 [[TMP112]], 131072 +// CHECK-NEXT: [[TMP114:%.*]] = icmp eq i64 [[TMP113]], 131072 +// CHECK-NEXT: [[TMP115:%.*]] = and i1 true, [[TMP114]] +// CHECK-NEXT: br i1 [[TMP115]], label [[RESOLVER_RETURN55:%.*]], label [[RESOLVER_ELSE56:%.*]] +// CHECK: resolver_return55: +// CHECK-NEXT: ret ptr @fmv._Mdit +// CHECK: resolver_else56: +// CHECK-NEXT: [[TMP116:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP117:%.*]] = and i64 [[TMP116]], 66312 +// CHECK-NEXT: [[TMP118:%.*]] = icmp eq i64 [[TMP117]], 66312 +// CHECK-NEXT: [[TMP119:%.*]] = and i1 true, [[TMP118]] +// CHECK-NEXT: br i1 [[TMP119]], label [[RESOLVER_RETURN57:%.*]], label [[RESOLVER_ELSE58:%.*]] +// CHECK: resolver_return57: +// CHECK-NEXT: ret ptr @fmv._Mfp16fml +// CHECK: resolver_else58: +// CHECK-NEXT: [[TMP120:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP121:%.*]] = and i64 [[TMP120]], 65792 +// CHECK-NEXT: [[TMP122:%.*]] = icmp eq i64 [[TMP121]], 65792 +// CHECK-NEXT: [[TMP123:%.*]] = and i1 true, [[TMP122]] +// CHECK-NEXT: br i1 [[TMP123]], label [[RESOLVER_RETURN59:%.*]], label [[RESOLVER_ELSE60:%.*]] +// CHECK: resolver_return59: +// CHECK-NEXT: ret ptr @fmv._Mfp16 +// CHECK: resolver_else60: +// CHECK-NEXT: [[TMP124:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP125:%.*]] = and i64 [[TMP124]], 33536 +// CHECK-NEXT: [[TMP126:%.*]] = icmp eq i64 [[TMP125]], 33536 +// CHECK-NEXT: [[TMP127:%.*]] = and i1 true, [[TMP126]] +// CHECK-NEXT: br i1 [[TMP127]], label [[RESOLVER_RETURN61:%.*]], label [[RESOLVER_ELSE62:%.*]] +// CHECK: resolver_return61: +// CHECK-NEXT: ret ptr @fmv._Maes +// CHECK: resolver_else62: +// CHECK-NEXT: [[TMP128:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8 +// CHECK-NEXT: [[TMP129:%.*]] = and i64 [[TMP128]], 13056 +// CHECK-NEXT: [[TMP130:%.*]] = icmp eq i64 [[TMP129]], 13056 +// CHECK-NEXT: [[TMP131:%.*]] = and i1 true, [[TMP130]] +// CHECK-NEXT: br i1 [[TMP131]], label [[RESOLVER_RETURN63:%.*]], label [[RESOLVER_ELSE64:%.*]] +// CHECK: resolver_return63: +// C... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/132273 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits