diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 280a2e1f1ee2c..972aa1c708e5f 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -9994,7 +9994,7 @@ Value *CodeGenFunction::EmitAArch64SVEBuiltinExpr(unsigned BuiltinID, const CallExpr *E) { llvm::Type *Ty = ConvertType(E->getType()); if (BuiltinID >= SVE::BI__builtin_sve_reinterpret_s8_s8 && - BuiltinID <= SVE::BI__builtin_sve_reinterpret_f64_f64) { + BuiltinID <= SVE::BI__builtin_sve_reinterpret_f64_f64_x4) { Value *Val = EmitScalarExpr(E->getArg(0)); return EmitSVEReinterpret(Val, Ty); } diff --git a/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret-bfloat.c b/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret-bfloat.c index 8439ec175f96f..75d8feb8a847c 100644 --- a/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret-bfloat.c +++ b/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret-bfloat.c @@ -1,19 +1,44 @@ // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py // REQUIRES: aarch64-registered-target // RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s +// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4 // RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK +// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE2 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE3 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE4 // RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s +// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4 // RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK +// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE2 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE3 +// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE4 // RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s #include +#ifdef TUPLE +#define TYPE_1(base,tuple) base ## tuple ## _t +#define TYPE_0(base,tuple) TYPE_1(base,tuple) +#define TYPE(base) TYPE_0(base,TUPLE) +#else +#define TYPE(base) base ## _t +#endif + #ifdef SVE_OVERLOADED_FORMS -// A simple used,unused... macro, long enough to represent any SVE builtin. -#define SVE_ACLE_FUNC(A1, A2_UNUSED, A3, A4_UNUSED) A1##A3 +#define SVE_ACLE_FUNC(A1,A2_UNUSED) A1 #else -#define SVE_ACLE_FUNC(A1, A2, A3, A4) A1##A2##A3##A4 +#ifdef TUPLE +#define SVE_ACLE_FUNC_1(A1,A2,T) A1##A2##_##T +#define SVE_ACLE_FUNC_0(A1,A2,T) SVE_ACLE_FUNC_1(A1,A2,T) +#define SVE_ACLE_FUNC(A1,A2) SVE_ACLE_FUNC_0(A1,A2,TUPLE) +#else +#define SVE_ACLE_FUNC(A1,A2) A1##A2 +#endif #endif // CHECK-LABEL: @test_svreinterpret_s8_bf16( @@ -21,13 +46,43 @@ // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s8_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_s8, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s8_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s8_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s8_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_s8, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_s16_bf16( @@ -35,13 +90,43 @@ svint8_t test_svreinterpret_s8_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_s16_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_s16, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_s16_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_s16_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_s16_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_s16, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_s32_bf16( @@ -49,26 +134,86 @@ svint16_t test_svreinterpret_s16_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_s32_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_s32, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_s32_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_s32_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_s32_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_s32, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_s64_bf16( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_s64_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_s64, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_s64_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_s64_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_s64_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_s64, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_u8_bf16( @@ -76,13 +221,43 @@ svint64_t test_svreinterpret_s64_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u8_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_u8, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u8_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u8_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u8_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_u8, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_u16_bf16( @@ -90,13 +265,43 @@ svuint8_t test_svreinterpret_u8_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_u16_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_u16, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_u16_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_u16_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_u16_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_u16, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_u32_bf16( @@ -104,13 +309,43 @@ svuint16_t test_svreinterpret_u16_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_u32_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_u32, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_u32_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_u32_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_u32_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_u32, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_u64_bf16( @@ -118,13 +353,43 @@ svuint32_t test_svreinterpret_u32_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_u64_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_u64, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_u64_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_u64_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_u64_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_u64, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_s8( @@ -132,13 +397,43 @@ svuint64_t test_svreinterpret_u64_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_bf16_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_s8(svint8_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _s8, , )(op); +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_bf16_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_bf16_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_bf16_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_s8(TYPE(svint8) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _s8)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_s16( @@ -146,13 +441,43 @@ svbfloat16_t test_svreinterpret_bf16_s8(svint8_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_s16(svint16_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _s16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_s16(TYPE(svint16) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _s16)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_s32( @@ -160,13 +485,43 @@ svbfloat16_t test_svreinterpret_bf16_s16(svint16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_s32(svint32_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _s32, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_s32(TYPE(svint32) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _s32)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_s64( @@ -174,13 +529,43 @@ svbfloat16_t test_svreinterpret_bf16_s32(svint32_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_s64(svint64_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _s64, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_s64(TYPE(svint64) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _s64)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_u8( @@ -188,13 +573,43 @@ svbfloat16_t test_svreinterpret_bf16_s64(svint64_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_bf16_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_u8(svuint8_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _u8, , )(op); +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_bf16_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_bf16_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_bf16_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_u8(TYPE(svuint8) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _u8)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_u16( @@ -202,13 +617,43 @@ svbfloat16_t test_svreinterpret_bf16_u8(svuint8_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_u16(svuint16_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _u16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_u16(TYPE(svuint16) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _u16)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_u32( @@ -216,13 +661,43 @@ svbfloat16_t test_svreinterpret_bf16_u16(svuint16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_u32(svuint32_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _u32, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_u32(TYPE(svuint32) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _u32)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_u64( @@ -230,25 +705,79 @@ svbfloat16_t test_svreinterpret_bf16_u32(svuint32_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_u64(svuint64_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _u64, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_u64(TYPE(svuint64) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _u64)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_bf16( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z28test_svreinterpret_bf16_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svbfloat16_t test_svreinterpret_bf16_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z28test_svreinterpret_bf16_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z28test_svreinterpret_bf16_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z28test_svreinterpret_bf16_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_f16( @@ -256,13 +785,43 @@ svbfloat16_t test_svreinterpret_bf16_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_f16(svfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _f16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_f16(TYPE(svfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _f16)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_f32( @@ -270,13 +829,43 @@ svbfloat16_t test_svreinterpret_bf16_f16(svfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_f32(svfloat32_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _f32, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_f32(TYPE(svfloat32) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _f32)(op); } // CHECK-LABEL: @test_svreinterpret_bf16_f64( @@ -284,13 +873,43 @@ svbfloat16_t test_svreinterpret_bf16_f32(svfloat32_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_bf16_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_bf16_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_bf16_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_bf16_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svbfloat16_t test_svreinterpret_bf16_f64(svfloat64_t op) { - return SVE_ACLE_FUNC(svreinterpret_bf16, _f64, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_bf16_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_bf16_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_bf16_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svbfloat16) test_svreinterpret_bf16_f64(TYPE(svfloat64) op) { + return SVE_ACLE_FUNC(svreinterpret_bf16, _f64)(op); } // CHECK-LABEL: @test_svreinterpret_f32_bf16( @@ -298,13 +917,43 @@ svbfloat16_t test_svreinterpret_bf16_f64(svfloat64_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_f32_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_f32, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_f32_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_f32_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_f32_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_f32, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_f16_bf16( @@ -312,13 +961,43 @@ svfloat32_t test_svreinterpret_f32_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_f16_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_f16, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_f16_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_f16_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_f16_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_f16, _bf16)(op); } // CHECK-LABEL: @test_svreinterpret_f64_bf16( @@ -326,11 +1005,41 @@ svfloat16_t test_svreinterpret_f16_bf16(svbfloat16_t op) { // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_bf16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_bf16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_bf16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z27test_svreinterpret_f64_bf16u14__SVBfloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_bf16(svbfloat16_t op) { - return SVE_ACLE_FUNC(svreinterpret_f64, _bf16, , )(op); +// CPP-TUPLE2-LABEL: @_Z27test_svreinterpret_f64_bf1614svbfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z27test_svreinterpret_f64_bf1614svbfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z27test_svreinterpret_f64_bf1614svbfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_bf16(TYPE(svbfloat16) op) { + return SVE_ACLE_FUNC(svreinterpret_f64, _bf16)(op); } diff --git a/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret.c b/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret.c index c4fe461c709b5..24167a8f5ce10 100644 --- a/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret.c +++ b/clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret.c @@ -1,31 +1,80 @@ // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py // REQUIRES: aarch64-registered-target // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s +// RUN: %clang_cc1 -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2 +// RUN: %clang_cc1 -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3 +// RUN: %clang_cc1 -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK +// RUN: %clang_cc1 -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE2 +// RUN: %clang_cc1 -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE3 +// RUN: %clang_cc1 -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE4 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2 +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3 +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4 // RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x2 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE2 +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x3 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE3 +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -DTUPLE=x4 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE4 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve -S -disable-O0-optnone -Werror -Wall -o /dev/null %s #include +#ifdef TUPLE +#define TYPE_1(base,tuple) base ## tuple ## _t +#define TYPE_0(base,tuple) TYPE_1(base,tuple) +#define TYPE(base) TYPE_0(base,TUPLE) +#else +#define TYPE(base) base ## _t +#endif + #ifdef SVE_OVERLOADED_FORMS -// A simple used,unused... macro, long enough to represent any SVE builtin. -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3 +#define SVE_ACLE_FUNC(A1,A2_UNUSED) A1 +#else +#ifdef TUPLE +#define SVE_ACLE_FUNC_1(A1,A2,T) A1##A2##_##T +#define SVE_ACLE_FUNC_0(A1,A2,T) SVE_ACLE_FUNC_1(A1,A2,T) +#define SVE_ACLE_FUNC(A1,A2) SVE_ACLE_FUNC_0(A1,A2,TUPLE) #else -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4 +#define SVE_ACLE_FUNC(A1,A2) A1##A2 +#endif #endif // CHECK-LABEL: @test_svreinterpret_s8_s8( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z24test_svreinterpret_s8_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint8_t test_svreinterpret_s8_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_s8_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_s8_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_s8_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint8) test_svreinterpret_s8_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_s8_s16( @@ -33,14 +82,44 @@ svint8_t test_svreinterpret_s8_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_s8_s32( @@ -48,14 +127,44 @@ svint8_t test_svreinterpret_s8_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_s8_s64( @@ -63,27 +172,81 @@ svint8_t test_svreinterpret_s8_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_s8_u8( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z24test_svreinterpret_s8_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint8_t test_svreinterpret_s8_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_s8_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_s8_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_s8_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint8) test_svreinterpret_s8_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_s8_u16( @@ -91,44 +254,136 @@ svint8_t test_svreinterpret_s8_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_u16)(op); } +// // CHECK-LABEL: @test_svreinterpret_s8_u32( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_u32)(op); } +// // CHECK-LABEL: @test_svreinterpret_s8_u64( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_s8_f16( @@ -136,14 +391,44 @@ svint8_t test_svreinterpret_s8_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_s8_f32( @@ -151,14 +436,44 @@ svint8_t test_svreinterpret_s8_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_s8_f64( @@ -166,14 +481,44 @@ svint8_t test_svreinterpret_s8_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s8_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s8_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s8_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s8_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint8_t test_svreinterpret_s8_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s8_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s8_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s8_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint8) test_svreinterpret_s8_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_s8,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s8,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_s16_s8( @@ -181,27 +526,81 @@ svint8_t test_svreinterpret_s8_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s16_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s16_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s16_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s16_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_s16_s16( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint16_t test_svreinterpret_s16_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint16) test_svreinterpret_s16_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_s16_s32( @@ -209,14 +608,44 @@ svint16_t test_svreinterpret_s16_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_s16_s64( @@ -224,14 +653,44 @@ svint16_t test_svreinterpret_s16_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_s16_u8( @@ -239,27 +698,81 @@ svint16_t test_svreinterpret_s16_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s16_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s16_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s16_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s16_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_s16_u16( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint16_t test_svreinterpret_s16_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint16) test_svreinterpret_s16_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_s16_u32( @@ -267,14 +780,44 @@ svint16_t test_svreinterpret_s16_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_s16_u64( @@ -282,14 +825,44 @@ svint16_t test_svreinterpret_s16_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_s16_f16( @@ -297,14 +870,44 @@ svint16_t test_svreinterpret_s16_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_s16_f32( @@ -312,14 +915,44 @@ svint16_t test_svreinterpret_s16_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_s16_f64( @@ -327,14 +960,44 @@ svint16_t test_svreinterpret_s16_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s16_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s16_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s16_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s16_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint16_t test_svreinterpret_s16_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s16_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s16_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s16_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint16) test_svreinterpret_s16_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_s16,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s16,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_s32_s8( @@ -342,14 +1005,44 @@ svint16_t test_svreinterpret_s16_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s32_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s32_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s32_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s32_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_s32_s16( @@ -357,28 +1050,81 @@ svint32_t test_svreinterpret_s32_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_s16)(op); } -// // CHECK-LABEL: @test_svreinterpret_s32_s32( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint32_t test_svreinterpret_s32_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint32) test_svreinterpret_s32_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_s32_s64( @@ -386,14 +1132,44 @@ svint32_t test_svreinterpret_s32_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_s32_u8( @@ -401,14 +1177,44 @@ svint32_t test_svreinterpret_s32_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s32_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s32_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s32_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s32_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_s32_u16( @@ -416,27 +1222,81 @@ svint32_t test_svreinterpret_s32_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_s32_u32( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint32_t test_svreinterpret_s32_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint32) test_svreinterpret_s32_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_s32_u64( @@ -444,14 +1304,44 @@ svint32_t test_svreinterpret_s32_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_s32_f16( @@ -459,14 +1349,44 @@ svint32_t test_svreinterpret_s32_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_s32_f32( @@ -474,29 +1394,90 @@ svint32_t test_svreinterpret_s32_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_f32)(op); } +// // CHECK-LABEL: @test_svreinterpret_s32_f64( // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s32_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s32_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s32_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s32_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint32_t test_svreinterpret_s32_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s32_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s32_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s32_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint32) test_svreinterpret_s32_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_s32,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s32,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_s64_s8( @@ -504,14 +1485,44 @@ svint32_t test_svreinterpret_s32_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s64_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s64_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s64_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s64_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_s64_s16( @@ -519,14 +1530,44 @@ svint64_t test_svreinterpret_s64_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_s64_s32( @@ -534,27 +1575,81 @@ svint64_t test_svreinterpret_s64_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_s64_s64( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint64_t test_svreinterpret_s64_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint64) test_svreinterpret_s64_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_s64_u8( @@ -562,14 +1657,44 @@ svint64_t test_svreinterpret_s64_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_s64_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_s64_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_s64_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_s64_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_s64_u16( @@ -577,14 +1702,44 @@ svint64_t test_svreinterpret_s64_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_s64_u32( @@ -592,27 +1747,81 @@ svint64_t test_svreinterpret_s64_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_s64_u64( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svint64_t test_svreinterpret_s64_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svint64) test_svreinterpret_s64_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_s64_f16( @@ -620,14 +1829,44 @@ svint64_t test_svreinterpret_s64_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_s64_f32( @@ -635,14 +1874,44 @@ svint64_t test_svreinterpret_s64_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_s64_f64( @@ -650,27 +1919,81 @@ svint64_t test_svreinterpret_s64_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_s64_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_s64_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_s64_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_s64_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svint64_t test_svreinterpret_s64_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_s64_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_s64_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_s64_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svint64) test_svreinterpret_s64_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_s64,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_s64,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_u8_s8( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z24test_svreinterpret_u8_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint8_t test_svreinterpret_u8_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_u8_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_u8_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_u8_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint8) test_svreinterpret_u8_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_u8_s16( @@ -678,14 +2001,44 @@ svuint8_t test_svreinterpret_u8_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_u8_s32( @@ -693,14 +2046,44 @@ svuint8_t test_svreinterpret_u8_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_u8_s64( @@ -708,27 +2091,81 @@ svuint8_t test_svreinterpret_u8_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_u8_u8( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z24test_svreinterpret_u8_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint8_t test_svreinterpret_u8_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z24test_svreinterpret_u8_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z24test_svreinterpret_u8_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z24test_svreinterpret_u8_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint8) test_svreinterpret_u8_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_u8_u16( @@ -736,14 +2173,44 @@ svuint8_t test_svreinterpret_u8_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_u8_u32( @@ -751,14 +2218,44 @@ svuint8_t test_svreinterpret_u8_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_u8_u64( @@ -766,14 +2263,44 @@ svuint8_t test_svreinterpret_u8_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_u8_f16( @@ -781,14 +2308,44 @@ svuint8_t test_svreinterpret_u8_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_u8_f32( @@ -796,14 +2353,44 @@ svuint8_t test_svreinterpret_u8_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_u8_f64( @@ -811,14 +2398,44 @@ svuint8_t test_svreinterpret_u8_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u8_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u8_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u8_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u8_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint8_t test_svreinterpret_u8_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u8_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u8_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u8_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint8) test_svreinterpret_u8_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_u8,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u8,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_u16_s8( @@ -826,27 +2443,81 @@ svuint8_t test_svreinterpret_u8_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u16_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u16_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u16_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u16_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_u16_s16( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint16_t test_svreinterpret_u16_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint16) test_svreinterpret_u16_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_u16_s32( @@ -854,14 +2525,44 @@ svuint16_t test_svreinterpret_u16_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_u16_s64( @@ -869,14 +2570,44 @@ svuint16_t test_svreinterpret_u16_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_u16_u8( @@ -884,27 +2615,81 @@ svuint16_t test_svreinterpret_u16_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u16_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u16_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u16_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u16_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_u16_u16( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint16_t test_svreinterpret_u16_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint16) test_svreinterpret_u16_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_u16_u32( @@ -912,14 +2697,44 @@ svuint16_t test_svreinterpret_u16_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_u16_u64( @@ -927,14 +2742,44 @@ svuint16_t test_svreinterpret_u16_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_u16_f16( @@ -942,14 +2787,44 @@ svuint16_t test_svreinterpret_u16_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_u16_f32( @@ -957,14 +2832,44 @@ svuint16_t test_svreinterpret_u16_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_u16_f64( @@ -972,14 +2877,44 @@ svuint16_t test_svreinterpret_u16_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u16_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u16_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u16_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u16_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint16_t test_svreinterpret_u16_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u16_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u16_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u16_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint16) test_svreinterpret_u16_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_u16,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u16,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_u32_s8( @@ -987,14 +2922,44 @@ svuint16_t test_svreinterpret_u16_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u32_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u32_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u32_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u32_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_u32_s16( @@ -1002,27 +2967,81 @@ svuint32_t test_svreinterpret_u32_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_u32_s32( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint32_t test_svreinterpret_u32_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint32) test_svreinterpret_u32_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_u32_s64( @@ -1030,14 +3049,44 @@ svuint32_t test_svreinterpret_u32_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_u32_u8( @@ -1045,14 +3094,44 @@ svuint32_t test_svreinterpret_u32_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u32_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u32_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u32_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u32_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_u32_u16( @@ -1060,27 +3139,81 @@ svuint32_t test_svreinterpret_u32_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_u32_u32( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint32_t test_svreinterpret_u32_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint32) test_svreinterpret_u32_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_u32_u64( @@ -1088,14 +3221,44 @@ svuint32_t test_svreinterpret_u32_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_u32_f16( @@ -1103,14 +3266,44 @@ svuint32_t test_svreinterpret_u32_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_u32_f32( @@ -1118,14 +3311,44 @@ svuint32_t test_svreinterpret_u32_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_u32_f64( @@ -1133,14 +3356,44 @@ svuint32_t test_svreinterpret_u32_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u32_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u32_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u32_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u32_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint32_t test_svreinterpret_u32_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u32_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u32_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u32_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint32) test_svreinterpret_u32_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_u32,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u32,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_u64_s8( @@ -1148,14 +3401,44 @@ svuint32_t test_svreinterpret_u32_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u64_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u64_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u64_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u64_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_u64_s16( @@ -1163,14 +3446,44 @@ svuint64_t test_svreinterpret_u64_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_u64_s32( @@ -1178,27 +3491,81 @@ svuint64_t test_svreinterpret_u64_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_u64_s64( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint64_t test_svreinterpret_u64_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint64) test_svreinterpret_u64_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_u64_u8( @@ -1206,14 +3573,44 @@ svuint64_t test_svreinterpret_u64_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_u64_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_u64_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_u64_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_u64_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_u64_u16( @@ -1221,14 +3618,44 @@ svuint64_t test_svreinterpret_u64_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_u64_u32( @@ -1236,27 +3663,81 @@ svuint64_t test_svreinterpret_u64_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_u64_u64( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svuint64_t test_svreinterpret_u64_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svuint64) test_svreinterpret_u64_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_u64_f16( @@ -1264,14 +3745,44 @@ svuint64_t test_svreinterpret_u64_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_u64_f32( @@ -1279,14 +3790,44 @@ svuint64_t test_svreinterpret_u64_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_u64_f64( @@ -1294,14 +3835,44 @@ svuint64_t test_svreinterpret_u64_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_u64_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_u64_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_u64_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_u64_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svuint64_t test_svreinterpret_u64_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_u64_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_u64_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_u64_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svuint64) test_svreinterpret_u64_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_u64,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_u64,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_f16_s8( @@ -1309,14 +3880,44 @@ svuint64_t test_svreinterpret_u64_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f16_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f16_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f16_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f16_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_f16_s16( @@ -1324,14 +3925,44 @@ svfloat16_t test_svreinterpret_f16_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_f16_s32( @@ -1339,14 +3970,44 @@ svfloat16_t test_svreinterpret_f16_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_f16_s64( @@ -1354,14 +4015,44 @@ svfloat16_t test_svreinterpret_f16_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_f16_u8( @@ -1369,14 +4060,44 @@ svfloat16_t test_svreinterpret_f16_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f16_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f16_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f16_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f16_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_f16_u16( @@ -1384,14 +4105,44 @@ svfloat16_t test_svreinterpret_f16_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_f16_u32( @@ -1399,14 +4150,44 @@ svfloat16_t test_svreinterpret_f16_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_f16_u64( @@ -1414,27 +4195,81 @@ svfloat16_t test_svreinterpret_f16_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_f16_f16( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svfloat16_t test_svreinterpret_f16_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svfloat16) test_svreinterpret_f16_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_f16_f32( @@ -1442,14 +4277,44 @@ svfloat16_t test_svreinterpret_f16_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_f16_f64( @@ -1457,14 +4322,44 @@ svfloat16_t test_svreinterpret_f16_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f16_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f16_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f16_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f16_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat16_t test_svreinterpret_f16_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f16_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f16_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f16_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat16) test_svreinterpret_f16_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_f16,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f16,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_f32_s8( @@ -1472,14 +4367,44 @@ svfloat16_t test_svreinterpret_f16_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f32_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f32_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f32_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f32_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_f32_s16( @@ -1487,14 +4412,44 @@ svfloat32_t test_svreinterpret_f32_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_f32_s32( @@ -1502,14 +4457,44 @@ svfloat32_t test_svreinterpret_f32_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_f32_s64( @@ -1517,14 +4502,44 @@ svfloat32_t test_svreinterpret_f32_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_f32_u8( @@ -1532,14 +4547,44 @@ svfloat32_t test_svreinterpret_f32_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f32_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f32_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f32_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f32_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_f32_u16( @@ -1547,14 +4592,44 @@ svfloat32_t test_svreinterpret_f32_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_f32_u32( @@ -1562,14 +4637,44 @@ svfloat32_t test_svreinterpret_f32_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_f32_u64( @@ -1577,14 +4682,44 @@ svfloat32_t test_svreinterpret_f32_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_f32_f16( @@ -1592,27 +4727,81 @@ svfloat32_t test_svreinterpret_f32_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_f32_f32( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svfloat32_t test_svreinterpret_f32_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svfloat32) test_svreinterpret_f32_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_f32_f64( @@ -1620,14 +4809,44 @@ svfloat32_t test_svreinterpret_f32_f32(svfloat32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f32_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f32_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f32_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f32_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat32_t test_svreinterpret_f32_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f32_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f32_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f32_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat32) test_svreinterpret_f32_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_f32,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f32,_f64)(op); } // CHECK-LABEL: @test_svreinterpret_f64_s8( @@ -1635,14 +4854,44 @@ svfloat32_t test_svreinterpret_f32_f64(svfloat64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_s8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_s8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_s8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f64_s8u10__SVInt8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_s8(svint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f64_s810svint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f64_s810svint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f64_s810svint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_s8(TYPE(svint8) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_s8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_s8)(op); } // CHECK-LABEL: @test_svreinterpret_f64_s16( @@ -1650,14 +4899,44 @@ svfloat64_t test_svreinterpret_f64_s8(svint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_s16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_s16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_s16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_s16u11__SVInt16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_s16(svint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_s1611svint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_s1611svint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_s1611svint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_s16(TYPE(svint16) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_s16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_s16)(op); } // CHECK-LABEL: @test_svreinterpret_f64_s32( @@ -1665,14 +4944,44 @@ svfloat64_t test_svreinterpret_f64_s16(svint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_s32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_s32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_s32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_s32u11__SVInt32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_s32(svint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_s3211svint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_s3211svint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_s3211svint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_s32(TYPE(svint32) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_s32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_s32)(op); } // CHECK-LABEL: @test_svreinterpret_f64_s64( @@ -1680,14 +4989,44 @@ svfloat64_t test_svreinterpret_f64_s32(svint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_s64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_s64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_s64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_s64u11__SVInt64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_s64(svint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_s6411svint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_s6411svint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_s6411svint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_s64(TYPE(svint64) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_s64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_s64)(op); } // CHECK-LABEL: @test_svreinterpret_f64_u8( @@ -1695,14 +5034,44 @@ svfloat64_t test_svreinterpret_f64_s64(svint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_u8( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_u8( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_u8( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z25test_svreinterpret_f64_u8u11__SVUint8_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_u8(svuint8_t op) +// CPP-TUPLE2-LABEL: @_Z25test_svreinterpret_f64_u811svuint8x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z25test_svreinterpret_f64_u811svuint8x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z25test_svreinterpret_f64_u811svuint8x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_u8(TYPE(svuint8) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_u8,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_u8)(op); } // CHECK-LABEL: @test_svreinterpret_f64_u16( @@ -1710,14 +5079,44 @@ svfloat64_t test_svreinterpret_f64_u8(svuint8_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_u16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_u16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_u16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_u16u12__SVUint16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_u16(svuint16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_u1612svuint16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_u1612svuint16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_u1612svuint16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_u16(TYPE(svuint16) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_u16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_u16)(op); } // CHECK-LABEL: @test_svreinterpret_f64_u32( @@ -1725,14 +5124,44 @@ svfloat64_t test_svreinterpret_f64_u16(svuint16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_u32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_u32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_u32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_u32u12__SVUint32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_u32(svuint32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_u3212svuint32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_u3212svuint32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_u3212svuint32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_u32(TYPE(svuint32) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_u32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_u32)(op); } // CHECK-LABEL: @test_svreinterpret_f64_u64( @@ -1740,14 +5169,44 @@ svfloat64_t test_svreinterpret_f64_u32(svuint32_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_u64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_u64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_u64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_u64u12__SVUint64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_u64(svuint64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_u6412svuint64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_u6412svuint64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_u6412svuint64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_u64(TYPE(svuint64) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_u64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_u64)(op); } // CHECK-LABEL: @test_svreinterpret_f64_f16( @@ -1755,14 +5214,44 @@ svfloat64_t test_svreinterpret_f64_u64(svuint64_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_f16( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_f16( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_f16( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_f16u13__SVFloat16_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_f16(svfloat16_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_f1613svfloat16x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_f1613svfloat16x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_f1613svfloat16x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_f16(TYPE(svfloat16) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_f16,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_f16)(op); } // CHECK-LABEL: @test_svreinterpret_f64_f32( @@ -1770,25 +5259,79 @@ svfloat64_t test_svreinterpret_f64_f16(svfloat16_t op) // CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CHECK-NEXT: ret [[TMP0]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_f32( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE2-NEXT: ret [[TMP0]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_f32( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE3-NEXT: ret [[TMP0]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_f32( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// TUPLE4-NEXT: ret [[TMP0]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_f32u13__SVFloat32_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to // CPP-CHECK-NEXT: ret [[TMP0]] // -svfloat64_t test_svreinterpret_f64_f32(svfloat32_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_f3213svfloat32x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE2-NEXT: ret [[TMP0]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_f3213svfloat32x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE3-NEXT: ret [[TMP0]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_f3213svfloat32x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast [[OP:%.*]] to +// CPP-TUPLE4-NEXT: ret [[TMP0]] +// +TYPE(svfloat64) test_svreinterpret_f64_f32(TYPE(svfloat32) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_f32,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_f32)(op); } // CHECK-LABEL: @test_svreinterpret_f64_f64( // CHECK-NEXT: entry: // CHECK-NEXT: ret [[OP:%.*]] // +// TUPLE2-LABEL: @test_svreinterpret_f64_f64( +// TUPLE2-NEXT: entry: +// TUPLE2-NEXT: ret [[OP:%.*]] +// +// TUPLE3-LABEL: @test_svreinterpret_f64_f64( +// TUPLE3-NEXT: entry: +// TUPLE3-NEXT: ret [[OP:%.*]] +// +// TUPLE4-LABEL: @test_svreinterpret_f64_f64( +// TUPLE4-NEXT: entry: +// TUPLE4-NEXT: ret [[OP:%.*]] +// // CPP-CHECK-LABEL: @_Z26test_svreinterpret_f64_f64u13__SVFloat64_t( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT: ret [[OP:%.*]] // -svfloat64_t test_svreinterpret_f64_f64(svfloat64_t op) +// CPP-TUPLE2-LABEL: @_Z26test_svreinterpret_f64_f6413svfloat64x2_t( +// CPP-TUPLE2-NEXT: entry: +// CPP-TUPLE2-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE3-LABEL: @_Z26test_svreinterpret_f64_f6413svfloat64x3_t( +// CPP-TUPLE3-NEXT: entry: +// CPP-TUPLE3-NEXT: ret [[OP:%.*]] +// +// CPP-TUPLE4-LABEL: @_Z26test_svreinterpret_f64_f6413svfloat64x4_t( +// CPP-TUPLE4-NEXT: entry: +// CPP-TUPLE4-NEXT: ret [[OP:%.*]] +// +TYPE(svfloat64) test_svreinterpret_f64_f64(TYPE(svfloat64) op) { - return SVE_ACLE_FUNC(svreinterpret_f64,_f64,,)(op); + return SVE_ACLE_FUNC(svreinterpret_f64,_f64)(op); } diff --git a/clang/utils/TableGen/SveEmitter.cpp b/clang/utils/TableGen/SveEmitter.cpp index 368908e79bf19..6c82368c3c722 100644 --- a/clang/utils/TableGen/SveEmitter.cpp +++ b/clang/utils/TableGen/SveEmitter.cpp @@ -23,16 +23,17 @@ // //===----------------------------------------------------------------------===// -#include "llvm/ADT/STLExtras.h" -#include "llvm/ADT/StringMap.h" #include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringExtras.h" -#include "llvm/TableGen/Record.h" +#include "llvm/ADT/StringMap.h" #include "llvm/TableGen/Error.h" -#include -#include -#include +#include "llvm/TableGen/Record.h" +#include #include +#include +#include +#include #include using namespace llvm; @@ -64,26 +65,29 @@ class ImmCheck { }; class SVEType { - TypeSpec TS; bool Float, Signed, Immediate, Void, Constant, Pointer, BFloat; bool DefaultType, IsScalable, Predicate, PredicatePattern, PrefetchOp, Svcount; unsigned Bitwidth, ElementBitwidth, NumVectors; public: - SVEType() : SVEType(TypeSpec(), 'v') {} + SVEType() : SVEType("", 'v') {} - SVEType(TypeSpec TS, char CharMod, unsigned NumVectors = 1) - : TS(TS), Float(false), Signed(true), Immediate(false), Void(false), + SVEType(StringRef TS, char CharMod, unsigned NumVectors = 1) + : Float(false), Signed(true), Immediate(false), Void(false), Constant(false), Pointer(false), BFloat(false), DefaultType(false), IsScalable(true), Predicate(false), PredicatePattern(false), PrefetchOp(false), Svcount(false), Bitwidth(128), ElementBitwidth(~0U), NumVectors(NumVectors) { if (!TS.empty()) - applyTypespec(); + applyTypespec(TS); applyModifier(CharMod); } + SVEType(const SVEType &Base, unsigned NumV) : SVEType(Base) { + NumVectors = NumV; + } + bool isPointer() const { return Pointer; } bool isVoidPointer() const { return Pointer && Void; } bool isSigned() const { return Signed; } @@ -129,13 +133,12 @@ class SVEType { private: /// Creates the type based on the typespec string in TS. - void applyTypespec(); + void applyTypespec(StringRef TS); /// Applies a prototype modifier to the type. void applyModifier(char Mod); }; - class SVEEmitter; /// The main grunt class. This represents an instantiation of an intrinsic with @@ -263,17 +266,11 @@ class SVEEmitter { // which is inconvenient to specify in the arm_sve.td file or // generate in CGBuiltin.cpp. struct ReinterpretTypeInfo { + SVEType BaseType; const char *Suffix; - const char *Type; - const char *BuiltinType; }; - SmallVector Reinterprets = { - {"s8", "svint8_t", "q16Sc"}, {"s16", "svint16_t", "q8Ss"}, - {"s32", "svint32_t", "q4Si"}, {"s64", "svint64_t", "q2SWi"}, - {"u8", "svuint8_t", "q16Uc"}, {"u16", "svuint16_t", "q8Us"}, - {"u32", "svuint32_t", "q4Ui"}, {"u64", "svuint64_t", "q2UWi"}, - {"f16", "svfloat16_t", "q8h"}, {"bf16", "svbfloat16_t", "q8y"}, - {"f32", "svfloat32_t", "q4f"}, {"f64", "svfloat64_t", "q2d"}}; + + static const std::array Reinterprets; RecordKeeper &Records; llvm::StringMap EltTypes; @@ -383,6 +380,20 @@ class SVEEmitter { SmallVectorImpl> &Out); }; +const std::array SVEEmitter::Reinterprets = + {{{SVEType("c", 'd'), "s8"}, + {SVEType("Uc", 'd'), "u8"}, + {SVEType("s", 'd'), "s16"}, + {SVEType("Us", 'd'), "u16"}, + {SVEType("i", 'd'), "s32"}, + {SVEType("Ui", 'd'), "u32"}, + {SVEType("l", 'd'), "s64"}, + {SVEType("Ul", 'd'), "u64"}, + {SVEType("h", 'd'), "f16"}, + {SVEType("b", 'd'), "bf16"}, + {SVEType("f", 'd'), "f32"}, + {SVEType("d", 'd'), "f64"}}}; + } // end anonymous namespace @@ -497,7 +508,8 @@ std::string SVEType::str() const { return S; } -void SVEType::applyTypespec() { + +void SVEType::applyTypespec(StringRef TS) { for (char I : TS) { switch (I) { case 'Q': @@ -1315,21 +1327,28 @@ void SVEEmitter::createHeader(raw_ostream &OS) { "__nodebug__, __overloadable__))\n\n"; // Add reinterpret functions. - for (auto ShortForm : { false, true } ) - for (const ReinterpretTypeInfo &From : Reinterprets) + for (auto [N, Suffix] : + std::initializer_list>{ + {1, ""}, {2, "_x2"}, {3, "_x3"}, {4, "_x4"}}) { + for (auto ShortForm : {false, true}) for (const ReinterpretTypeInfo &To : Reinterprets) { - if (ShortForm) { - OS << "__aio __attribute__((target(\"sve\"))) " << From.Type - << " svreinterpret_" << From.Suffix; - OS << "(" << To.Type << " op) __arm_streaming_compatible {\n"; - OS << " return __builtin_sve_reinterpret_" << From.Suffix << "_" - << To.Suffix << "(op);\n"; - OS << "}\n\n"; - } else - OS << "#define svreinterpret_" << From.Suffix << "_" << To.Suffix - << "(...) __builtin_sve_reinterpret_" << From.Suffix << "_" - << To.Suffix << "(__VA_ARGS__)\n"; + SVEType ToV(To.BaseType, N); + for (const ReinterpretTypeInfo &From : Reinterprets) { + SVEType FromV(From.BaseType, N); + if (ShortForm) { + OS << "__aio __attribute__((target(\"sve\"))) " << ToV.str() + << " svreinterpret_" << To.Suffix; + OS << "(" << FromV.str() << " op) __arm_streaming_compatible {\n"; + OS << " return __builtin_sve_reinterpret_" << To.Suffix << "_" + << From.Suffix << Suffix << "(op);\n"; + OS << "}\n\n"; + } else + OS << "#define svreinterpret_" << To.Suffix << "_" << From.Suffix + << Suffix << "(...) __builtin_sve_reinterpret_" << To.Suffix + << "_" << From.Suffix << Suffix << "(__VA_ARGS__)\n"; + } } + } SmallVector, 128> Defs; std::vector RV = Records.getAllDerivedDefinitions("Inst"); @@ -1394,12 +1413,20 @@ void SVEEmitter::createBuiltins(raw_ostream &OS) { << "\")\n"; } - // Add reinterpret builtins - for (const ReinterpretTypeInfo &From : Reinterprets) - for (const ReinterpretTypeInfo &To : Reinterprets) - OS << "TARGET_BUILTIN(__builtin_sve_reinterpret_" << From.Suffix << "_" - << To.Suffix << +", \"" << From.BuiltinType << To.BuiltinType - << "\", \"n\", \"sve\")\n"; + // Add reinterpret functions. + for (auto [N, Suffix] : + std::initializer_list>{ + {1, ""}, {2, "_x2"}, {3, "_x3"}, {4, "_x4"}}) { + for (const ReinterpretTypeInfo &To : Reinterprets) { + SVEType ToV(To.BaseType, N); + for (const ReinterpretTypeInfo &From : Reinterprets) { + SVEType FromV(From.BaseType, N); + OS << "TARGET_BUILTIN(__builtin_sve_reinterpret_" << To.Suffix << "_" + << From.Suffix << Suffix << +", \"" << ToV.builtin_str() + << FromV.builtin_str() << "\", \"n\", \"sve\")\n"; + } + } + } OS << "#endif\n\n"; }