Skip to content

Commit 342384c

Browse files
authored
Revert "[AArch64][SME] Warn when using a streaming builtin from a non-streaming function" (#75449)
Reverts #74064
1 parent 3e8b175 commit 342384c

19 files changed

+829
-1066
lines changed

clang/include/clang/Basic/CMakeLists.txt

-6
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,6 @@ clang_tablegen(arm_sve_typeflags.inc -gen-arm-sve-typeflags
8888
clang_tablegen(arm_sve_sema_rangechecks.inc -gen-arm-sve-sema-rangechecks
8989
SOURCE arm_sve.td
9090
TARGET ClangARMSveSemaRangeChecks)
91-
clang_tablegen(arm_sve_streaming_attrs.inc -gen-arm-sve-streaming-attrs
92-
SOURCE arm_sve.td
93-
TARGET ClangARMSveStreamingAttrs)
9491
clang_tablegen(arm_sme_builtins.inc -gen-arm-sme-builtins
9592
SOURCE arm_sme.td
9693
TARGET ClangARMSmeBuiltins)
@@ -100,9 +97,6 @@ clang_tablegen(arm_sme_builtin_cg.inc -gen-arm-sme-builtin-codegen
10097
clang_tablegen(arm_sme_sema_rangechecks.inc -gen-arm-sme-sema-rangechecks
10198
SOURCE arm_sme.td
10299
TARGET ClangARMSmeSemaRangeChecks)
103-
clang_tablegen(arm_sme_streaming_attrs.inc -gen-arm-sme-streaming-attrs
104-
SOURCE arm_sme.td
105-
TARGET ClangARMSmeStreamingAttrs)
106100
clang_tablegen(arm_cde_builtins.inc -gen-arm-cde-builtin-def
107101
SOURCE arm_cde.td
108102
TARGET ClangARMCdeBuiltinsDef)

clang/include/clang/Basic/arm_sve.td

+582-582
Large diffs are not rendered by default.

clang/include/clang/Sema/Sema.h

-1
Original file line numberDiff line numberDiff line change
@@ -13851,7 +13851,6 @@ class Sema final {
1385113851
bool CheckSVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall);
1385213852
bool ParseSVEImmChecks(CallExpr *TheCall,
1385313853
SmallVector<std::tuple<int, int, int>, 3> &ImmChecks);
13854-
bool CheckSMEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall);
1385513854
bool CheckCDEBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID,
1385613855
CallExpr *TheCall);
1385713856
bool CheckARMCoprocessorImmediate(const TargetInfo &TI, const Expr *CoprocArg,

clang/lib/Sema/SemaChecking.cpp

+4-52
Original file line numberDiff line numberDiff line change
@@ -3156,6 +3156,7 @@ static void checkArmStreamingBuiltin(Sema &S, CallExpr *TheCall,
31563156
const FunctionDecl *FD,
31573157
ArmStreamingType BuiltinType) {
31583158
ArmStreamingType FnType = getArmStreamingFnType(FD);
3159+
31593160
if (FnType == ArmStreaming && BuiltinType == ArmNonStreaming) {
31603161
S.Diag(TheCall->getBeginLoc(), diag::warn_attribute_arm_sm_incompat_builtin)
31613162
<< TheCall->getSourceRange() << "streaming";
@@ -3167,58 +3168,9 @@ static void checkArmStreamingBuiltin(Sema &S, CallExpr *TheCall,
31673168
<< TheCall->getSourceRange() << "streaming compatible";
31683169
return;
31693170
}
3170-
3171-
if (FnType == ArmNonStreaming && BuiltinType == ArmStreaming) {
3172-
S.Diag(TheCall->getBeginLoc(), diag::warn_attribute_arm_sm_incompat_builtin)
3173-
<< TheCall->getSourceRange() << "non-streaming";
3174-
}
3175-
}
3176-
3177-
bool Sema::CheckSMEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {
3178-
if (const FunctionDecl *FD = getCurFunctionDecl()) {
3179-
ArmStreamingType BuiltinType;
3180-
3181-
switch (BuiltinID) {
3182-
default:
3183-
BuiltinType = ArmNonStreaming;
3184-
break;
3185-
#define GET_SME_STREAMING_ATTRS
3186-
#include "clang/Basic/arm_sme_streaming_attrs.inc"
3187-
#undef GET_SME_STREAMING_ATTRS
3188-
}
3189-
3190-
if (BuiltinType)
3191-
checkArmStreamingBuiltin(*this, TheCall, FD, BuiltinType);
3192-
}
3193-
3194-
// Range check SME intrinsics that take immediate values.
3195-
SmallVector<std::tuple<int, int, int>, 3> ImmChecks;
3196-
3197-
switch (BuiltinID) {
3198-
default:
3199-
return false;
3200-
#define GET_SME_IMMEDIATE_CHECK
3201-
#include "clang/Basic/arm_sme_sema_rangechecks.inc"
3202-
#undef GET_SME_IMMEDIATE_CHECK
3203-
}
3204-
3205-
return ParseSVEImmChecks(TheCall, ImmChecks);
32063171
}
32073172

32083173
bool Sema::CheckSVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {
3209-
if (const FunctionDecl *FD = getCurFunctionDecl()) {
3210-
std::optional<ArmStreamingType> BuiltinType;
3211-
3212-
switch (BuiltinID) {
3213-
default:
3214-
break;
3215-
#define GET_SVE_STREAMING_ATTRS
3216-
#include "clang/Basic/arm_sve_streaming_attrs.inc"
3217-
#undef GET_SVE_STREAMING_ATTRS
3218-
}
3219-
if (BuiltinType)
3220-
checkArmStreamingBuiltin(*this, TheCall, FD, *BuiltinType);
3221-
}
32223174
// Range check SVE intrinsics that take immediate values.
32233175
SmallVector<std::tuple<int, int, int>, 3> ImmChecks;
32243176

@@ -3228,6 +3180,9 @@ bool Sema::CheckSVEBuiltinFunctionCall(unsigned BuiltinID, CallExpr *TheCall) {
32283180
#define GET_SVE_IMMEDIATE_CHECK
32293181
#include "clang/Basic/arm_sve_sema_rangechecks.inc"
32303182
#undef GET_SVE_IMMEDIATE_CHECK
3183+
#define GET_SME_IMMEDIATE_CHECK
3184+
#include "clang/Basic/arm_sme_sema_rangechecks.inc"
3185+
#undef GET_SME_IMMEDIATE_CHECK
32313186
}
32323187

32333188
return ParseSVEImmChecks(TheCall, ImmChecks);
@@ -3614,9 +3569,6 @@ bool Sema::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI,
36143569
if (CheckSVEBuiltinFunctionCall(BuiltinID, TheCall))
36153570
return true;
36163571

3617-
if (CheckSMEBuiltinFunctionCall(BuiltinID, TheCall))
3618-
return true;
3619-
36203572
// For intrinsics which take an immediate value as part of the instruction,
36213573
// range check them here.
36223574
unsigned i = 0, l = 0, u = 0;

clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i32.c

+8-8
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv4i32(i32 0, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
3131
// CHECK-CXX-NEXT: ret void
3232
//
33-
void test_svaddha_za32_u32(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_streaming {
33+
void test_svaddha_za32_u32(svbool_t pn, svbool_t pm, svuint32_t zn) {
3434
SME_ACLE_FUNC(svaddha_za32, _u32, _m)(0, pn, pm, zn);
3535
}
3636

@@ -50,7 +50,7 @@ void test_svaddha_za32_u32(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_stream
5050
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv4i32(i32 3, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
5151
// CHECK-CXX-NEXT: ret void
5252
//
53-
void test_svaddha_za32_u32_1(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_streaming {
53+
void test_svaddha_za32_u32_1(svbool_t pn, svbool_t pm, svuint32_t zn) {
5454
SME_ACLE_FUNC(svaddha_za32, _u32, _m)(3, pn, pm, zn);
5555
}
5656

@@ -70,7 +70,7 @@ void test_svaddha_za32_u32_1(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_stre
7070
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv4i32(i32 0, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
7171
// CHECK-CXX-NEXT: ret void
7272
//
73-
void test_svaddha_za32_s32(svbool_t pn, svbool_t pm, svint32_t zn) __arm_streaming {
73+
void test_svaddha_za32_s32(svbool_t pn, svbool_t pm, svint32_t zn) {
7474
SME_ACLE_FUNC(svaddha_za32, _s32, _m)(0, pn, pm, zn);
7575
}
7676

@@ -90,7 +90,7 @@ void test_svaddha_za32_s32(svbool_t pn, svbool_t pm, svint32_t zn) __arm_streami
9090
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv4i32(i32 3, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
9191
// CHECK-CXX-NEXT: ret void
9292
//
93-
void test_svaddha_za32_s32_1(svbool_t pn, svbool_t pm, svint32_t zn) __arm_streaming {
93+
void test_svaddha_za32_s32_1(svbool_t pn, svbool_t pm, svint32_t zn) {
9494
SME_ACLE_FUNC(svaddha_za32, _s32, _m)(3, pn, pm, zn);
9595
}
9696

@@ -110,7 +110,7 @@ void test_svaddha_za32_s32_1(svbool_t pn, svbool_t pm, svint32_t zn) __arm_strea
110110
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv4i32(i32 0, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
111111
// CHECK-CXX-NEXT: ret void
112112
//
113-
void test_svaddva_za32_u32(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_streaming {
113+
void test_svaddva_za32_u32(svbool_t pn, svbool_t pm, svuint32_t zn) {
114114
SME_ACLE_FUNC(svaddva_za32, _u32, _m)(0, pn, pm, zn);
115115
}
116116

@@ -130,7 +130,7 @@ void test_svaddva_za32_u32(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_stream
130130
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv4i32(i32 3, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
131131
// CHECK-CXX-NEXT: ret void
132132
//
133-
void test_svaddva_za32_u32_1(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_streaming {
133+
void test_svaddva_za32_u32_1(svbool_t pn, svbool_t pm, svuint32_t zn) {
134134
SME_ACLE_FUNC(svaddva_za32, _u32, _m)(3, pn, pm, zn);
135135
}
136136

@@ -150,7 +150,7 @@ void test_svaddva_za32_u32_1(svbool_t pn, svbool_t pm, svuint32_t zn) __arm_stre
150150
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv4i32(i32 0, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
151151
// CHECK-CXX-NEXT: ret void
152152
//
153-
void test_svaddva_za32_s32(svbool_t pn, svbool_t pm, svint32_t zn) __arm_streaming {
153+
void test_svaddva_za32_s32(svbool_t pn, svbool_t pm, svint32_t zn) {
154154
SME_ACLE_FUNC(svaddva_za32, _s32, _m)(0, pn, pm, zn);
155155
}
156156

@@ -170,7 +170,7 @@ void test_svaddva_za32_s32(svbool_t pn, svbool_t pm, svint32_t zn) __arm_streami
170170
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv4i32(i32 3, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x i32> [[ZN]])
171171
// CHECK-CXX-NEXT: ret void
172172
//
173-
void test_svaddva_za32_s32_1(svbool_t pn, svbool_t pm, svint32_t zn) __arm_streaming {
173+
void test_svaddva_za32_s32_1(svbool_t pn, svbool_t pm, svint32_t zn) {
174174
SME_ACLE_FUNC(svaddva_za32, _s32, _m)(3, pn, pm, zn);
175175
}
176176
//// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:

clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c

+8-8
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv2i64(i32 0, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
3131
// CHECK-CXX-NEXT: ret void
3232
//
33-
void test_svaddha_za64_u64(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_streaming {
33+
void test_svaddha_za64_u64(svbool_t pn, svbool_t pm, svuint64_t zn) {
3434
SME_ACLE_FUNC(svaddha_za64, _u64, _m)(0, pn, pm, zn);
3535
}
3636

@@ -50,7 +50,7 @@ void test_svaddha_za64_u64(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_stream
5050
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv2i64(i32 7, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
5151
// CHECK-CXX-NEXT: ret void
5252
//
53-
void test_svaddha_za64_u64_1(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_streaming {
53+
void test_svaddha_za64_u64_1(svbool_t pn, svbool_t pm, svuint64_t zn) {
5454
SME_ACLE_FUNC(svaddha_za64, _u64, _m)(7, pn, pm, zn);
5555
}
5656

@@ -70,7 +70,7 @@ void test_svaddha_za64_u64_1(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_stre
7070
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv2i64(i32 0, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
7171
// CHECK-CXX-NEXT: ret void
7272
//
73-
void test_svaddha_za64_s64(svbool_t pn, svbool_t pm, svint64_t zn) __arm_streaming {
73+
void test_svaddha_za64_s64(svbool_t pn, svbool_t pm, svint64_t zn) {
7474
SME_ACLE_FUNC(svaddha_za64, _s64, _m)(0, pn, pm, zn);
7575
}
7676

@@ -90,7 +90,7 @@ void test_svaddha_za64_s64(svbool_t pn, svbool_t pm, svint64_t zn) __arm_streami
9090
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addha.nxv2i64(i32 7, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
9191
// CHECK-CXX-NEXT: ret void
9292
//
93-
void test_svaddha_za64_s64_1(svbool_t pn, svbool_t pm, svint64_t zn) __arm_streaming {
93+
void test_svaddha_za64_s64_1(svbool_t pn, svbool_t pm, svint64_t zn) {
9494
SME_ACLE_FUNC(svaddha_za64, _s64, _m)(7, pn, pm, zn);
9595
}
9696

@@ -110,7 +110,7 @@ void test_svaddha_za64_s64_1(svbool_t pn, svbool_t pm, svint64_t zn) __arm_strea
110110
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv2i64(i32 0, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
111111
// CHECK-CXX-NEXT: ret void
112112
//
113-
void test_svaddva_za64_u64(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_streaming {
113+
void test_svaddva_za64_u64(svbool_t pn, svbool_t pm, svuint64_t zn) {
114114
SME_ACLE_FUNC(svaddva_za64, _u64, _m)(0, pn, pm, zn);
115115
}
116116

@@ -130,7 +130,7 @@ void test_svaddva_za64_u64(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_stream
130130
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv2i64(i32 7, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
131131
// CHECK-CXX-NEXT: ret void
132132
//
133-
void test_svaddva_za64_u64_1(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_streaming {
133+
void test_svaddva_za64_u64_1(svbool_t pn, svbool_t pm, svuint64_t zn) {
134134
SME_ACLE_FUNC(svaddva_za64, _u64, _m)(7, pn, pm, zn);
135135
}
136136

@@ -150,7 +150,7 @@ void test_svaddva_za64_u64_1(svbool_t pn, svbool_t pm, svuint64_t zn) __arm_stre
150150
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv2i64(i32 0, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
151151
// CHECK-CXX-NEXT: ret void
152152
//
153-
void test_svaddva_za64_s64(svbool_t pn, svbool_t pm, svint64_t zn) __arm_streaming {
153+
void test_svaddva_za64_s64(svbool_t pn, svbool_t pm, svint64_t zn) {
154154
SME_ACLE_FUNC(svaddva_za64, _s64, _m)(0, pn, pm, zn);
155155
}
156156

@@ -170,7 +170,7 @@ void test_svaddva_za64_s64(svbool_t pn, svbool_t pm, svint64_t zn) __arm_streami
170170
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.addva.nxv2i64(i32 7, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x i64> [[ZN]])
171171
// CHECK-CXX-NEXT: ret void
172172
//
173-
void test_svaddva_za64_s64_1(svbool_t pn, svbool_t pm, svint64_t zn) __arm_streaming {
173+
void test_svaddva_za64_s64_1(svbool_t pn, svbool_t pm, svint64_t zn) {
174174
SME_ACLE_FUNC(svaddva_za64, _s64, _m)(7, pn, pm, zn);
175175
}
176176
//// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:

clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za32.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.smopa.wide.nxv16i8(i32 0, <vscale x 16 x i1> [[PN]], <vscale x 16 x i1> [[PM]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
2727
// CHECK-CXX-NEXT: ret void
2828
//
29-
void test_svmopa_za32_s8(svbool_t pn, svbool_t pm, svint8_t zn, svint8_t zm) __arm_streaming {
29+
void test_svmopa_za32_s8(svbool_t pn, svbool_t pm, svint8_t zn, svint8_t zm) {
3030
SME_ACLE_FUNC(svmopa_za32, _s8, _m)(0, pn, pm, zn, zm);
3131
}
3232

@@ -42,7 +42,7 @@ void test_svmopa_za32_s8(svbool_t pn, svbool_t pm, svint8_t zn, svint8_t zm) __a
4242
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.umopa.wide.nxv16i8(i32 0, <vscale x 16 x i1> [[PN]], <vscale x 16 x i1> [[PM]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
4343
// CHECK-CXX-NEXT: ret void
4444
//
45-
void test_svmopa_za32_u8(svbool_t pn, svbool_t pm, svuint8_t zn, svuint8_t zm) __arm_streaming {
45+
void test_svmopa_za32_u8(svbool_t pn, svbool_t pm, svuint8_t zn, svuint8_t zm) {
4646
SME_ACLE_FUNC(svmopa_za32, _u8, _m)(0, pn, pm, zn, zm);
4747
}
4848

@@ -62,7 +62,7 @@ void test_svmopa_za32_u8(svbool_t pn, svbool_t pm, svuint8_t zn, svuint8_t zm) _
6262
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.mopa.wide.nxv8bf16(i32 0, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x i1> [[TMP1]], <vscale x 8 x bfloat> [[ZN]], <vscale x 8 x bfloat> [[ZM]])
6363
// CHECK-CXX-NEXT: ret void
6464
//
65-
void test_svmopa_za32_bf16(svbool_t pn, svbool_t pm, svbfloat16_t zn, svbfloat16_t zm) __arm_streaming {
65+
void test_svmopa_za32_bf16(svbool_t pn, svbool_t pm, svbfloat16_t zn, svbfloat16_t zm) {
6666
SME_ACLE_FUNC(svmopa_za32, _bf16, _m)(0, pn, pm, zn, zm);
6767
}
6868

@@ -82,7 +82,7 @@ void test_svmopa_za32_bf16(svbool_t pn, svbool_t pm, svbfloat16_t zn, svbfloat16
8282
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.mopa.wide.nxv8f16(i32 1, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x i1> [[TMP1]], <vscale x 8 x half> [[ZN]], <vscale x 8 x half> [[ZM]])
8383
// CHECK-CXX-NEXT: ret void
8484
//
85-
void test_svmopa_za32_f16(svbool_t pn, svbool_t pm, svfloat16_t zn, svfloat16_t zm) __arm_streaming {
85+
void test_svmopa_za32_f16(svbool_t pn, svbool_t pm, svfloat16_t zn, svfloat16_t zm) {
8686
SME_ACLE_FUNC(svmopa_za32, _f16, _m)(1, pn, pm, zn, zm);
8787
}
8888

@@ -102,7 +102,7 @@ void test_svmopa_za32_f16(svbool_t pn, svbool_t pm, svfloat16_t zn, svfloat16_t
102102
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.mopa.nxv4f32(i32 1, <vscale x 4 x i1> [[TMP0]], <vscale x 4 x i1> [[TMP1]], <vscale x 4 x float> [[ZN]], <vscale x 4 x float> [[ZM]])
103103
// CHECK-CXX-NEXT: ret void
104104
//
105-
void test_svmopa_za32_f32(svbool_t pn, svbool_t pm, svfloat32_t zn, svfloat32_t zm) __arm_streaming {
105+
void test_svmopa_za32_f32(svbool_t pn, svbool_t pm, svfloat32_t zn, svfloat32_t zm) {
106106
SME_ACLE_FUNC(svmopa_za32, _f32, _m)(1, pn, pm, zn, zm);
107107
}
108108

@@ -118,7 +118,7 @@ void test_svmopa_za32_f32(svbool_t pn, svbool_t pm, svfloat32_t zn, svfloat32_t
118118
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.sumopa.wide.nxv16i8(i32 0, <vscale x 16 x i1> [[PN]], <vscale x 16 x i1> [[PM]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
119119
// CHECK-CXX-NEXT: ret void
120120
//
121-
void test_svsumopa_za32_s8(svbool_t pn, svbool_t pm, svint8_t zn, svuint8_t zm) __arm_streaming {
121+
void test_svsumopa_za32_s8(svbool_t pn, svbool_t pm, svint8_t zn, svuint8_t zm) {
122122
SME_ACLE_FUNC(svsumopa_za32, _s8, _m)(0, pn, pm, zn, zm);
123123
}
124124

@@ -134,7 +134,7 @@ void test_svsumopa_za32_s8(svbool_t pn, svbool_t pm, svint8_t zn, svuint8_t zm)
134134
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.usmopa.wide.nxv16i8(i32 0, <vscale x 16 x i1> [[PN]], <vscale x 16 x i1> [[PM]], <vscale x 16 x i8> [[ZN]], <vscale x 16 x i8> [[ZM]])
135135
// CHECK-CXX-NEXT: ret void
136136
//
137-
void test_svusmopa_za32_u8(svbool_t pn, svbool_t pm, svuint8_t zn, svint8_t zm) __arm_streaming {
137+
void test_svusmopa_za32_u8(svbool_t pn, svbool_t pm, svuint8_t zn, svint8_t zm) {
138138
SME_ACLE_FUNC(svusmopa_za32, _u8, _m)(0, pn, pm, zn, zm);
139139
}
140140
//// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:

clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.smopa.wide.nxv8i16(i32 7, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x i1> [[TMP1]], <vscale x 8 x i16> [[ZN]], <vscale x 8 x i16> [[ZM]])
3131
// CHECK-CXX-NEXT: ret void
3232
//
33-
void test_svmopa_za64_s16(svbool_t pn, svbool_t pm, svint16_t zn, svint16_t zm) __arm_streaming {
33+
void test_svmopa_za64_s16(svbool_t pn, svbool_t pm, svint16_t zn, svint16_t zm) {
3434
SME_ACLE_FUNC(svmopa_za64, _s16, _m)(7, pn, pm, zn, zm);
3535
}
3636

@@ -50,7 +50,7 @@ void test_svmopa_za64_s16(svbool_t pn, svbool_t pm, svint16_t zn, svint16_t zm)
5050
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.umopa.wide.nxv8i16(i32 0, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x i1> [[TMP1]], <vscale x 8 x i16> [[ZN]], <vscale x 8 x i16> [[ZM]])
5151
// CHECK-CXX-NEXT: ret void
5252
//
53-
void test_svmopa_za64_u16(svbool_t pn, svbool_t pm, svuint16_t zn, svuint16_t zm) __arm_streaming {
53+
void test_svmopa_za64_u16(svbool_t pn, svbool_t pm, svuint16_t zn, svuint16_t zm) {
5454
SME_ACLE_FUNC(svmopa_za64, _u16, _m)(0, pn, pm, zn, zm);
5555
}
5656

@@ -70,7 +70,7 @@ void test_svmopa_za64_u16(svbool_t pn, svbool_t pm, svuint16_t zn, svuint16_t zm
7070
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.mopa.nxv2f64(i32 7, <vscale x 2 x i1> [[TMP0]], <vscale x 2 x i1> [[TMP1]], <vscale x 2 x double> [[ZN]], <vscale x 2 x double> [[ZM]])
7171
// CHECK-CXX-NEXT: ret void
7272
//
73-
void test_svmopa_za64_f64(svbool_t pn, svbool_t pm, svfloat64_t zn, svfloat64_t zm) __arm_streaming {
73+
void test_svmopa_za64_f64(svbool_t pn, svbool_t pm, svfloat64_t zn, svfloat64_t zm) {
7474
SME_ACLE_FUNC(svmopa_za64, _f64, _m)(7, pn, pm, zn, zm);
7575
}
7676

@@ -90,7 +90,7 @@ void test_svmopa_za64_f64(svbool_t pn, svbool_t pm, svfloat64_t zn, svfloat64_t
9090
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.sumopa.wide.nxv8i16(i32 0, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x i1> [[TMP1]], <vscale x 8 x i16> [[ZN]], <vscale x 8 x i16> [[ZM]])
9191
// CHECK-CXX-NEXT: ret void
9292
//
93-
void test_svsumopa_za64_s16(svbool_t pn, svbool_t pm, svint16_t zn, svuint16_t zm) __arm_streaming {
93+
void test_svsumopa_za64_s16(svbool_t pn, svbool_t pm, svint16_t zn, svuint16_t zm) {
9494
SME_ACLE_FUNC(svsumopa_za64, _s16, _m)(0, pn, pm, zn, zm);
9595
}
9696

@@ -110,7 +110,7 @@ void test_svsumopa_za64_s16(svbool_t pn, svbool_t pm, svint16_t zn, svuint16_t z
110110
// CHECK-CXX-NEXT: tail call void @llvm.aarch64.sme.usmopa.wide.nxv8i16(i32 7, <vscale x 8 x i1> [[TMP0]], <vscale x 8 x i1> [[TMP1]], <vscale x 8 x i16> [[ZN]], <vscale x 8 x i16> [[ZM]])
111111
// CHECK-CXX-NEXT: ret void
112112
//
113-
void test_svusmopa_za64_u16(svbool_t pn, svbool_t pm, svuint16_t zn, svint16_t zm) __arm_streaming {
113+
void test_svusmopa_za64_u16(svbool_t pn, svbool_t pm, svuint16_t zn, svint16_t zm) {
114114
SME_ACLE_FUNC(svusmopa_za64, _u16, _m)(7, pn, pm, zn, zm);
115115
}
116116
//// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:

0 commit comments

Comments
 (0)