Skip to content

Commit f81da75

Browse files
[Clang][AArch64] Use __clang_arm_builtin_alias for overloaded svreinterpret's (#92427)
The intrinsics are currently defined as: ``` __aio __attribute__((target("sve"))) svint8_t svreinterpret_s8(svuint8_t op) __arm_streaming_compatible { return __builtin_sve_reinterpret_s8_u8(op); } ``` which doesn't work when calling it from an __arm_streaming function when only +sme is available. By defining it in the same way as we've defined all the other intrinsics, we can leave it to the code in SemaChecking to verify that either +sve or +sme is available. This PR also fixes the target guards for the svreinterpret_c and svreinterpret_b intrinsics, that convert between svcount_t and svbool_t, as these are available both in SME2 and SVE2p1.
1 parent 4408613 commit f81da75

File tree

6 files changed

+182
-196
lines changed

6 files changed

+182
-196
lines changed

clang/include/clang/Basic/arm_sve.td

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2186,9 +2186,6 @@ let TargetGuard = "sme2" in {
21862186

21872187
def SVSQRSHRUN_X4 : SInst<"svqrshrun[_n]_{0}[_{d}_x4]", "b4i", "il", MergeNone, "aarch64_sve_sqrshrun_x4", [IsStreaming], [ImmCheck<1, ImmCheckShiftRight, 0>]>;
21882188

2189-
def REINTERPRET_SVBOOL_TO_SVCOUNT : Inst<"svreinterpret[_c]", "}P", "Pc", MergeNone, "", [IsStreamingCompatible], []>;
2190-
def REINTERPRET_SVCOUNT_TO_SVBOOL : Inst<"svreinterpret[_b]", "P}", "Pc", MergeNone, "", [IsStreamingCompatible], []>;
2191-
21922189
// SQDMULH
21932190
def SVSQDMULH_SINGLE_X2 : SInst<"svqdmulh[_single_{d}_x2]", "22d", "csil", MergeNone, "aarch64_sve_sqdmulh_single_vgx2", [IsStreaming], []>;
21942191
def SVSQDMULH_SINGLE_X4 : SInst<"svqdmulh[_single_{d}_x4]", "44d", "csil", MergeNone, "aarch64_sve_sqdmulh_single_vgx4", [IsStreaming], []>;
@@ -2197,6 +2194,9 @@ let TargetGuard = "sme2" in {
21972194
}
21982195

21992196
let TargetGuard = "sve2p1|sme2" in {
2197+
def REINTERPRET_SVBOOL_TO_SVCOUNT : Inst<"svreinterpret[_c]", "}P", "Pc", MergeNone, "", [IsStreamingCompatible], []>;
2198+
def REINTERPRET_SVCOUNT_TO_SVBOOL : Inst<"svreinterpret[_b]", "P}", "Pc", MergeNone, "", [IsStreamingCompatible], []>;
2199+
22002200
// SQRSHRN / UQRSHRN
22012201
def SVQRSHRN_X2 : SInst<"svqrshrn[_n]_{0}[_{d}_x2]", "h2i", "i", MergeNone, "aarch64_sve_sqrshrn_x2", [IsStreamingCompatible], [ImmCheck<1, ImmCheck1_16>]>;
22022202
def SVUQRSHRN_X2 : SInst<"svqrshrn[_n]_{0}[_{d}_x2]", "e2i", "Ui", MergeNone, "aarch64_sve_uqrshrn_x2", [IsStreamingCompatible], [ImmCheck<1, ImmCheck1_16>]>;

clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_reinterpret_svcount_svbool.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
// REQUIRES: aarch64-registered-target
44

5+
// RUN: %clang_cc1 -triple aarch64 -target-feature +sve2p1 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
6+
// RUN: %clang_cc1 -triple aarch64 -target-feature +sve2p1 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
57
// RUN: %clang_cc1 -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
68
// RUN: %clang_cc1 -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
79
// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
810
// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
911

10-
#include <arm_sme.h>
12+
#include <arm_sve.h>
1113

1214
#if defined __ARM_FEATURE_SME
1315
#define MODE_ATTR __arm_streaming
@@ -16,7 +18,7 @@
1618
#endif
1719

1820
#ifdef SVE_OVERLOADED_FORMS
19-
// A simple used,unused... macro, long enough to represent any SVE builtin.§
21+
// A simple used,unused... macro, long enough to represent any SVE builtin.
2022
#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
2123
#else
2224
#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4

clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret-bfloat.c

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x2 -triple aarch64 -target-feature +sve -target-feature +bf16 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2
55
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x3 -triple aarch64 -target-feature +sve -target-feature +bf16 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3
66
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x4 -triple aarch64 -target-feature +sve -target-feature +bf16 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4
7+
// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s
8+
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x2 -triple aarch64 -target-feature +sme -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE2
9+
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x3 -triple aarch64 -target-feature +sme -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE3
10+
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x4 -triple aarch64 -target-feature +sme -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=TUPLE4
711
// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sve -target-feature +bf16 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
812
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x2 -triple aarch64 -target-feature +sve -target-feature +bf16 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE2
913
// RUN: %clang_cc1 -fclang-abi-compat=latest -DTUPLE=x3 -triple aarch64 -target-feature +sve -target-feature +bf16 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE3
@@ -18,9 +22,16 @@
1822
// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -DTUPLE=x4 -triple aarch64 -target-feature +sve -target-feature +bf16 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -passes=mem2reg,tailcallelim | FileCheck %s -check-prefix=CPP-TUPLE4
1923

2024
// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sve -target-feature +bf16 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
25+
// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
2126

2227
#include <arm_sve.h>
2328

29+
#if defined __ARM_FEATURE_SME
30+
#define MODE_ATTR __arm_streaming
31+
#else
32+
#define MODE_ATTR
33+
#endif
34+
2435
#ifdef TUPLE
2536
#define TYPE_1(base,tuple) base ## tuple ## _t
2637
#define TYPE_0(base,tuple) TYPE_1(base,tuple)
@@ -81,7 +92,7 @@
8192
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 64 x i8>
8293
// CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
8394
//
84-
TYPE(svint8) test_svreinterpret_s8_bf16(TYPE(svbfloat16) op) {
95+
TYPE(svint8) test_svreinterpret_s8_bf16(TYPE(svbfloat16) op) MODE_ATTR {
8596
return SVE_ACLE_FUNC(svreinterpret_s8, _bf16)(op);
8697
}
8798

@@ -125,7 +136,7 @@ TYPE(svint8) test_svreinterpret_s8_bf16(TYPE(svbfloat16) op) {
125136
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 32 x i16>
126137
// CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
127138
//
128-
TYPE(svint16) test_svreinterpret_s16_bf16(TYPE(svbfloat16) op) {
139+
TYPE(svint16) test_svreinterpret_s16_bf16(TYPE(svbfloat16) op) MODE_ATTR {
129140
return SVE_ACLE_FUNC(svreinterpret_s16, _bf16)(op);
130141
}
131142

@@ -169,7 +180,7 @@ TYPE(svint16) test_svreinterpret_s16_bf16(TYPE(svbfloat16) op) {
169180
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 16 x i32>
170181
// CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
171182
//
172-
TYPE(svint32) test_svreinterpret_s32_bf16(TYPE(svbfloat16) op) {
183+
TYPE(svint32) test_svreinterpret_s32_bf16(TYPE(svbfloat16) op) MODE_ATTR {
173184
return SVE_ACLE_FUNC(svreinterpret_s32, _bf16)(op);
174185
}
175186
// CHECK-LABEL: @test_svreinterpret_s64_bf16(
@@ -212,7 +223,7 @@ TYPE(svint32) test_svreinterpret_s32_bf16(TYPE(svbfloat16) op) {
212223
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 8 x i64>
213224
// CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
214225
//
215-
TYPE(svint64) test_svreinterpret_s64_bf16(TYPE(svbfloat16) op) {
226+
TYPE(svint64) test_svreinterpret_s64_bf16(TYPE(svbfloat16) op) MODE_ATTR {
216227
return SVE_ACLE_FUNC(svreinterpret_s64, _bf16)(op);
217228
}
218229

@@ -256,7 +267,7 @@ TYPE(svint64) test_svreinterpret_s64_bf16(TYPE(svbfloat16) op) {
256267
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 64 x i8>
257268
// CPP-TUPLE4-NEXT: ret <vscale x 64 x i8> [[TMP0]]
258269
//
259-
TYPE(svuint8) test_svreinterpret_u8_bf16(TYPE(svbfloat16) op) {
270+
TYPE(svuint8) test_svreinterpret_u8_bf16(TYPE(svbfloat16) op) MODE_ATTR {
260271
return SVE_ACLE_FUNC(svreinterpret_u8, _bf16)(op);
261272
}
262273

@@ -300,7 +311,7 @@ TYPE(svuint8) test_svreinterpret_u8_bf16(TYPE(svbfloat16) op) {
300311
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 32 x i16>
301312
// CPP-TUPLE4-NEXT: ret <vscale x 32 x i16> [[TMP0]]
302313
//
303-
TYPE(svuint16) test_svreinterpret_u16_bf16(TYPE(svbfloat16) op) {
314+
TYPE(svuint16) test_svreinterpret_u16_bf16(TYPE(svbfloat16) op) MODE_ATTR {
304315
return SVE_ACLE_FUNC(svreinterpret_u16, _bf16)(op);
305316
}
306317

@@ -344,7 +355,7 @@ TYPE(svuint16) test_svreinterpret_u16_bf16(TYPE(svbfloat16) op) {
344355
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 16 x i32>
345356
// CPP-TUPLE4-NEXT: ret <vscale x 16 x i32> [[TMP0]]
346357
//
347-
TYPE(svuint32) test_svreinterpret_u32_bf16(TYPE(svbfloat16) op) {
358+
TYPE(svuint32) test_svreinterpret_u32_bf16(TYPE(svbfloat16) op) MODE_ATTR {
348359
return SVE_ACLE_FUNC(svreinterpret_u32, _bf16)(op);
349360
}
350361

@@ -388,7 +399,7 @@ TYPE(svuint32) test_svreinterpret_u32_bf16(TYPE(svbfloat16) op) {
388399
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 8 x i64>
389400
// CPP-TUPLE4-NEXT: ret <vscale x 8 x i64> [[TMP0]]
390401
//
391-
TYPE(svuint64) test_svreinterpret_u64_bf16(TYPE(svbfloat16) op) {
402+
TYPE(svuint64) test_svreinterpret_u64_bf16(TYPE(svbfloat16) op) MODE_ATTR {
392403
return SVE_ACLE_FUNC(svreinterpret_u64, _bf16)(op);
393404
}
394405

@@ -432,7 +443,7 @@ TYPE(svuint64) test_svreinterpret_u64_bf16(TYPE(svbfloat16) op) {
432443
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x bfloat>
433444
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
434445
//
435-
TYPE(svbfloat16) test_svreinterpret_bf16_s8(TYPE(svint8) op) {
446+
TYPE(svbfloat16) test_svreinterpret_bf16_s8(TYPE(svint8) op) MODE_ATTR {
436447
return SVE_ACLE_FUNC(svreinterpret_bf16, _s8)(op);
437448
}
438449

@@ -476,7 +487,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_s8(TYPE(svint8) op) {
476487
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 32 x bfloat>
477488
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
478489
//
479-
TYPE(svbfloat16) test_svreinterpret_bf16_s16(TYPE(svint16) op) {
490+
TYPE(svbfloat16) test_svreinterpret_bf16_s16(TYPE(svint16) op) MODE_ATTR {
480491
return SVE_ACLE_FUNC(svreinterpret_bf16, _s16)(op);
481492
}
482493

@@ -520,7 +531,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_s16(TYPE(svint16) op) {
520531
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x bfloat>
521532
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
522533
//
523-
TYPE(svbfloat16) test_svreinterpret_bf16_s32(TYPE(svint32) op) {
534+
TYPE(svbfloat16) test_svreinterpret_bf16_s32(TYPE(svint32) op) MODE_ATTR {
524535
return SVE_ACLE_FUNC(svreinterpret_bf16, _s32)(op);
525536
}
526537

@@ -564,7 +575,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_s32(TYPE(svint32) op) {
564575
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x bfloat>
565576
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
566577
//
567-
TYPE(svbfloat16) test_svreinterpret_bf16_s64(TYPE(svint64) op) {
578+
TYPE(svbfloat16) test_svreinterpret_bf16_s64(TYPE(svint64) op) MODE_ATTR {
568579
return SVE_ACLE_FUNC(svreinterpret_bf16, _s64)(op);
569580
}
570581

@@ -608,7 +619,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_s64(TYPE(svint64) op) {
608619
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 64 x i8> [[OP:%.*]] to <vscale x 32 x bfloat>
609620
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
610621
//
611-
TYPE(svbfloat16) test_svreinterpret_bf16_u8(TYPE(svuint8) op) {
622+
TYPE(svbfloat16) test_svreinterpret_bf16_u8(TYPE(svuint8) op) MODE_ATTR {
612623
return SVE_ACLE_FUNC(svreinterpret_bf16, _u8)(op);
613624
}
614625

@@ -652,7 +663,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_u8(TYPE(svuint8) op) {
652663
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x i16> [[OP:%.*]] to <vscale x 32 x bfloat>
653664
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
654665
//
655-
TYPE(svbfloat16) test_svreinterpret_bf16_u16(TYPE(svuint16) op) {
666+
TYPE(svbfloat16) test_svreinterpret_bf16_u16(TYPE(svuint16) op) MODE_ATTR {
656667
return SVE_ACLE_FUNC(svreinterpret_bf16, _u16)(op);
657668
}
658669

@@ -696,7 +707,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_u16(TYPE(svuint16) op) {
696707
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x i32> [[OP:%.*]] to <vscale x 32 x bfloat>
697708
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
698709
//
699-
TYPE(svbfloat16) test_svreinterpret_bf16_u32(TYPE(svuint32) op) {
710+
TYPE(svbfloat16) test_svreinterpret_bf16_u32(TYPE(svuint32) op) MODE_ATTR {
700711
return SVE_ACLE_FUNC(svreinterpret_bf16, _u32)(op);
701712
}
702713

@@ -740,7 +751,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_u32(TYPE(svuint32) op) {
740751
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x i64> [[OP:%.*]] to <vscale x 32 x bfloat>
741752
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
742753
//
743-
TYPE(svbfloat16) test_svreinterpret_bf16_u64(TYPE(svuint64) op) {
754+
TYPE(svbfloat16) test_svreinterpret_bf16_u64(TYPE(svuint64) op) MODE_ATTR {
744755
return SVE_ACLE_FUNC(svreinterpret_bf16, _u64)(op);
745756
}
746757

@@ -776,7 +787,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_u64(TYPE(svuint64) op) {
776787
// CPP-TUPLE4-NEXT: entry:
777788
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[OP:%.*]]
778789
//
779-
TYPE(svbfloat16) test_svreinterpret_bf16_bf16(TYPE(svbfloat16) op) {
790+
TYPE(svbfloat16) test_svreinterpret_bf16_bf16(TYPE(svbfloat16) op) MODE_ATTR {
780791
return SVE_ACLE_FUNC(svreinterpret_bf16, _bf16)(op);
781792
}
782793

@@ -820,7 +831,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_bf16(TYPE(svbfloat16) op) {
820831
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x half> [[OP:%.*]] to <vscale x 32 x bfloat>
821832
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
822833
//
823-
TYPE(svbfloat16) test_svreinterpret_bf16_f16(TYPE(svfloat16) op) {
834+
TYPE(svbfloat16) test_svreinterpret_bf16_f16(TYPE(svfloat16) op) MODE_ATTR {
824835
return SVE_ACLE_FUNC(svreinterpret_bf16, _f16)(op);
825836
}
826837

@@ -864,7 +875,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_f16(TYPE(svfloat16) op) {
864875
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 16 x float> [[OP:%.*]] to <vscale x 32 x bfloat>
865876
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
866877
//
867-
TYPE(svbfloat16) test_svreinterpret_bf16_f32(TYPE(svfloat32) op) {
878+
TYPE(svbfloat16) test_svreinterpret_bf16_f32(TYPE(svfloat32) op) MODE_ATTR {
868879
return SVE_ACLE_FUNC(svreinterpret_bf16, _f32)(op);
869880
}
870881

@@ -908,7 +919,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_f32(TYPE(svfloat32) op) {
908919
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 8 x double> [[OP:%.*]] to <vscale x 32 x bfloat>
909920
// CPP-TUPLE4-NEXT: ret <vscale x 32 x bfloat> [[TMP0]]
910921
//
911-
TYPE(svbfloat16) test_svreinterpret_bf16_f64(TYPE(svfloat64) op) {
922+
TYPE(svbfloat16) test_svreinterpret_bf16_f64(TYPE(svfloat64) op) MODE_ATTR {
912923
return SVE_ACLE_FUNC(svreinterpret_bf16, _f64)(op);
913924
}
914925

@@ -952,7 +963,7 @@ TYPE(svbfloat16) test_svreinterpret_bf16_f64(TYPE(svfloat64) op) {
952963
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 16 x float>
953964
// CPP-TUPLE4-NEXT: ret <vscale x 16 x float> [[TMP0]]
954965
//
955-
TYPE(svfloat32) test_svreinterpret_f32_bf16(TYPE(svbfloat16) op) {
966+
TYPE(svfloat32) test_svreinterpret_f32_bf16(TYPE(svbfloat16) op) MODE_ATTR {
956967
return SVE_ACLE_FUNC(svreinterpret_f32, _bf16)(op);
957968
}
958969

@@ -996,7 +1007,7 @@ TYPE(svfloat32) test_svreinterpret_f32_bf16(TYPE(svbfloat16) op) {
9961007
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 32 x half>
9971008
// CPP-TUPLE4-NEXT: ret <vscale x 32 x half> [[TMP0]]
9981009
//
999-
TYPE(svfloat16) test_svreinterpret_f16_bf16(TYPE(svbfloat16) op) {
1010+
TYPE(svfloat16) test_svreinterpret_f16_bf16(TYPE(svbfloat16) op) MODE_ATTR {
10001011
return SVE_ACLE_FUNC(svreinterpret_f16, _bf16)(op);
10011012
}
10021013

@@ -1040,6 +1051,6 @@ TYPE(svfloat16) test_svreinterpret_f16_bf16(TYPE(svbfloat16) op) {
10401051
// CPP-TUPLE4-NEXT: [[TMP0:%.*]] = bitcast <vscale x 32 x bfloat> [[OP:%.*]] to <vscale x 8 x double>
10411052
// CPP-TUPLE4-NEXT: ret <vscale x 8 x double> [[TMP0]]
10421053
//
1043-
TYPE(svfloat64) test_svreinterpret_f64_bf16(TYPE(svbfloat16) op) {
1054+
TYPE(svfloat64) test_svreinterpret_f64_bf16(TYPE(svbfloat16) op) MODE_ATTR {
10441055
return SVE_ACLE_FUNC(svreinterpret_f64, _bf16)(op);
10451056
}

0 commit comments

Comments
 (0)