@@ -41579,8 +41579,7 @@ static SDValue canonicalizeShuffleWithOp(SDValue N, SelectionDAG &DAG,
41579
41579
EVT ShuffleVT = N.getValueType();
41580
41580
unsigned Opc = N.getOpcode();
41581
41581
41582
- auto IsMergeableWithShuffle = [Opc, &DAG](SDValue Op, bool FoldShuf = true,
41583
- bool FoldLoad = false) {
41582
+ auto IsMergeableWithShuffle = [Opc, &DAG](SDValue Op, bool FoldShuf = true) {
41584
41583
// AllZeros/AllOnes constants are freely shuffled and will peek through
41585
41584
// bitcasts. Other constant build vectors do not peek through bitcasts. Only
41586
41585
// merge with target shuffles if it has one use so shuffle combining is
@@ -41593,7 +41592,6 @@ static SDValue canonicalizeShuffleWithOp(SDValue N, SelectionDAG &DAG,
41593
41592
(Op.getOpcode() == Opc && Op->hasOneUse()) ||
41594
41593
(Op.getOpcode() == ISD::INSERT_SUBVECTOR && Op->hasOneUse()) ||
41595
41594
(FoldShuf && isTargetShuffle(Op.getOpcode()) && Op->hasOneUse()) ||
41596
- (FoldLoad && isShuffleFoldableLoad(Op)) ||
41597
41595
DAG.isSplatValue(Op, /*AllowUndefs*/ false);
41598
41596
};
41599
41597
auto IsSafeToMoveShuffle = [ShuffleVT](SDValue Op, unsigned BinOp) {
@@ -41629,9 +41627,8 @@ static SDValue canonicalizeShuffleWithOp(SDValue N, SelectionDAG &DAG,
41629
41627
SDValue Op00 = peekThroughOneUseBitcasts(N0.getOperand(0));
41630
41628
SDValue Op01 = peekThroughOneUseBitcasts(N0.getOperand(1));
41631
41629
bool FoldShuf = Opc != X86ISD::VPERMI;
41632
- bool FoldLoad = Opc != X86ISD::PSHUFB;
41633
- if (IsMergeableWithShuffle(Op00, FoldShuf, FoldLoad) ||
41634
- IsMergeableWithShuffle(Op01, FoldShuf, FoldLoad)) {
41630
+ if (IsMergeableWithShuffle(Op00, FoldShuf) ||
41631
+ IsMergeableWithShuffle(Op01, FoldShuf)) {
41635
41632
SDValue LHS, RHS;
41636
41633
Op00 = DAG.getBitcast(ShuffleVT, Op00);
41637
41634
Op01 = DAG.getBitcast(ShuffleVT, Op01);
0 commit comments