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 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 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 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 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 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 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 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 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 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 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 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 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 128 void f13(S<fixed_bool_t>) {} 129