forked from OSchip/llvm-project
[X86] Fix two places that appear to misuse peekThroughOneUseBitcasts
peekThroughOneUseBitcasts checks the use count of the operand of the bitcast. Not the bitcast itself. So I think that means we need to do any outside haseOneUse checks before calling the function not after. I was working on another patch where I misused the function and did a very quick audit to see if I there were other similar mistakes. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D83598
This commit is contained in:
parent
65dc97b79e
commit
04013a07ac
|
@ -36464,9 +36464,9 @@ static SDValue combineTargetShuffle(SDValue N, SelectionDAG &DAG,
|
|||
(V.getOpcode() == X86ISD::PSHUFLW ||
|
||||
V.getOpcode() == X86ISD::PSHUFHW) &&
|
||||
V.getOpcode() != N.getOpcode() &&
|
||||
V.hasOneUse()) {
|
||||
V.hasOneUse() && V.getOperand(0).hasOneUse()) {
|
||||
SDValue D = peekThroughOneUseBitcasts(V.getOperand(0));
|
||||
if (D.getOpcode() == X86ISD::PSHUFD && D.hasOneUse()) {
|
||||
if (D.getOpcode() == X86ISD::PSHUFD) {
|
||||
SmallVector<int, 4> VMask = getPSHUFShuffleMask(V);
|
||||
SmallVector<int, 4> DMask = getPSHUFShuffleMask(D);
|
||||
int NOffset = N.getOpcode() == X86ISD::PSHUFLW ? 0 : 4;
|
||||
|
@ -36903,10 +36903,11 @@ static SDValue combineShuffle(SDNode *N, SelectionDAG &DAG,
|
|||
// insert into a zero vector. This helps get VZEXT_MOVL closer to
|
||||
// scalar_to_vectors where 256/512 are canonicalized to an insert and a
|
||||
// 128-bit scalar_to_vector. This reduces the number of isel patterns.
|
||||
if (N->getOpcode() == X86ISD::VZEXT_MOVL && !DCI.isBeforeLegalizeOps()) {
|
||||
if (N->getOpcode() == X86ISD::VZEXT_MOVL && !DCI.isBeforeLegalizeOps() &&
|
||||
N->getOperand(0).hasOneUse()) {
|
||||
SDValue V = peekThroughOneUseBitcasts(N->getOperand(0));
|
||||
|
||||
if (V.getOpcode() == ISD::INSERT_SUBVECTOR && V.hasOneUse() &&
|
||||
if (V.getOpcode() == ISD::INSERT_SUBVECTOR &&
|
||||
V.getOperand(0).isUndef() && isNullConstant(V.getOperand(2))) {
|
||||
SDValue In = V.getOperand(1);
|
||||
MVT SubVT =
|
||||
|
|
Loading…
Reference in New Issue