diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index b8b3fbec732..c6916fdf1a1 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -16762,6 +16762,10 @@ static SDValue LowerTruncateVecI1(SDValue Op, SelectionDAG &DAG, In = DAG.getNode(ISD::SHL, DL, InVT, In, DAG.getConstant(ShiftInx, DL, InVT)); } + // If we have DQI, emit a pattern that will be iseled as vpmovq2m/vpmovd2m. + if (Subtarget.hasDQI()) + return DAG.getNode(X86ISD::CMPM, DL, VT, DAG.getConstant(0, DL, InVT), + In, DAG.getConstant(6, DL, MVT::i8)); return DAG.getNode(X86ISD::CMPM, DL, VT, In, getZeroVector(InVT, Subtarget, DAG, DL), DAG.getConstant(4, DL, MVT::i8)); |

