244 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --check-globals2// RUN: %clang_cc1 -triple aarch64 -emit-llvm %s -o - | FileCheck %s3 4__attribute__((target("arch=armv8.2-a")))5// CHECK-LABEL: define {{[^@]+}}@v826// CHECK-SAME: () #[[ATTR0:[0-9]+]] {7// CHECK-NEXT: entry:8// CHECK-NEXT: ret void9//10void v82() {}11__attribute__((target("arch=armv8.2-a+sve")))12// CHECK-LABEL: define {{[^@]+}}@v82sve13// CHECK-SAME: () #[[ATTR1:[0-9]+]] {14// CHECK-NEXT: entry:15// CHECK-NEXT: ret void16//17void v82sve() {}18__attribute__((target("arch=armv8.2-a+sve2")))19// CHECK-LABEL: define {{[^@]+}}@v82sve220// CHECK-SAME: () #[[ATTR2:[0-9]+]] {21// CHECK-NEXT: entry:22// CHECK-NEXT: ret void23//24void v82sve2() {}25__attribute__((target("arch=armv8.2-a+sve+sve2")))26// CHECK-LABEL: define {{[^@]+}}@v82svesve227// CHECK-SAME: () #[[ATTR2]] {28// CHECK-NEXT: entry:29// CHECK-NEXT: ret void30//31void v82svesve2() {}32__attribute__((target("arch=armv8.6-a+sve2")))33// CHECK-LABEL: define {{[^@]+}}@v86sve234// CHECK-SAME: () #[[ATTR3:[0-9]+]] {35// CHECK-NEXT: entry:36// CHECK-NEXT: ret void37//38void v86sve2() {}39 40__attribute__((target("cpu=cortex-a710")))41// CHECK-LABEL: define {{[^@]+}}@a71042// CHECK-SAME: () #[[ATTR4:[0-9]+]] {43// CHECK-NEXT: entry:44// CHECK-NEXT: ret void45//46void a710() {}47__attribute__((target("tune=cortex-a710")))48// CHECK-LABEL: define {{[^@]+}}@tunea71049// CHECK-SAME: () #[[ATTR5:[0-9]+]] {50// CHECK-NEXT: entry:51// CHECK-NEXT: ret void52//53void tunea710() {}54__attribute__((target("cpu=generic")))55// CHECK-LABEL: define {{[^@]+}}@generic56// CHECK-SAME: () #[[ATTR6:[0-9]+]] {57// CHECK-NEXT: entry:58// CHECK-NEXT: ret void59//60void generic() {}61__attribute__((target("tune=generic")))62// CHECK-LABEL: define {{[^@]+}}@tune63// CHECK-SAME: () #[[ATTR7:[0-9]+]] {64// CHECK-NEXT: entry:65// CHECK-NEXT: ret void66//67void tune() {}68 69__attribute__((target("cpu=neoverse-n1,tune=cortex-a710")))70// CHECK-LABEL: define {{[^@]+}}@n1tunea71071// CHECK-SAME: () #[[ATTR8:[0-9]+]] {72// CHECK-NEXT: entry:73// CHECK-NEXT: ret void74//75void n1tunea710() {}76__attribute__((target("sve,tune=cortex-a710")))77// CHECK-LABEL: define {{[^@]+}}@svetunea71078// CHECK-SAME: () #[[ATTR9:[0-9]+]] {79// CHECK-NEXT: entry:80// CHECK-NEXT: ret void81//82void svetunea710() {}83__attribute__((target("+sve,tune=cortex-a710")))84// CHECK-LABEL: define {{[^@]+}}@plussvetunea71085// CHECK-SAME: () #[[ATTR9]] {86// CHECK-NEXT: entry:87// CHECK-NEXT: ret void88//89void plussvetunea710() {}90__attribute__((target("cpu=neoverse-v1,+sve2")))91// CHECK-LABEL: define {{[^@]+}}@v1plussve292// CHECK-SAME: () #[[ATTR10:[0-9]+]] {93// CHECK-NEXT: entry:94// CHECK-NEXT: ret void95//96void v1plussve2() {}97__attribute__((target("cpu=neoverse-v1+sve2")))98// CHECK-LABEL: define {{[^@]+}}@v1sve299// CHECK-SAME: () #[[ATTR10]] {100// CHECK-NEXT: entry:101// CHECK-NEXT: ret void102//103void v1sve2() {}104__attribute__((target("cpu=neoverse-v1,+nosve")))105// CHECK-LABEL: define {{[^@]+}}@v1minussve106// CHECK-SAME: () #[[ATTR11:[0-9]+]] {107// CHECK-NEXT: entry:108// CHECK-NEXT: ret void109//110void v1minussve() {}111__attribute__((target("cpu=neoverse-v1,no-sve")))112// CHECK-LABEL: define {{[^@]+}}@v1nosve113// CHECK-SAME: () #[[ATTR11]] {114// CHECK-NEXT: entry:115// CHECK-NEXT: ret void116//117void v1nosve() {}118__attribute__((target("cpu=neoverse-v1+nosve")))119// CHECK-LABEL: define {{[^@]+}}@v1msve120// CHECK-SAME: () #[[ATTR11]] {121// CHECK-NEXT: entry:122// CHECK-NEXT: ret void123//124void v1msve() {}125 126__attribute__((target("+sve")))127// CHECK-LABEL: define {{[^@]+}}@plussve128// CHECK-SAME: () #[[ATTR12:[0-9]+]] {129// CHECK-NEXT: entry:130// CHECK-NEXT: ret void131//132void plussve() {}133__attribute__((target("+sve+nosve2")))134// CHECK-LABEL: define {{[^@]+}}@plussveplussve2135// CHECK-SAME: () #[[ATTR12]] {136// CHECK-NEXT: entry:137// CHECK-NEXT: ret void138//139void plussveplussve2() {}140__attribute__((target("sve,no-sve2")))141// CHECK-LABEL: define {{[^@]+}}@plussveminusnosve2142// CHECK-SAME: () #[[ATTR12]] {143// CHECK-NEXT: entry:144// CHECK-NEXT: ret void145//146void plussveminusnosve2() {}147__attribute__((target("+fp16")))148// CHECK-LABEL: define {{[^@]+}}@plusfp16149// CHECK-SAME: () #[[ATTR13:[0-9]+]] {150// CHECK-NEXT: entry:151// CHECK-NEXT: ret void152//153void plusfp16() {}154 155__attribute__((target("cpu=neoverse-n1,tune=cortex-a710,arch=armv8.6-a+sve2")))156// CHECK-LABEL: define {{[^@]+}}@all157// CHECK-SAME: () #[[ATTR14:[0-9]+]] {158// CHECK-NEXT: entry:159// CHECK-NEXT: ret void160//161void all() {}162__attribute__((target("cpu=neoverse-n1,tune=cortex-a710,arch=armv8.6-a+sve2,branch-protection=standard")))163// CHECK-LABEL: define {{[^@]+}}@allplusbranchprotection164// CHECK-SAME: () #[[ATTR15:[0-9]+]] {165// CHECK-NEXT: entry:166// CHECK-NEXT: ret void167//168void allplusbranchprotection() {}169 170__attribute__((target("+nosimd")))171// CHECK-LABEL: define {{[^@]+}}@plusnosimd172// CHECK-SAME: () #[[ATTR16:[0-9]+]] {173// CHECK-NEXT: entry:174// CHECK-NEXT: ret void175//176void plusnosimd() {}177__attribute__((target("no-simd")))178// CHECK-LABEL: define {{[^@]+}}@nosimd179// CHECK-SAME: () #[[ATTR16]] {180// CHECK-NEXT: entry:181// CHECK-NEXT: ret void182//183void nosimd() {}184 185// This isn't part of the standard interface, but test that -arch features should not apply anything else.186__attribute__((target("no-v9.3a")))187// CHECK-LABEL: define {{[^@]+}}@minusarch188// CHECK-SAME: () #[[ATTR17:[0-9]+]] {189// CHECK-NEXT: entry:190// CHECK-NEXT: ret void191//192void minusarch() {}193 194__attribute__((target("cpu=apple-m4")))195// CHECK-LABEL: define {{[^@]+}}@applem4196// CHECK-SAME: () #[[ATTR18:[0-9]+]] {197// CHECK-NEXT: entry:198// CHECK-NEXT: ret void199//200void applem4() {}201 202__attribute__((target("+sme")))203// CHECK-LABEL: define {{[^@]+}}@plussmestreaming204// CHECK-SAME: () #[[ATTR19:[0-9]+]] {205// CHECK-NEXT: entry:206// CHECK-NEXT: ret void207//208void plussmestreaming(void) __arm_streaming {}209 210__attribute__((target("+sme")))211// CHECK-LABEL: define {{[^@]+}}@plussmelocallystreaming212// CHECK-SAME: () #[[ATTR20:[0-9]+]] {213// CHECK-NEXT: entry:214// CHECK-NEXT: ret void215//216__arm_locally_streaming void plussmelocallystreaming(void) {}217 218//.219// CHECK: attributes #[[ATTR0]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+crc,+fp-armv8,+lse,+neon,+ras,+rdm,+v8.1a,+v8.2a,+v8a" }220// CHECK: attributes #[[ATTR1]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+v8.1a,+v8.2a,+v8a" }221// CHECK: attributes #[[ATTR2]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+crc,+fp-armv8,+fullfp16,+lse,+neon,+ras,+rdm,+sve,+sve2,+v8.1a,+v8.2a,+v8a" }222// CHECK: attributes #[[ATTR3]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+bti,+ccidx,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+predres,+ras,+rcpc,+rdm,+sb,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" }223// CHECK: attributes #[[ATTR4]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-a710" "target-features"="+bf16,+bti,+ccidx,+complxnum,+crc,+dit,+dotprod,+ete,+flagm,+fp-armv8,+fp16fml,+fpac,+fullfp16,+i8mm,+jsconv,+lse,+mte,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+ssbs,+sve,+sve-bitperm,+sve2,+trbe,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8a,+v9a" }224// CHECK: attributes #[[ATTR5]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "tune-cpu"="cortex-a710" }225// CHECK: attributes #[[ATTR6]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+ete,+fp-armv8,+neon,+trbe,+v8a" }226// CHECK: attributes #[[ATTR7]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "tune-cpu"="generic" }227// CHECK: attributes #[[ATTR8]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="neoverse-n1" "target-features"="+aes,+crc,+dotprod,+fp-armv8,+fullfp16,+lse,+neon,+perfmon,+ras,+rcpc,+rdm,+sha2,+spe,+ssbs,+v8.1a,+v8.2a,+v8a" "tune-cpu"="cortex-a710" }228// CHECK: attributes #[[ATTR9]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+sve" "tune-cpu"="cortex-a710" }229// CHECK: attributes #[[ATTR10]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+perfmon,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }230// CHECK: attributes #[[ATTR11]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="neoverse-v1" "target-features"="+aes,+bf16,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+perfmon,+rand,+ras,+rcpc,+rdm,+sha2,+sha3,+sm4,+spe,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a,-sve" }231// CHECK: attributes #[[ATTR12]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16,+sve" }232// CHECK: attributes #[[ATTR13]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+fp-armv8,+fullfp16" }233// CHECK: attributes #[[ATTR14]] = { noinline nounwind optnone vscale_range(1,16) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+bti,+ccidx,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }234// CHECK: attributes #[[ATTR15]] = { noinline nounwind optnone vscale_range(1,16) "branch-target-enforcement" "guarded-control-stack" "no-trapping-math"="true" "sign-return-address"="non-leaf" "sign-return-address-key"="a_key" "stack-protector-buffer-size"="8" "target-cpu"="neoverse-n1" "target-features"="+aes,+bf16,+bti,+ccidx,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+spe,+ssbs,+sve,+sve2,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8a" "tune-cpu"="cortex-a710" }235// CHECK: attributes #[[ATTR16]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" }236// CHECK: attributes #[[ATTR17]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="-v9.3a" }237// CHECK: attributes #[[ATTR18]] = { noinline nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m4" "target-features"="+aes,+bf16,+bti,+ccidx,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fpac,+fullfp16,+i8mm,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+sha3,+sme,+sme-f64f64,+sme-i16i64,+sme2,+spe-eef,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8.6a,+v8.7a,+v8a,+wfxt" }238// CHECK: attributes #[[ATTR19]] = { noinline nounwind optnone vscale_range(1,16) "aarch64_pstate_sm_enabled" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+fp-armv8,+fullfp16,+neon,+sme" }239// CHECK: attributes #[[ATTR20]] = { noinline nounwind optnone vscale_range(1,16) "aarch64_pstate_sm_body" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-features"="+bf16,+fp-armv8,+fullfp16,+neon,+sme" }240//.241// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}242// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}243//.244