summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index a1e37975b7a..4a2eba05aee 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -34214,15 +34214,15 @@ static SDValue combineTruncateWithSat(SDValue In, EVT VT, const SDLoc &DL,
const X86Subtarget &Subtarget) {
EVT InVT = In.getValueType();
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
- if (!TLI.isTypeLegal(InVT) || !TLI.isTypeLegal(VT))
- return SDValue();
- if (isSATValidOnAVX512Subtarget(InVT, VT, Subtarget)) {
+ if (TLI.isTypeLegal(InVT) && TLI.isTypeLegal(VT) &&
+ isSATValidOnAVX512Subtarget(InVT, VT, Subtarget)) {
if (auto SSatVal = detectSSatPattern(In, VT))
return DAG.getNode(X86ISD::VTRUNCS, DL, VT, SSatVal);
if (auto USatVal = detectUSatPattern(In, VT))
return DAG.getNode(X86ISD::VTRUNCUS, DL, VT, USatVal);
}
- if ((VT.getScalarType() == MVT::i8 && InVT.getScalarType() == MVT::i16) ||
+ if (VT.isVector() && isPowerOf2_32(VT.getVectorNumElements()) &&
+ (VT.getScalarType() == MVT::i8 && InVT.getScalarType() == MVT::i16) ||
(VT.getScalarType() == MVT::i16 && InVT.getScalarType() == MVT::i32)) {
if (auto SSatVal = detectSSatPattern(In, VT))
return truncateVectorWithPACK(X86ISD::PACKSS, VT, SSatVal, DL, DAG,
OpenPOWER on IntegriCloud