summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp29
1 files changed, 3 insertions, 26 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 27a0c51e3fd..dcf25c629d5 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -39226,32 +39226,9 @@ static SDValue combineScalarToVector(SDNode *N, SelectionDAG &DAG) {
// TODO: SimplifyDemandedBits instead?
if (VT == MVT::v1i1 && Src.getOpcode() == ISD::AND && Src.hasOneUse())
if (auto *C = dyn_cast<ConstantSDNode>(Src.getOperand(1)))
- if (C->getAPIntValue().isOneValue()) {
- SDValue Mask = Src.getOperand(0);
- if (Mask.getOpcode() == ISD::TRUNCATE &&
- (Mask.getOperand(0).getValueType() == MVT::i8 ||
- Mask.getOperand(0).getValueType() == MVT::i32))
- Mask = Mask.getOperand(0);
- return DAG.getNode(ISD::SCALAR_TO_VECTOR, SDLoc(N), MVT::v1i1, Mask);
- }
-
- // The result of AND may also be truncated. This occurs in code for lowered
- // masked scalar intrinsics.
- if (VT == MVT::v1i1 && Src.getOpcode() == ISD::TRUNCATE && Src.hasOneUse() &&
- Src.getOperand(0).getOpcode() == ISD::AND &&
- Src.getOperand(0).hasOneUse())
- if (auto *C = dyn_cast<ConstantSDNode>(Src.getOperand(0).getOperand(1)))
- if (C->getAPIntValue().isOneValue()) {
- SDValue Mask = Src.getOperand(0).getOperand(0);
- if (Mask.getOpcode() == ISD::TRUNCATE &&
- (Mask.getOperand(0).getValueType() == MVT::i8 ||
- Mask.getOperand(0).getValueType() == MVT::i32))
- Mask = Mask.getOperand(0);
- // Check if the initial value is of a legal type for scalar_to_vector.
- if (Mask.getValueType() != MVT::i8 && Mask.getValueType() != MVT::i32)
- return SDValue();
- return DAG.getNode(ISD::SCALAR_TO_VECTOR, SDLoc(N), MVT::v1i1, Mask);
- }
+ if (C->getAPIntValue().isOneValue())
+ return DAG.getNode(ISD::SCALAR_TO_VECTOR, SDLoc(N), MVT::v1i1,
+ Src.getOperand(0));
return SDValue();
}
OpenPOWER on IntegriCloud