Skip to content

Commit 02f46d7

Browse files
Revert "[Clang][LLVM][AArch64] Add intrinsic for LUTI4 SME2 instruction (#97755)"
Going to revert to Fix test in clang as it is failing This reverts commit 445d8b2.
1 parent b7ea264 commit 02f46d7

File tree

7 files changed

+4
-132
lines changed

7 files changed

+4
-132
lines changed

clang/include/clang/Basic/arm_sme.td

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -817,9 +817,4 @@ multiclass ZAReadzArray<string vg_num>{
817817

818818
defm SVREADZ_VG2 : ZAReadzArray<"2">;
819819
defm SVREADZ_VG4 : ZAReadzArray<"4">;
820-
821-
let SMETargetGuard = "sme2,sme-lutv2" in {
822-
def SVLUTI4_ZT_X4 : SInst<"svluti4_zt_{d}_x4", "4i2.u", "cUc", MergeNone, "aarch64_sme_luti4_zt_x4", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>]>;
823-
}
824-
825820
} // let SVETargetGuard = InvalidMode

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

Lines changed: 0 additions & 82 deletions
This file was deleted.

clang/test/Sema/aarch64-sme2-intrinsics/acle_sme2_imm.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,3 @@ void test_svdot_multi_za32_bad_lane(uint32_t slice_base, svuint16_t z_u16,
350350
svsudot_lane_za32_s8_vg1x2(slice_base, z_s8x2, z_u8, 4); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
351351
svsudot_lane_za32_s8_vg1x4(slice_base, z_s8x4, z_u8, 4); // expected-error {{argument value 4 is outside the valid range [0, 3]}}
352352
}
353-
354-
void test_luti4_zt_x4(svuint8x2_t op) __arm_streaming __arm_in("zt0") {
355-
// Check Zt tile 0
356-
svluti4_zt_u8_x4(1, op); // expected-error {{argument value 1 is outside the valid range [0, 0]}}
357-
}

llvm/include/llvm/IR/IntrinsicsAArch64.td

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3762,12 +3762,6 @@ let TargetPrefix = "aarch64" in {
37623762
: DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>],
37633763
[llvm_i32_ty, llvm_nxv16i8_ty, llvm_i32_ty],
37643764
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrReadMem]>;
3765-
3766-
def int_aarch64_sme_luti4_zt_x4
3767-
: DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>],
3768-
[llvm_i32_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty],
3769-
[ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects]>;
3770-
37713765
}
37723766

37733767
// SVE2.1 - ZIPQ1, ZIPQ2, UZPQ1, UZPQ2

llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ class AArch64DAGToDAGISel : public SelectionDAGISel {
401401
}
402402

403403
void SelectMultiVectorLuti(SDNode *Node, unsigned NumOutVecs, unsigned Opc,
404-
uint32_t MaxImm, bool IsMultiVector = false);
404+
uint32_t MaxImm);
405405

406406
template <unsigned MaxIdx, unsigned Scale>
407407
bool SelectSMETileSlice(SDValue N, SDValue &Vector, SDValue &Offset) {
@@ -1977,23 +1977,15 @@ void AArch64DAGToDAGISel::SelectFrintFromVT(SDNode *N, unsigned NumVecs,
19771977

19781978
void AArch64DAGToDAGISel::SelectMultiVectorLuti(SDNode *Node,
19791979
unsigned NumOutVecs,
1980-
unsigned Opc, uint32_t MaxImm,
1981-
bool IsMultiVector) {
1980+
unsigned Opc, uint32_t MaxImm) {
19821981
if (ConstantSDNode *Imm = dyn_cast<ConstantSDNode>(Node->getOperand(4)))
19831982
if (Imm->getZExtValue() > MaxImm)
19841983
return;
19851984

19861985
SDValue ZtValue;
1987-
SmallVector<SDValue, 4> Ops;
19881986
if (!ImmToReg<AArch64::ZT0, 0>(Node->getOperand(2), ZtValue))
19891987
return;
1990-
Ops.push_back(ZtValue);
1991-
if (IsMultiVector) {
1992-
Ops.push_back(createZMulTuple({Node->getOperand(3), Node->getOperand(4)}));
1993-
} else {
1994-
Ops.push_back(Node->getOperand(3));
1995-
Ops.push_back(Node->getOperand(4));
1996-
}
1988+
SDValue Ops[] = {ZtValue, Node->getOperand(3), Node->getOperand(4)};
19971989
SDLoc DL(Node);
19981990
EVT VT = Node->getValueType(0);
19991991

@@ -5515,11 +5507,6 @@ void AArch64DAGToDAGISel::Select(SDNode *Node) {
55155507
SelectMultiVectorLuti(Node, 2, Opc, 3);
55165508
return;
55175509
}
5518-
case Intrinsic::aarch64_sme_luti4_zt_x4: {
5519-
// Does not have immediate but it has 2ZPR input
5520-
SelectMultiVectorLuti(Node, 4, AArch64::LUTI4_4ZZT2Z, 0, true);
5521-
return;
5522-
}
55235510
}
55245511
} break;
55255512
case ISD::INTRINSIC_WO_CHAIN: {

llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ defm FAMIN_4Z4Z : sme2_fp_sve_destructive_vector_vg4_multi<"famin", 0b0010101>;
940940

941941
let Predicates = [HasSME2, HasSME_LUTv2] in {
942942
defm MOVT : sme2_movt_zt_to_zt<"movt", 0b0011111>;
943-
def LUTI4_4ZZT2Z : sme2_luti4_vector_vg4<0b00, 0b00,"luti4">;
943+
def LUTI4_4ZZT2Z : sme2_luti4_vector_vg4<0b00, 0b00,"luti4">;
944944
} //[HasSME2, HasSME_LUTv2]
945945

946946
let Predicates = [HasSME2p1, HasSME_LUTv2] in {

llvm/test/CodeGen/AArch64/sme2-intrinsics-write-zt.ll

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)