blob: 798f980d316c5501f9a7e214d565a1f5dce85f72 [file] [edit]
// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc \
// RUN: -target-feature +sve -emit-llvm -o - %s | FileCheck %s
template <typename T> struct S {};
// Scalar SVE types.
// CHECK: void @"?f1@@YAXU?$S@$_CB@@@Z"
void f1(S<__SVInt8_t>) {}
// CHECK: void @"?f2@@YAXU?$S@$_CD@@@Z"
void f2(S<__SVInt32_t>) {}
// CHECK: void @"?f3@@YAXU?$S@$_CA@@@Z"
void f3(S<__SVBool_t>) {}
// CHECK: void @"?f4@@YAXU?$S@$_CH@@@Z"
void f4(S<__SVUint32_t>) {}
// CHECK: void @"?f5@@YAXU?$S@$_CL@@@Z"
void f5(S<__SVFloat32_t>) {}
// CHECK: void @"?f13@@YAXU?$S@$_CJ@@@Z"
void f13(S<__SVBfloat16_t>) {}
// Tuple SVE types.
// CHECK: void @"?f6@@YAXU?$S@$_C2B@@@Z"
void f6(S<__clang_svint8x2_t>) {}
// CHECK: void @"?f7@@YAXU?$S@$_C3B@@@Z"
void f7(S<__clang_svint8x3_t>) {}
// CHECK: void @"?f8@@YAXU?$S@$_C4B@@@Z"
void f8(S<__clang_svint8x4_t>) {}
// CHECK: void @"?f9@@YAXU?$S@$_C4M@@@Z"
void f9(S<__clang_svfloat64x4_t>) {}
// CHECK: void @"?f14@@YAXU?$S@$_C2H@@@Z"
void f14(S<__clang_svuint32x2_t>) {}
// CHECK: void @"?f15@@YAXU?$S@$_C3L@@@Z"
void f15(S<__clang_svfloat32x3_t>) {}
// Unsupported types should continue using legacy artificial tag mangling.
// CHECK: void @"?f10@@YAXU?$S@U__SVMfloat8_t@__clang@@@@@Z"
void f10(S<__SVMfloat8_t>) {}
// CHECK: void @"?f11@@YAXU?$S@U__clang_svboolx2_t@__clang@@@@@Z"
void f11(S<__clang_svboolx2_t>) {}
// CHECK: void @"?f12@@YAXU?$S@U__SVCount_t@__clang@@@@@Z"
void f12(S<__SVCount_t>) {}