mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Do not optimize the used bits of the x86 vselect condition operand, when the condition operand is a vector of 1-bit predicates.
This may happen on MIC devices. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158168 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2f6622c7bf
commit
bdcae38256
@ -13521,8 +13521,6 @@ static SDValue PerformEXTRACT_VECTOR_ELTCombine(SDNode *N, SelectionDAG &DAG,
|
||||
static SDValue PerformSELECTCombine(SDNode *N, SelectionDAG &DAG,
|
||||
TargetLowering::DAGCombinerInfo &DCI,
|
||||
const X86Subtarget *Subtarget) {
|
||||
|
||||
|
||||
DebugLoc DL = N->getDebugLoc();
|
||||
SDValue Cond = N->getOperand(0);
|
||||
// Get the LHS/RHS of the select.
|
||||
@ -13804,9 +13802,13 @@ static SDValue PerformSELECTCombine(SDNode *N, SelectionDAG &DAG,
|
||||
// to simplify previous instructions.
|
||||
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
|
||||
if (N->getOpcode() == ISD::VSELECT && DCI.isBeforeLegalizeOps() &&
|
||||
!DCI.isBeforeLegalize() &&
|
||||
TLI.isOperationLegal(ISD::VSELECT, VT)) {
|
||||
!DCI.isBeforeLegalize() && TLI.isOperationLegal(ISD::VSELECT, VT)) {
|
||||
unsigned BitWidth = Cond.getValueType().getScalarType().getSizeInBits();
|
||||
|
||||
// Don't optimize vector selects that map to mask-registers.
|
||||
if (BitWidth == 1)
|
||||
return SDValue();
|
||||
|
||||
assert(BitWidth >= 8 && BitWidth <= 64 && "Invalid mask size");
|
||||
APInt DemandedMask = APInt::getHighBitsSet(BitWidth, 1);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user