[llvm] dbce111 - [NFC][DAG] Move `getOpcode_EXTEND*()` helpers from X86 into SelectionDAG
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 4 14:12:54 PST 2023
Author: Roman Lebedev
Date: 2023-01-05T01:12:30+03:00
New Revision: dbce1110f189ab344c0d9a2a04bcab3bf6055e52
URL: https://github.com/llvm/llvm-project/commit/dbce1110f189ab344c0d9a2a04bcab3bf6055e52
DIFF: https://github.com/llvm/llvm-project/commit/dbce1110f189ab344c0d9a2a04bcab3bf6055e52.diff
LOG: [NFC][DAG] Move `getOpcode_EXTEND*()` helpers from X86 into SelectionDAG
To be used in an upcoming patch.
Added:
Modified:
llvm/include/llvm/CodeGen/SelectionDAG.h
llvm/lib/Target/X86/X86ISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/CodeGen/SelectionDAG.h b/llvm/include/llvm/CodeGen/SelectionDAG.h
index 311f55a1a417e..f75a6f40b9b12 100644
--- a/llvm/include/llvm/CodeGen/SelectionDAG.h
+++ b/llvm/include/llvm/CodeGen/SelectionDAG.h
@@ -903,6 +903,38 @@ class SelectionDAG {
std::pair<SDValue, SDValue>
getStrictFPExtendOrRound(SDValue Op, SDValue Chain, const SDLoc &DL, EVT VT);
+ /// Convert *_EXTEND_VECTOR_INREG to *_EXTEND opcode.
+ static unsigned getOpcode_EXTEND(unsigned Opcode) {
+ switch (Opcode) {
+ case ISD::ANY_EXTEND:
+ case ISD::ANY_EXTEND_VECTOR_INREG:
+ return ISD::ANY_EXTEND;
+ case ISD::ZERO_EXTEND:
+ case ISD::ZERO_EXTEND_VECTOR_INREG:
+ return ISD::ZERO_EXTEND;
+ case ISD::SIGN_EXTEND:
+ case ISD::SIGN_EXTEND_VECTOR_INREG:
+ return ISD::SIGN_EXTEND;
+ }
+ llvm_unreachable("Unknown opcode");
+ }
+
+ /// Convert *_EXTEND to *_EXTEND_VECTOR_INREG opcode.
+ static unsigned getOpcode_EXTEND_VECTOR_INREG(unsigned Opcode) {
+ switch (Opcode) {
+ case ISD::ANY_EXTEND:
+ case ISD::ANY_EXTEND_VECTOR_INREG:
+ return ISD::ANY_EXTEND_VECTOR_INREG;
+ case ISD::ZERO_EXTEND:
+ case ISD::ZERO_EXTEND_VECTOR_INREG:
+ return ISD::ZERO_EXTEND_VECTOR_INREG;
+ case ISD::SIGN_EXTEND:
+ case ISD::SIGN_EXTEND_VECTOR_INREG:
+ return ISD::SIGN_EXTEND_VECTOR_INREG;
+ }
+ llvm_unreachable("Unknown opcode");
+ }
+
/// Convert Op, which must be of integer type, to the
/// integer type VT, by either any-extending or truncating it.
SDValue getAnyExtOrTrunc(SDValue Op, const SDLoc &DL, EVT VT);
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 1babfa2da2539..2a612b6912042 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -6975,38 +6975,6 @@ static SDValue getOnesVector(EVT VT, SelectionDAG &DAG, const SDLoc &dl) {
return DAG.getBitcast(VT, Vec);
}
-// Convert *_EXTEND_VECTOR_INREG to *_EXTEND opcode.
-static unsigned getOpcode_EXTEND(unsigned Opcode) {
- switch (Opcode) {
- case ISD::ANY_EXTEND:
- case ISD::ANY_EXTEND_VECTOR_INREG:
- return ISD::ANY_EXTEND;
- case ISD::ZERO_EXTEND:
- case ISD::ZERO_EXTEND_VECTOR_INREG:
- return ISD::ZERO_EXTEND;
- case ISD::SIGN_EXTEND:
- case ISD::SIGN_EXTEND_VECTOR_INREG:
- return ISD::SIGN_EXTEND;
- }
- llvm_unreachable("Unknown opcode");
-}
-
-// Convert *_EXTEND to *_EXTEND_VECTOR_INREG opcode.
-static unsigned getOpcode_EXTEND_VECTOR_INREG(unsigned Opcode) {
- switch (Opcode) {
- case ISD::ANY_EXTEND:
- case ISD::ANY_EXTEND_VECTOR_INREG:
- return ISD::ANY_EXTEND_VECTOR_INREG;
- case ISD::ZERO_EXTEND:
- case ISD::ZERO_EXTEND_VECTOR_INREG:
- return ISD::ZERO_EXTEND_VECTOR_INREG;
- case ISD::SIGN_EXTEND:
- case ISD::SIGN_EXTEND_VECTOR_INREG:
- return ISD::SIGN_EXTEND_VECTOR_INREG;
- }
- llvm_unreachable("Unknown opcode");
-}
-
static SDValue getEXTEND_VECTOR_INREG(unsigned Opcode, const SDLoc &DL, EVT VT,
SDValue In, SelectionDAG &DAG) {
EVT InVT = In.getValueType();
@@ -7027,7 +6995,7 @@ static SDValue getEXTEND_VECTOR_INREG(unsigned Opcode, const SDLoc &DL, EVT VT,
}
if (VT.getVectorNumElements() != InVT.getVectorNumElements())
- Opcode = getOpcode_EXTEND_VECTOR_INREG(Opcode);
+ Opcode = DAG.getOpcode_EXTEND_VECTOR_INREG(Opcode);
return DAG.getNode(Opcode, DL, VT, In);
}
@@ -22153,7 +22121,7 @@ static SDValue LowerAVXExtend(SDValue Op, SelectionDAG &DAG,
InVT.getVectorElementType() == MVT::i32) &&
"Unexpected element type");
- unsigned ExtendInVecOpc = getOpcode_EXTEND_VECTOR_INREG(Opc);
+ unsigned ExtendInVecOpc = DAG.getOpcode_EXTEND_VECTOR_INREG(Opc);
if (VT == MVT::v32i16 && !Subtarget.hasBWI()) {
assert(InVT == MVT::v32i8 && "Unexpected VT!");
@@ -38037,7 +38005,7 @@ static bool matchUnaryShuffle(MVT MaskVT, ArrayRef<int> Mask,
Shuffle = unsigned(MatchAny ? ISD::ANY_EXTEND : ISD::ZERO_EXTEND);
if (SrcVT.getVectorNumElements() != NumDstElts)
- Shuffle = getOpcode_EXTEND_VECTOR_INREG(Shuffle);
+ Shuffle = DAG.getOpcode_EXTEND_VECTOR_INREG(Shuffle);
DstVT = MVT::getIntegerVT(Scale * MaskEltSize);
DstVT = MVT::getVectorVT(DstVT, NumDstElts);
@@ -55562,7 +55530,7 @@ static SDValue combineEXTRACT_SUBVECTOR(SDNode *N, SelectionDAG &DAG,
SDValue Ext = InVec.getOperand(0);
if (Ext.getValueSizeInBits() > SizeInBits)
Ext = extractSubVector(Ext, 0, DAG, DL, SizeInBits);
- unsigned ExtOp = getOpcode_EXTEND_VECTOR_INREG(InOpcode);
+ unsigned ExtOp = DAG.getOpcode_EXTEND_VECTOR_INREG(InOpcode);
return DAG.getNode(ExtOp, DL, VT, Ext);
}
if (IdxVal == 0 && InOpcode == ISD::VSELECT &&
@@ -55803,7 +55771,7 @@ static SDValue combineEXTEND_VECTOR_INREG(SDNode *N, SelectionDAG &DAG,
// -> EXTEND_VECTOR_INREG(X).
// TODO: Handle non-zero subvector indices.
if (InOpcode == ISD::EXTRACT_SUBVECTOR && In.getConstantOperandVal(1) == 0 &&
- In.getOperand(0).getOpcode() == getOpcode_EXTEND(Opcode) &&
+ In.getOperand(0).getOpcode() == DAG.getOpcode_EXTEND(Opcode) &&
In.getOperand(0).getOperand(0).getValueSizeInBits() ==
In.getValueSizeInBits())
return DAG.getNode(Opcode, DL, VT, In.getOperand(0).getOperand(0));
More information about the llvm-commits
mailing list