mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-01 16:22:41 +00:00
Fix another instance of the DAG combiner not using the correct type for the RHS of a shift.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129522 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2cb2aa610e
commit
a34d93630e
@ -3323,8 +3323,10 @@ SDValue DAGCombiner::visitSRL(SDNode *N) {
|
|||||||
return DAG.getUNDEF(VT);
|
return DAG.getUNDEF(VT);
|
||||||
|
|
||||||
if (!LegalTypes || TLI.isTypeDesirableForOp(ISD::SRL, SmallVT)) {
|
if (!LegalTypes || TLI.isTypeDesirableForOp(ISD::SRL, SmallVT)) {
|
||||||
|
uint64_t ShiftAmt = N1C->getZExtValue();
|
||||||
SDValue SmallShift = DAG.getNode(ISD::SRL, N0.getDebugLoc(), SmallVT,
|
SDValue SmallShift = DAG.getNode(ISD::SRL, N0.getDebugLoc(), SmallVT,
|
||||||
N0.getOperand(0), N1);
|
N0.getOperand(0),
|
||||||
|
DAG.getConstant(ShiftAmt, getShiftAmountTy(SmallVT)));
|
||||||
AddToWorkList(SmallShift.getNode());
|
AddToWorkList(SmallShift.getNode());
|
||||||
return DAG.getNode(ISD::ANY_EXTEND, N->getDebugLoc(), VT, SmallShift);
|
return DAG.getNode(ISD::ANY_EXTEND, N->getDebugLoc(), VT, SmallShift);
|
||||||
}
|
}
|
||||||
@ -6264,7 +6266,7 @@ SDValue DAGCombiner::visitSTORE(SDNode *N) {
|
|||||||
Ptr, ST->getPointerInfo(), ST->isVolatile(),
|
Ptr, ST->getPointerInfo(), ST->isVolatile(),
|
||||||
ST->isNonTemporal(), OrigAlign);
|
ST->isNonTemporal(), OrigAlign);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Turn 'store undef, Ptr' -> nothing.
|
// Turn 'store undef, Ptr' -> nothing.
|
||||||
if (Value.getOpcode() == ISD::UNDEF && ST->isUnindexed())
|
if (Value.getOpcode() == ISD::UNDEF && ST->isUnindexed())
|
||||||
return Chain;
|
return Chain;
|
||||||
@ -6303,7 +6305,7 @@ SDValue DAGCombiner::visitSTORE(SDNode *N) {
|
|||||||
Ptr, ST->getPointerInfo(), ST->isVolatile(),
|
Ptr, ST->getPointerInfo(), ST->isVolatile(),
|
||||||
ST->isNonTemporal(), ST->getAlignment());
|
ST->isNonTemporal(), ST->getAlignment());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ST->isVolatile() &&
|
if (!ST->isVolatile() &&
|
||||||
TLI.isOperationLegalOrCustom(ISD::STORE, MVT::i32)) {
|
TLI.isOperationLegalOrCustom(ISD::STORE, MVT::i32)) {
|
||||||
// Many FP stores are not made apparent until after legalize, e.g. for
|
// Many FP stores are not made apparent until after legalize, e.g. for
|
||||||
|
Loading…
x
Reference in New Issue
Block a user