brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.4 KiB · f8b5a9b Raw
195 lines · c
1// Test all of the AArch64 fmv-features metadata without any dependency expansion.2// It is used to propagate the attribute string information from C/C++ source to LLVM IR.3 4// RUN: %clang --target=aarch64-linux-gnu --rtlib=compiler-rt -emit-llvm -S -o - %s | FileCheck %s5 6// CHECK: define dso_local i32 @fmv._Maes() #[[aes:[0-9]+]] {7// CHECK: define dso_local i32 @fmv._Mbf16() #[[bf16:[0-9]+]] {8__attribute__((target_clones("aes", "bf16"))) int fmv(void) { return 0; }9 10// CHECK: define dso_local i32 @fmv._Mbti() #[[bti:[0-9]+]] {11__attribute__((target_version("bti"))) int fmv(void) { return 0; }12 13// CHECK: define dso_local i32 @fmv._Mcrc() #[[crc:[0-9]+]] {14__attribute__((target_version("crc"))) int fmv(void) { return 0; }15 16// CHECK: define dso_local i32 @fmv._Mdit() #[[dit:[0-9]+]] {17__attribute__((target_version("dit"))) int fmv(void) { return 0; }18 19// CHECK: define dso_local i32 @fmv._Mdotprod() #[[dotprod:[0-9]+]] {20__attribute__((target_version("dotprod"))) int fmv(void) { return 0; }21 22// CHECK: define dso_local i32 @fmv._Mdpb() #[[dpb:[0-9]+]] {23__attribute__((target_version("dpb"))) int fmv(void) { return 0; }24 25// CHECK: define dso_local i32 @fmv._Mdpb2() #[[dpb2:[0-9]+]] {26__attribute__((target_version("dpb2"))) int fmv(void) { return 0; }27 28// CHECK: define dso_local i32 @fmv._Mf32mm() #[[f32mm:[0-9]+]] {29__attribute__((target_version("f32mm"))) int fmv(void) { return 0; }30 31// CHECK: define dso_local i32 @fmv._Mf64mm() #[[f64mm:[0-9]+]] {32__attribute__((target_version("f64mm"))) int fmv(void) { return 0; }33 34// CHECK: define dso_local i32 @fmv._Mfcma() #[[fcma:[0-9]+]] {35__attribute__((target_version("fcma"))) int fmv(void) { return 0; }36 37// CHECK: define dso_local i32 @fmv._Mflagm() #[[flagm:[0-9]+]] {38__attribute__((target_version("flagm"))) int fmv(void) { return 0; }39 40// CHECK: define dso_local i32 @fmv._Mflagm2() #[[flagm2:[0-9]+]] {41__attribute__((target_version("flagm2"))) int fmv(void) { return 0; }42 43// CHECK: define dso_local i32 @fmv._Mfp() #[[fp:[0-9]+]] {44__attribute__((target_version("fp"))) int fmv(void) { return 0; }45 46// CHECK: define dso_local i32 @fmv._Mfp16() #[[fp16:[0-9]+]] {47__attribute__((target_version("fp16"))) int fmv(void) { return 0; }48 49// CHECK: define dso_local i32 @fmv._Mfp16fml() #[[fp16fml:[0-9]+]] {50__attribute__((target_version("fp16fml"))) int fmv(void) { return 0; }51 52// CHECK: define dso_local i32 @fmv._Mfrintts() #[[frintts:[0-9]+]] {53__attribute__((target_version("frintts"))) int fmv(void) { return 0; }54 55// CHECK: define dso_local i32 @fmv._Mi8mm() #[[i8mm:[0-9]+]] {56__attribute__((target_version("i8mm"))) int fmv(void) { return 0; }57 58// CHECK: define dso_local i32 @fmv._Mjscvt() #[[jscvt:[0-9]+]] {59__attribute__((target_version("jscvt"))) int fmv(void) { return 0; }60 61// CHECK: define dso_local i32 @fmv._Mlse() #[[lse:[0-9]+]] {62__attribute__((target_version("lse"))) int fmv(void) { return 0; }63 64// CHECK: define dso_local i32 @fmv._Mmemtag() #[[memtag:[0-9]+]] {65__attribute__((target_version("memtag"))) int fmv(void) { return 0; }66 67// CHECK: define dso_local i32 @fmv._Mmops() #[[mops:[0-9]+]] {68__attribute__((target_version("mops"))) int fmv(void) { return 0; }69 70// CHECK: define dso_local i32 @fmv._Mrcpc() #[[rcpc:[0-9]+]] {71__attribute__((target_version("rcpc"))) int fmv(void) { return 0; }72 73// CHECK: define dso_local i32 @fmv._Mrcpc2() #[[rcpc2:[0-9]+]] {74__attribute__((target_version("rcpc2"))) int fmv(void) { return 0; }75 76// CHECK: define dso_local i32 @fmv._Mrcpc3() #[[rcpc3:[0-9]+]] {77__attribute__((target_version("rcpc3"))) int fmv(void) { return 0; }78 79// CHECK: define dso_local i32 @fmv._Mrdm() #[[rdm:[0-9]+]] {80__attribute__((target_version("rdm"))) int fmv(void) { return 0; }81 82// CHECK: define dso_local i32 @fmv._Mrng() #[[rng:[0-9]+]] {83__attribute__((target_version("rng"))) int fmv(void) { return 0; }84 85// CHECK: define dso_local i32 @fmv._Msb() #[[sb:[0-9]+]] {86__attribute__((target_version("sb"))) int fmv(void) { return 0; }87 88// CHECK: define dso_local i32 @fmv._Msha2() #[[sha2:[0-9]+]] {89__attribute__((target_version("sha2"))) int fmv(void) { return 0; }90 91// CHECK: define dso_local i32 @fmv._Msha3() #[[sha3:[0-9]+]] {92__attribute__((target_version("sha3"))) int fmv(void) { return 0; }93 94// CHECK: define dso_local i32 @fmv._Msimd() #[[simd:[0-9]+]] {95__attribute__((target_version("simd"))) int fmv(void) { return 0; }96 97// CHECK: define dso_local i32 @fmv._Msm4() #[[sm4:[0-9]+]] {98__attribute__((target_version("sm4"))) int fmv(void) { return 0; }99 100// CHECK: define dso_local i32 @fmv._Msme() #[[sme:[0-9]+]] {101__attribute__((target_version("sme"))) int fmv(void) { return 0; }102 103// CHECK: define dso_local i32 @fmv._Msme-f64f64() #[[sme_f64f64:[0-9]+]] {104__attribute__((target_version("sme-f64f64"))) int fmv(void) { return 0; }105 106// CHECK: define dso_local i32 @fmv._Msme-i16i64() #[[sme_i16i64:[0-9]+]] {107__attribute__((target_version("sme-i16i64"))) int fmv(void) { return 0; }108 109// CHECK: define dso_local i32 @fmv._Msme2() #[[sme2:[0-9]+]] {110__attribute__((target_version("sme2"))) int fmv(void) { return 0; }111 112// CHECK: define dso_local i32 @fmv._Mssbs() #[[ssbs:[0-9]+]] {113__attribute__((target_version("ssbs"))) int fmv(void) { return 0; }114 115// CHECK: define dso_local i32 @fmv._Msve() #[[sve:[0-9]+]] {116__attribute__((target_version("sve"))) int fmv(void) { return 0; }117 118// CHECK: define dso_local i32 @fmv._Msve2() #[[sve2:[0-9]+]] {119__attribute__((target_version("sve2"))) int fmv(void) { return 0; }120 121// CHECK: define dso_local i32 @fmv._Msve2-aes() #[[sve2_aes:[0-9]+]] {122__attribute__((target_version("sve2-aes"))) int fmv(void) { return 0; }123 124// CHECK: define dso_local i32 @fmv._Msve2-bitperm() #[[sve2_bitperm:[0-9]+]] {125__attribute__((target_version("sve2-bitperm"))) int fmv(void) { return 0; }126 127// CHECK: define dso_local i32 @fmv._Msve2-sha3() #[[sve2_sha3:[0-9]+]] {128__attribute__((target_version("sve2-sha3"))) int fmv(void) { return 0; }129 130// CHECK: define dso_local i32 @fmv._Msve2-sm4() #[[sve2_sm4:[0-9]+]] {131__attribute__((target_version("sve2-sm4"))) int fmv(void) { return 0; }132 133// CHECK: define dso_local i32 @fmv._Mwfxt() #[[wfxt:[0-9]+]] {134__attribute__((target_version("wfxt"))) int fmv(void) { return 0; }135 136// CHECK: define dso_local i32 @fmv._MaesMbf16MbtiMcrc() #[[unordered_features_with_duplicates:[0-9]+]] {137__attribute__((target_version("crc+bti+bti+bti+aes+aes+bf16"))) int fmv(void) { return 0; }138 139// CHECK-NOT: define dso_local i32 @fmv._M{{.*}}140__attribute__((target_version("non_existent_extension"))) int fmv(void);141 142// CHECK: define dso_local i32 @fmv.default() #[[default:[0-9]+]] {143__attribute__((target_version("default"))) int fmv(void) { return 0; }144 145int caller() {146  return fmv();147}148 149// CHECK: attributes #[[aes]] = {{.*}} "fmv-features"="aes"150// CHECK: attributes #[[bf16]] = {{.*}} "fmv-features"="bf16"151// CHECK: attributes #[[bti]] = {{.*}} "fmv-features"="bti"152// CHECK: attributes #[[crc]] = {{.*}} "fmv-features"="crc"153// CHECK: attributes #[[dit]] = {{.*}} "fmv-features"="dit"154// CHECK: attributes #[[dotprod]] = {{.*}} "fmv-features"="dotprod"155// CHECK: attributes #[[dpb]] = {{.*}} "fmv-features"="dpb"156// CHECK: attributes #[[dpb2]] = {{.*}} "fmv-features"="dpb2"157// CHECK: attributes #[[f32mm]] = {{.*}} "fmv-features"="f32mm"158// CHECK: attributes #[[f64mm]] = {{.*}} "fmv-features"="f64mm"159// CHECK: attributes #[[fcma]] = {{.*}} "fmv-features"="fcma"160// CHECK: attributes #[[flagm]] = {{.*}} "fmv-features"="flagm"161// CHECK: attributes #[[flagm2]] = {{.*}} "fmv-features"="flagm2"162// CHECK: attributes #[[fp]] = {{.*}} "fmv-features"="fp"163// CHECK: attributes #[[fp16]] = {{.*}} "fmv-features"="fp16"164// CHECK: attributes #[[fp16fml]] = {{.*}} "fmv-features"="fp16fml"165// CHECK: attributes #[[frintts]] = {{.*}} "fmv-features"="frintts"166// CHECK: attributes #[[i8mm]] = {{.*}} "fmv-features"="i8mm"167// CHECK: attributes #[[jscvt]] = {{.*}} "fmv-features"="jscvt"168// CHECK: attributes #[[lse]] = {{.*}} "fmv-features"="lse"169// CHECK: attributes #[[memtag]] = {{.*}} "fmv-features"="memtag"170// CHECK: attributes #[[mops]] = {{.*}} "fmv-features"="mops"171// CHECK: attributes #[[rcpc]] = {{.*}} "fmv-features"="rcpc"172// CHECK: attributes #[[rcpc2]] = {{.*}} "fmv-features"="rcpc2"173// CHECK: attributes #[[rcpc3]] = {{.*}} "fmv-features"="rcpc3"174// CHECK: attributes #[[rdm]] = {{.*}} "fmv-features"="rdm"175// CHECK: attributes #[[rng]] = {{.*}} "fmv-features"="rng"176// CHECK: attributes #[[sb]] = {{.*}} "fmv-features"="sb"177// CHECK: attributes #[[sha2]] = {{.*}} "fmv-features"="sha2"178// CHECK: attributes #[[sha3]] = {{.*}} "fmv-features"="sha3"179// CHECK: attributes #[[simd]] = {{.*}} "fmv-features"="simd"180// CHECK: attributes #[[sm4]] = {{.*}} "fmv-features"="sm4"181// CHECK: attributes #[[sme]] = {{.*}} "fmv-features"="sme"182// CHECK: attributes #[[sme_f64f64]] = {{.*}} "fmv-features"="sme-f64f64"183// CHECK: attributes #[[sme_i16i64]] = {{.*}} "fmv-features"="sme-i16i64"184// CHECK: attributes #[[sme2]] = {{.*}} "fmv-features"="sme2"185// CHECK: attributes #[[ssbs]] = {{.*}} "fmv-features"="ssbs"186// CHECK: attributes #[[sve]] = {{.*}} "fmv-features"="sve"187// CHECK: attributes #[[sve2]] = {{.*}} "fmv-features"="sve2"188// CHECK: attributes #[[sve2_aes]] = {{.*}} "fmv-features"="sve2-aes"189// CHECK: attributes #[[sve2_bitperm]] = {{.*}} "fmv-features"="sve2-bitperm"190// CHECK: attributes #[[sve2_sha3]] = {{.*}} "fmv-features"="sve2-sha3"191// CHECK: attributes #[[sve2_sm4]] = {{.*}} "fmv-features"="sve2-sm4"192// CHECK: attributes #[[wfxt]] = {{.*}} "fmv-features"="wfxt"193// CHECK: attributes #[[unordered_features_with_duplicates]] = {{.*}} "fmv-features"="aes,bf16,bti,crc"194// CHECK: attributes #[[default]] = {{.*}} "fmv-features"195