1 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
2 // RUN:  -target-feature +sve -target-feature +bf16 -msve-vector-bits=128 \
3 // RUN:  | FileCheck %s --check-prefix=CHECK-128
4 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
5 // RUN:  -target-feature +sve -target-feature +bf16 -msve-vector-bits=256 \
6 // RUN:  | FileCheck %s --check-prefix=CHECK-256
7 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
8 // RUN:  -target-feature +sve -target-feature +bf16 -msve-vector-bits=512 \
9 // RUN:  | FileCheck %s --check-prefix=CHECK-512
10 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
11 // RUN:  -target-feature +sve -target-feature +bf16 -msve-vector-bits=1024 \
12 // RUN:  | FileCheck %s --check-prefix=CHECK-1024
13 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu %s -emit-llvm -o - \
14 // RUN:  -target-feature +sve -target-feature +bf16 -msve-vector-bits=2048 \
15 // RUN:  | FileCheck %s --check-prefix=CHECK-2048
16 
17 #define N __ARM_FEATURE_SVE_BITS
18 
19 typedef __SVInt8_t fixed_int8_t __attribute__((arm_sve_vector_bits(N)));
20 typedef __SVInt16_t fixed_int16_t __attribute__((arm_sve_vector_bits(N)));
21 typedef __SVInt32_t fixed_int32_t __attribute__((arm_sve_vector_bits(N)));
22 typedef __SVInt64_t fixed_int64_t __attribute__((arm_sve_vector_bits(N)));
23 
24 typedef __SVUint8_t fixed_uint8_t __attribute__((arm_sve_vector_bits(N)));
25 typedef __SVUint16_t fixed_uint16_t __attribute__((arm_sve_vector_bits(N)));
26 typedef __SVUint32_t fixed_uint32_t __attribute__((arm_sve_vector_bits(N)));
27 typedef __SVUint64_t fixed_uint64_t __attribute__((arm_sve_vector_bits(N)));
28 
29 typedef __SVFloat16_t fixed_float16_t __attribute__((arm_sve_vector_bits(N)));
30 typedef __SVFloat32_t fixed_float32_t __attribute__((arm_sve_vector_bits(N)));
31 typedef __SVFloat64_t fixed_float64_t __attribute__((arm_sve_vector_bits(N)));
32 
33 typedef __SVBFloat16_t fixed_bfloat16_t __attribute__((arm_sve_vector_bits(N)));
34 
35 typedef __SVBool_t fixed_bool_t __attribute__((arm_sve_vector_bits(N)));
36 
37 template <typename T> struct S {};
38 
39 // CHECK-128: _Z2f11SI9__SVE_VLSIu10__SVInt8_tLj128EEE
40 // CHECK-256: _Z2f11SI9__SVE_VLSIu10__SVInt8_tLj256EEE
41 // CHECK-512: _Z2f11SI9__SVE_VLSIu10__SVInt8_tLj512EEE
42 // CHECK-1024: _Z2f11SI9__SVE_VLSIu10__SVInt8_tLj1024EEE
43 // CHECK-2048: _Z2f11SI9__SVE_VLSIu10__SVInt8_tLj2048EEE
f1(S<fixed_int8_t>)44 void f1(S<fixed_int8_t>) {}
45 
46 // CHECK-128: _Z2f21SI9__SVE_VLSIu11__SVInt16_tLj128EEE
47 // CHECK-256: _Z2f21SI9__SVE_VLSIu11__SVInt16_tLj256EEE
48 // CHECK-512: _Z2f21SI9__SVE_VLSIu11__SVInt16_tLj512EEE
49 // CHECK-1024: _Z2f21SI9__SVE_VLSIu11__SVInt16_tLj1024EEE
50 // CHECK-2048: _Z2f21SI9__SVE_VLSIu11__SVInt16_tLj2048EEE
f2(S<fixed_int16_t>)51 void f2(S<fixed_int16_t>) {}
52 
53 // CHECK-128: _Z2f31SI9__SVE_VLSIu11__SVInt32_tLj128EEE
54 // CHECK-256: _Z2f31SI9__SVE_VLSIu11__SVInt32_tLj256EEE
55 // CHECK-512: _Z2f31SI9__SVE_VLSIu11__SVInt32_tLj512EEE
56 // CHECK-1024: _Z2f31SI9__SVE_VLSIu11__SVInt32_tLj1024EEE
57 // CHECK-2048: _Z2f31SI9__SVE_VLSIu11__SVInt32_tLj2048EEE
f3(S<fixed_int32_t>)58 void f3(S<fixed_int32_t>) {}
59 
60 // CHECK-128: _Z2f41SI9__SVE_VLSIu11__SVInt64_tLj128EEE
61 // CHECK-256: _Z2f41SI9__SVE_VLSIu11__SVInt64_tLj256EEE
62 // CHECK-512: _Z2f41SI9__SVE_VLSIu11__SVInt64_tLj512EEE
63 // CHECK-1024: _Z2f41SI9__SVE_VLSIu11__SVInt64_tLj1024EEE
64 // CHECK-2048: _Z2f41SI9__SVE_VLSIu11__SVInt64_tLj2048EEE
f4(S<fixed_int64_t>)65 void f4(S<fixed_int64_t>) {}
66 
67 // CHECK-128: _Z2f51SI9__SVE_VLSIu11__SVUint8_tLj128EEE
68 // CHECK-256: _Z2f51SI9__SVE_VLSIu11__SVUint8_tLj256EEE
69 // CHECK-512: _Z2f51SI9__SVE_VLSIu11__SVUint8_tLj512EEE
70 // CHECK-1024: _Z2f51SI9__SVE_VLSIu11__SVUint8_tLj1024EEE
71 // CHECK-2048: _Z2f51SI9__SVE_VLSIu11__SVUint8_tLj2048EEE
f5(S<fixed_uint8_t>)72 void f5(S<fixed_uint8_t>) {}
73 
74 // CHECK-128: _Z2f61SI9__SVE_VLSIu12__SVUint16_tLj128EEE
75 // CHECK-256: _Z2f61SI9__SVE_VLSIu12__SVUint16_tLj256EEE
76 // CHECK-512: _Z2f61SI9__SVE_VLSIu12__SVUint16_tLj512EEE
77 // CHECK-1024: _Z2f61SI9__SVE_VLSIu12__SVUint16_tLj1024EEE
78 // CHECK-2048: _Z2f61SI9__SVE_VLSIu12__SVUint16_tLj2048EEE
f6(S<fixed_uint16_t>)79 void f6(S<fixed_uint16_t>) {}
80 
81 // CHECK-128: _Z2f71SI9__SVE_VLSIu12__SVUint32_tLj128EEE
82 // CHECK-256: _Z2f71SI9__SVE_VLSIu12__SVUint32_tLj256EEE
83 // CHECK-512: _Z2f71SI9__SVE_VLSIu12__SVUint32_tLj512EEE
84 // CHECK-1024: _Z2f71SI9__SVE_VLSIu12__SVUint32_tLj1024EEE
85 // CHECK-2048: _Z2f71SI9__SVE_VLSIu12__SVUint32_tLj2048EEE
f7(S<fixed_uint32_t>)86 void f7(S<fixed_uint32_t>) {}
87 
88 // CHECK-128: _Z2f81SI9__SVE_VLSIu12__SVUint64_tLj128EEE
89 // CHECK-256: _Z2f81SI9__SVE_VLSIu12__SVUint64_tLj256EEE
90 // CHECK-512: _Z2f81SI9__SVE_VLSIu12__SVUint64_tLj512EEE
91 // CHECK-1024: _Z2f81SI9__SVE_VLSIu12__SVUint64_tLj1024EEE
92 // CHECK-2048: _Z2f81SI9__SVE_VLSIu12__SVUint64_tLj2048EEE
f8(S<fixed_uint64_t>)93 void f8(S<fixed_uint64_t>) {}
94 
95 // CHECK-128: _Z2f91SI9__SVE_VLSIu13__SVFloat16_tLj128EEE
96 // CHECK-256: _Z2f91SI9__SVE_VLSIu13__SVFloat16_tLj256EEE
97 // CHECK-512: _Z2f91SI9__SVE_VLSIu13__SVFloat16_tLj512EEE
98 // CHECK-1024: _Z2f91SI9__SVE_VLSIu13__SVFloat16_tLj1024EEE
99 // CHECK-2048: _Z2f91SI9__SVE_VLSIu13__SVFloat16_tLj2048EEE
f9(S<fixed_float16_t>)100 void f9(S<fixed_float16_t>) {}
101 
102 // CHECK-128: _Z3f101SI9__SVE_VLSIu13__SVFloat32_tLj128EEE
103 // CHECK-256: _Z3f101SI9__SVE_VLSIu13__SVFloat32_tLj256EEE
104 // CHECK-512: _Z3f101SI9__SVE_VLSIu13__SVFloat32_tLj512EEE
105 // CHECK-1024: _Z3f101SI9__SVE_VLSIu13__SVFloat32_tLj1024EEE
106 // CHECK-2048: _Z3f101SI9__SVE_VLSIu13__SVFloat32_tLj2048EEE
f10(S<fixed_float32_t>)107 void f10(S<fixed_float32_t>) {}
108 
109 // CHECK-128: _Z3f111SI9__SVE_VLSIu13__SVFloat64_tLj128EEE
110 // CHECK-256: _Z3f111SI9__SVE_VLSIu13__SVFloat64_tLj256EEE
111 // CHECK-512: _Z3f111SI9__SVE_VLSIu13__SVFloat64_tLj512EEE
112 // CHECK-1024: _Z3f111SI9__SVE_VLSIu13__SVFloat64_tLj1024EEE
113 // CHECK-2048: _Z3f111SI9__SVE_VLSIu13__SVFloat64_tLj2048EEE
f11(S<fixed_float64_t>)114 void f11(S<fixed_float64_t>) {}
115 
116 // CHECK-128: _Z3f121SI9__SVE_VLSIu14__SVBfloat16_tLj128EEE
117 // CHECK-256: _Z3f121SI9__SVE_VLSIu14__SVBfloat16_tLj256EEE
118 // CHECK-512: _Z3f121SI9__SVE_VLSIu14__SVBfloat16_tLj512EEE
119 // CHECK-1024: _Z3f121SI9__SVE_VLSIu14__SVBfloat16_tLj1024EEE
120 // CHECK-2048: _Z3f121SI9__SVE_VLSIu14__SVBfloat16_tLj2048EEE
f12(S<fixed_bfloat16_t>)121 void f12(S<fixed_bfloat16_t>) {}
122 
123 // CHECK-128: _Z3f131SI9__SVE_VLSIu10__SVBool_tLj128EEE
124 // CHECK-256: _Z3f131SI9__SVE_VLSIu10__SVBool_tLj256EEE
125 // CHECK-512: _Z3f131SI9__SVE_VLSIu10__SVBool_tLj512EEE
126 // CHECK-1024: _Z3f131SI9__SVE_VLSIu10__SVBool_tLj1024EEE
127 // CHECK-2048: _Z3f131SI9__SVE_VLSIu10__SVBool_tLj2048EEE
f13(S<fixed_bool_t>)128 void f13(S<fixed_bool_t>) {}
129