Skip to content

Commit ee1e2e4

Browse files
committed
Just use buildConstant/getConstant, we know the type already
1 parent 1073711 commit ee1e2e4

File tree

3 files changed

+18
-31
lines changed

3 files changed

+18
-31
lines changed

llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h

-17
Original file line numberDiff line numberDiff line change
@@ -1365,23 +1365,6 @@ class MachineIRBuilder {
13651365
const SrcOp &Elt,
13661366
const SrcOp &Idx);
13671367

1368-
/// Build and insert \p Res = G_INSERT_VECTOR_ELT \p Val, \p Elt, \p Idx
1369-
///
1370-
/// \pre setBasicBlock or setMI must have been called.
1371-
/// \pre \p Res must be a generic virtual register with scalar type.
1372-
/// \pre \p Val must be a generic virtual register with vector type.
1373-
/// \pre \p Elt must be a generic virtual register with scalar type.
1374-
///
1375-
/// \return The newly created instruction.
1376-
MachineInstrBuilder buildInsertVectorElementConstant(const DstOp &Res,
1377-
const SrcOp &Val,
1378-
const SrcOp &Elt,
1379-
const int Idx) {
1380-
const TargetLowering *TLI = getMF().getSubtarget().getTargetLowering();
1381-
LLT IdxTy = TLI->getVectorIdxLLT(getDataLayout());
1382-
return buildInsertVectorElement(Res, Val, Elt, buildConstant(IdxTy, Idx));
1383-
}
1384-
13851368
/// Build and insert \p Res = G_EXTRACT_VECTOR_ELT \p Val, \p Idx
13861369
///
13871370
/// \pre setBasicBlock or setMI must have been called.

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -13968,7 +13968,7 @@ SDValue AArch64TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op,
1396813968
EVT VT = OpLHS.getValueType();
1396913969
switch (OpNum) {
1397013970
default:
13971-
llvm_unreachable("Unexpected perfect shuffle opcode\n");
13971+
llvm_unreachable("Unexpected perfect shuffle opcode");
1397213972
case OP_VUZPL:
1397313973
return DAG.getNode(AArch64ISD::UZP1, dl, VT, OpLHS, OpRHS);
1397413974
case OP_VUZPR:
@@ -13995,10 +13995,10 @@ SDValue AArch64TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op,
1399513995
}
1399613996
SDValue Ext = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl,
1399713997
ExtSrc.getValueType().getVectorElementType(),
13998-
ExtSrc, DAG.getVectorIdxConstant(ExtLane, dl));
13998+
ExtSrc, DAG.getConstant(ExtLane, dl, MVT::i64));
1399913999
SDValue Ins =
1400014000
DAG.getNode(ISD::INSERT_VECTOR_ELT, dl, ExtSrc.getValueType(), InsSrc,
14001-
Ext, DAG.getVectorIdxConstant(InsLane, dl));
14001+
Ext, DAG.getConstant(InsLane, dl, MVT::i64));
1400214002
return DAG.getBitcast(VT, Ins);
1400314003
};
1400414004
auto BuildExtractInsert32 = [&DAG, &dl](SDValue ExtSrc, unsigned ExtLane,
@@ -14010,10 +14010,10 @@ SDValue AArch64TargetLowering::LowerVECTOR_SHUFFLE(SDValue Op,
1401014010
}
1401114011
SDValue Ext = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, dl,
1401214012
ExtSrc.getValueType().getVectorElementType(),
14013-
ExtSrc, DAG.getVectorIdxConstant(ExtLane, dl));
14013+
ExtSrc, DAG.getConstant(ExtLane, dl, MVT::i64));
1401414014
SDValue Ins =
1401514015
DAG.getNode(ISD::INSERT_VECTOR_ELT, dl, ExtSrc.getValueType(), InsSrc,
14016-
Ext, DAG.getVectorIdxConstant(InsLane, dl));
14016+
Ext, DAG.getConstant(InsLane, dl, MVT::i64));
1401714017
return DAG.getBitcast(VT, Ins);
1401814018
};
1401914019
return generatePerfectShuffle<SDValue, MVT>(

llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp

+13-9
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ void applyPerfectShuffle(MachineInstr &MI, MachineRegisterInfo &MRI,
593593
LLT Ty = MRI.getType(OpLHS);
594594
switch (OpNum) {
595595
default:
596-
llvm_unreachable("Unexpected perfect shuffle opcode\n");
596+
llvm_unreachable("Unexpected perfect shuffle opcode");
597597
case OP_VUZPL:
598598
return MIB.buildInstr(AArch64::G_UZP1, {Ty}, {OpLHS, OpRHS}).getReg(0);
599599
case OP_VUZPR:
@@ -619,10 +619,12 @@ void applyPerfectShuffle(MachineInstr &MI, MachineRegisterInfo &MRI,
619619
ExtSrc = MIB.buildBitcast(LLT::fixed_vector(2, 64), ExtSrc).getReg(0);
620620
InsSrc = MIB.buildBitcast(LLT::fixed_vector(2, 64), InsSrc).getReg(0);
621621
}
622-
auto Ext = MIB.buildExtractVectorElementConstant(
623-
MRI.getType(ExtSrc).getElementType(), ExtSrc, ExtLane);
624-
auto Ins = MIB.buildInsertVectorElementConstant(MRI.getType(ExtSrc), InsSrc,
625-
Ext, InsLane);
622+
auto Ext = MIB.buildExtractVectorElement(
623+
MRI.getType(ExtSrc).getElementType(), ExtSrc,
624+
MIB.buildConstant(LLT::scalar(64), ExtLane));
625+
auto Ins = MIB.buildInsertVectorElement(
626+
MRI.getType(ExtSrc), InsSrc, Ext,
627+
MIB.buildConstant(LLT::scalar(64), InsLane));
626628
return MIB.buildBitcast(Ty, Ins).getReg(0);
627629
};
628630
auto BuildExtractInsert32 = [&MIB, &MRI](Register ExtSrc, unsigned ExtLane,
@@ -632,10 +634,12 @@ void applyPerfectShuffle(MachineInstr &MI, MachineRegisterInfo &MRI,
632634
ExtSrc = MIB.buildBitcast(LLT::fixed_vector(2, 32), ExtSrc).getReg(0);
633635
InsSrc = MIB.buildBitcast(LLT::fixed_vector(2, 32), InsSrc).getReg(0);
634636
}
635-
auto Ext = MIB.buildExtractVectorElementConstant(
636-
MRI.getType(ExtSrc).getElementType(), ExtSrc, ExtLane);
637-
auto Ins = MIB.buildInsertVectorElementConstant(MRI.getType(ExtSrc), InsSrc,
638-
Ext, InsLane);
637+
auto Ext = MIB.buildExtractVectorElement(
638+
MRI.getType(ExtSrc).getElementType(), ExtSrc,
639+
MIB.buildConstant(LLT::scalar(64), ExtLane));
640+
auto Ins = MIB.buildInsertVectorElement(
641+
MRI.getType(ExtSrc), InsSrc, Ext,
642+
MIB.buildConstant(LLT::scalar(64), InsLane));
639643
if (MRI.getType(Ins.getReg(0)) != Ty)
640644
Ins = MIB.buildBitcast(Ty, Ins);
641645
return Ins.getReg(0);

0 commit comments

Comments
 (0)