1 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
2 // RUN:   | FileCheck %s
3 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
4 // RUN:   -target-feature +sve,+bf16 | FileCheck %s
5 
6 template<typename T> struct S {};
7 
8 // CHECK: _Z2f11SIu10__SVInt8_tE
f1(S<__SVInt8_t>)9 void f1(S<__SVInt8_t>) {}
10 // CHECK: _Z2f21SIu11__SVInt16_tE
f2(S<__SVInt16_t>)11 void f2(S<__SVInt16_t>) {}
12 // CHECK: _Z2f31SIu11__SVInt32_tE
f3(S<__SVInt32_t>)13 void f3(S<__SVInt32_t>) {}
14 // CHECK: _Z2f41SIu11__SVInt64_tE
f4(S<__SVInt64_t>)15 void f4(S<__SVInt64_t>) {}
16 // CHECK: _Z2f51SIu11__SVUint8_tE
f5(S<__SVUint8_t>)17 void f5(S<__SVUint8_t>) {}
18 // CHECK: _Z2f61SIu12__SVUint16_tE
f6(S<__SVUint16_t>)19 void f6(S<__SVUint16_t>) {}
20 // CHECK: _Z2f71SIu12__SVUint32_tE
f7(S<__SVUint32_t>)21 void f7(S<__SVUint32_t>) {}
22 // CHECK: _Z2f81SIu12__SVUint64_tE
f8(S<__SVUint64_t>)23 void f8(S<__SVUint64_t>) {}
24 // CHECK: _Z2f91SIu13__SVFloat16_tE
f9(S<__SVFloat16_t>)25 void f9(S<__SVFloat16_t>) {}
26 // CHECK: _Z3f101SIu13__SVFloat32_tE
f10(S<__SVFloat32_t>)27 void f10(S<__SVFloat32_t>) {}
28 // CHECK: _Z3f111SIu13__SVFloat64_tE
f11(S<__SVFloat64_t>)29 void f11(S<__SVFloat64_t>) {}
30 // CHECK: _Z3f121SIu14__SVBFloat16_tE
f12(S<__SVBFloat16_t>)31 void f12(S<__SVBFloat16_t>) {}
32 // CHECK: _Z3f131SIu10__SVBool_tE
f13(S<__SVBool_t>)33 void f13(S<__SVBool_t>) {}
34 
35 // The tuple types don't use the internal name for mangling.
36 
37 // CHECK: _Z3f131SI10svint8x2_tE
f13(S<__clang_svint8x2_t>)38 void f13(S<__clang_svint8x2_t>) {}
39 // CHECK: _Z3f141SI10svint8x3_tE
f14(S<__clang_svint8x3_t>)40 void f14(S<__clang_svint8x3_t>) {}
41 // CHECK: _Z3f151SI10svint8x4_tE
f15(S<__clang_svint8x4_t>)42 void f15(S<__clang_svint8x4_t>) {}
43 // CHECK: _Z3f161SI11svint16x2_tE
f16(S<__clang_svint16x2_t>)44 void f16(S<__clang_svint16x2_t>) {}
45 // CHECK: _Z3f171SI11svint16x3_tE
f17(S<__clang_svint16x3_t>)46 void f17(S<__clang_svint16x3_t>) {}
47 // CHECK: _Z3f181SI11svint16x4_tE
f18(S<__clang_svint16x4_t>)48 void f18(S<__clang_svint16x4_t>) {}
49 // CHECK: _Z3f191SI11svint32x2_tE
f19(S<__clang_svint32x2_t>)50 void f19(S<__clang_svint32x2_t>) {}
51 // CHECK: _Z3f201SI11svint32x3_tE
f20(S<__clang_svint32x3_t>)52 void f20(S<__clang_svint32x3_t>) {}
53 // CHECK: _Z3f211SI11svint32x4_tE
f21(S<__clang_svint32x4_t>)54 void f21(S<__clang_svint32x4_t>) {}
55 // CHECK: _Z3f221SI11svint64x2_tE
f22(S<__clang_svint64x2_t>)56 void f22(S<__clang_svint64x2_t>) {}
57 // CHECK: _Z3f231SI11svint64x3_tE
f23(S<__clang_svint64x3_t>)58 void f23(S<__clang_svint64x3_t>) {}
59 // CHECK: _Z3f241SI11svint64x4_tE
f24(S<__clang_svint64x4_t>)60 void f24(S<__clang_svint64x4_t>) {}
61 // CHECK: _Z3f251SI11svuint8x2_tE
f25(S<__clang_svuint8x2_t>)62 void f25(S<__clang_svuint8x2_t>) {}
63 // CHECK: _Z3f261SI11svuint8x3_tE
f26(S<__clang_svuint8x3_t>)64 void f26(S<__clang_svuint8x3_t>) {}
65 // CHECK: _Z3f271SI11svuint8x4_tE
f27(S<__clang_svuint8x4_t>)66 void f27(S<__clang_svuint8x4_t>) {}
67 // CHECK: _Z3f281SI12svuint16x2_tE
f28(S<__clang_svuint16x2_t>)68 void f28(S<__clang_svuint16x2_t>) {}
69 // CHECK: _Z3f291SI12svuint16x3_tE
f29(S<__clang_svuint16x3_t>)70 void f29(S<__clang_svuint16x3_t>) {}
71 // CHECK: _Z3f301SI12svuint16x4_tE
f30(S<__clang_svuint16x4_t>)72 void f30(S<__clang_svuint16x4_t>) {}
73 // CHECK: _Z3f311SI12svuint32x2_tE
f31(S<__clang_svuint32x2_t>)74 void f31(S<__clang_svuint32x2_t>) {}
75 // CHECK: _Z3f321SI12svuint32x3_tE
f32(S<__clang_svuint32x3_t>)76 void f32(S<__clang_svuint32x3_t>) {}
77 // CHECK: _Z3f331SI12svuint32x4_tE
f33(S<__clang_svuint32x4_t>)78 void f33(S<__clang_svuint32x4_t>) {}
79 // CHECK: _Z3f341SI12svuint64x2_tE
f34(S<__clang_svuint64x2_t>)80 void f34(S<__clang_svuint64x2_t>) {}
81 // CHECK: _Z3f351SI12svuint64x3_tE
f35(S<__clang_svuint64x3_t>)82 void f35(S<__clang_svuint64x3_t>) {}
83 // CHECK: _Z3f361SI12svuint64x4_tE
f36(S<__clang_svuint64x4_t>)84 void f36(S<__clang_svuint64x4_t>) {}
85 // CHECK: _Z3f371SI13svfloat16x2_tE
f37(S<__clang_svfloat16x2_t>)86 void f37(S<__clang_svfloat16x2_t>) {}
87 // CHECK: _Z3f381SI13svfloat16x3_tE
f38(S<__clang_svfloat16x3_t>)88 void f38(S<__clang_svfloat16x3_t>) {}
89 // CHECK: _Z3f391SI13svfloat16x4_tE
f39(S<__clang_svfloat16x4_t>)90 void f39(S<__clang_svfloat16x4_t>) {}
91 // CHECK: _Z3f401SI13svfloat32x2_tE
f40(S<__clang_svfloat32x2_t>)92 void f40(S<__clang_svfloat32x2_t>) {}
93 // CHECK: _Z3f411SI13svfloat32x3_tE
f41(S<__clang_svfloat32x3_t>)94 void f41(S<__clang_svfloat32x3_t>) {}
95 // CHECK: _Z3f421SI13svfloat32x4_tE
f42(S<__clang_svfloat32x4_t>)96 void f42(S<__clang_svfloat32x4_t>) {}
97 // CHECK: _Z3f431SI13svfloat64x2_tE
f43(S<__clang_svfloat64x2_t>)98 void f43(S<__clang_svfloat64x2_t>) {}
99 // CHECK: _Z3f441SI13svfloat64x3_tE
f44(S<__clang_svfloat64x3_t>)100 void f44(S<__clang_svfloat64x3_t>) {}
101 // CHECK: _Z3f451SI13svfloat64x4_tE
f45(S<__clang_svfloat64x4_t>)102 void f45(S<__clang_svfloat64x4_t>) {}
103 // CHECK: _Z3f461SI14svbfloat16x2_tE
f46(S<__clang_svbfloat16x2_t>)104 void f46(S<__clang_svbfloat16x2_t>) {}
105 // CHECK: _Z3f471SI14svbfloat16x3_tE
f47(S<__clang_svbfloat16x3_t>)106 void f47(S<__clang_svbfloat16x3_t>) {}
107 // CHECK: _Z3f481SI14svbfloat16x4_tE
f48(S<__clang_svbfloat16x4_t>)108 void f48(S<__clang_svbfloat16x4_t>) {}
109