@@ -7889,7 +7889,7 @@ static SDValue expandVPFunnelShift(SDNode *Node, SelectionDAG &DAG) {
7889
7889
InvShAmt = DAG.getNode (ISD::VP_SUB, DL, ShVT, BitWidthC, ShAmt, Mask, VL);
7890
7890
ShX = DAG.getNode (ISD::VP_SHL, DL, VT, X, IsFSHL ? ShAmt : InvShAmt, Mask,
7891
7891
VL);
7892
- ShY = DAG.getNode (ISD::VP_LSHR , DL, VT, Y, IsFSHL ? InvShAmt : ShAmt, Mask,
7892
+ ShY = DAG.getNode (ISD::VP_SRL , DL, VT, Y, IsFSHL ? InvShAmt : ShAmt, Mask,
7893
7893
VL);
7894
7894
} else {
7895
7895
// fshl: X << (Z % BW) | Y >> 1 >> (BW - 1 - (Z % BW))
@@ -7911,12 +7911,12 @@ static SDValue expandVPFunnelShift(SDNode *Node, SelectionDAG &DAG) {
7911
7911
SDValue One = DAG.getConstant (1 , DL, ShVT);
7912
7912
if (IsFSHL) {
7913
7913
ShX = DAG.getNode (ISD::VP_SHL, DL, VT, X, ShAmt, Mask, VL);
7914
- SDValue ShY1 = DAG.getNode (ISD::VP_LSHR , DL, VT, Y, One, Mask, VL);
7915
- ShY = DAG.getNode (ISD::VP_LSHR , DL, VT, ShY1, InvShAmt, Mask, VL);
7914
+ SDValue ShY1 = DAG.getNode (ISD::VP_SRL , DL, VT, Y, One, Mask, VL);
7915
+ ShY = DAG.getNode (ISD::VP_SRL , DL, VT, ShY1, InvShAmt, Mask, VL);
7916
7916
} else {
7917
7917
SDValue ShX1 = DAG.getNode (ISD::VP_SHL, DL, VT, X, One, Mask, VL);
7918
7918
ShX = DAG.getNode (ISD::VP_SHL, DL, VT, ShX1, InvShAmt, Mask, VL);
7919
- ShY = DAG.getNode (ISD::VP_LSHR , DL, VT, Y, ShAmt, Mask, VL);
7919
+ ShY = DAG.getNode (ISD::VP_SRL , DL, VT, Y, ShAmt, Mask, VL);
7920
7920
}
7921
7921
}
7922
7922
return DAG.getNode (ISD::VP_OR, DL, VT, ShX, ShY, Mask, VL);
@@ -8883,21 +8883,21 @@ SDValue TargetLowering::expandVPCTPOP(SDNode *Node, SelectionDAG &DAG) const {
8883
8883
8884
8884
// v = v - ((v >> 1) & 0x55555555...)
8885
8885
Tmp1 = DAG.getNode (ISD::VP_AND, dl, VT,
8886
- DAG.getNode (ISD::VP_LSHR , dl, VT, Op,
8886
+ DAG.getNode (ISD::VP_SRL , dl, VT, Op,
8887
8887
DAG.getConstant (1 , dl, ShVT), Mask, VL),
8888
8888
Mask55, Mask, VL);
8889
8889
Op = DAG.getNode (ISD::VP_SUB, dl, VT, Op, Tmp1, Mask, VL);
8890
8890
8891
8891
// v = (v & 0x33333333...) + ((v >> 2) & 0x33333333...)
8892
8892
Tmp2 = DAG.getNode (ISD::VP_AND, dl, VT, Op, Mask33, Mask, VL);
8893
8893
Tmp3 = DAG.getNode (ISD::VP_AND, dl, VT,
8894
- DAG.getNode (ISD::VP_LSHR , dl, VT, Op,
8894
+ DAG.getNode (ISD::VP_SRL , dl, VT, Op,
8895
8895
DAG.getConstant (2 , dl, ShVT), Mask, VL),
8896
8896
Mask33, Mask, VL);
8897
8897
Op = DAG.getNode (ISD::VP_ADD, dl, VT, Tmp2, Tmp3, Mask, VL);
8898
8898
8899
8899
// v = (v + (v >> 4)) & 0x0F0F0F0F...
8900
- Tmp4 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (4 , dl, ShVT),
8900
+ Tmp4 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (4 , dl, ShVT),
8901
8901
Mask, VL),
8902
8902
Tmp5 = DAG.getNode (ISD::VP_ADD, dl, VT, Op, Tmp4, Mask, VL);
8903
8903
Op = DAG.getNode (ISD::VP_AND, dl, VT, Tmp5, Mask0F, Mask, VL);
@@ -8921,8 +8921,8 @@ SDValue TargetLowering::expandVPCTPOP(SDNode *Node, SelectionDAG &DAG) const {
8921
8921
Mask, VL);
8922
8922
}
8923
8923
}
8924
- return DAG.getNode (ISD::VP_LSHR , dl, VT, V,
8925
- DAG. getConstant (Len - 8 , dl, ShVT), Mask, VL);
8924
+ return DAG.getNode (ISD::VP_SRL , dl, VT, V, DAG. getConstant (Len - 8 , dl, ShVT) ,
8925
+ Mask, VL);
8926
8926
}
8927
8927
8928
8928
SDValue TargetLowering::expandCTLZ (SDNode *Node, SelectionDAG &DAG) const {
@@ -8994,7 +8994,7 @@ SDValue TargetLowering::expandVPCTLZ(SDNode *Node, SelectionDAG &DAG) const {
8994
8994
for (unsigned i = 0 ; (1U << i) < NumBitsPerElt; ++i) {
8995
8995
SDValue Tmp = DAG.getConstant (1ULL << i, dl, ShVT);
8996
8996
Op = DAG.getNode (ISD::VP_OR, dl, VT, Op,
8997
- DAG.getNode (ISD::VP_LSHR , dl, VT, Op, Tmp, Mask, VL), Mask,
8997
+ DAG.getNode (ISD::VP_SRL , dl, VT, Op, Tmp, Mask, VL), Mask,
8998
8998
VL);
8999
8999
}
9000
9000
Op = DAG.getNode (ISD::VP_XOR, dl, VT, Op, DAG.getConstant (-1 , dl, VT), Mask,
@@ -9323,7 +9323,7 @@ SDValue TargetLowering::expandVPBSWAP(SDNode *N, SelectionDAG &DAG) const {
9323
9323
case MVT::i16 :
9324
9324
Tmp1 = DAG.getNode (ISD::VP_SHL, dl, VT, Op, DAG.getConstant (8 , dl, SHVT),
9325
9325
Mask, EVL);
9326
- Tmp2 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (8 , dl, SHVT),
9326
+ Tmp2 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (8 , dl, SHVT),
9327
9327
Mask, EVL);
9328
9328
return DAG.getNode (ISD::VP_OR, dl, VT, Tmp1, Tmp2, Mask, EVL);
9329
9329
case MVT::i32 :
@@ -9333,11 +9333,11 @@ SDValue TargetLowering::expandVPBSWAP(SDNode *N, SelectionDAG &DAG) const {
9333
9333
Mask, EVL);
9334
9334
Tmp3 = DAG.getNode (ISD::VP_SHL, dl, VT, Tmp3, DAG.getConstant (8 , dl, SHVT),
9335
9335
Mask, EVL);
9336
- Tmp2 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (8 , dl, SHVT),
9336
+ Tmp2 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (8 , dl, SHVT),
9337
9337
Mask, EVL);
9338
9338
Tmp2 = DAG.getNode (ISD::VP_AND, dl, VT, Tmp2,
9339
9339
DAG.getConstant (0xFF00 , dl, VT), Mask, EVL);
9340
- Tmp1 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (24 , dl, SHVT),
9340
+ Tmp1 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (24 , dl, SHVT),
9341
9341
Mask, EVL);
9342
9342
Tmp4 = DAG.getNode (ISD::VP_OR, dl, VT, Tmp4, Tmp3, Mask, EVL);
9343
9343
Tmp2 = DAG.getNode (ISD::VP_OR, dl, VT, Tmp2, Tmp1, Mask, EVL);
@@ -9357,19 +9357,19 @@ SDValue TargetLowering::expandVPBSWAP(SDNode *N, SelectionDAG &DAG) const {
9357
9357
DAG.getConstant (255ULL << 24 , dl, VT), Mask, EVL);
9358
9358
Tmp5 = DAG.getNode (ISD::VP_SHL, dl, VT, Tmp5, DAG.getConstant (8 , dl, SHVT),
9359
9359
Mask, EVL);
9360
- Tmp4 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (8 , dl, SHVT),
9360
+ Tmp4 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (8 , dl, SHVT),
9361
9361
Mask, EVL);
9362
9362
Tmp4 = DAG.getNode (ISD::VP_AND, dl, VT, Tmp4,
9363
9363
DAG.getConstant (255ULL << 24 , dl, VT), Mask, EVL);
9364
- Tmp3 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (24 , dl, SHVT),
9364
+ Tmp3 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (24 , dl, SHVT),
9365
9365
Mask, EVL);
9366
9366
Tmp3 = DAG.getNode (ISD::VP_AND, dl, VT, Tmp3,
9367
9367
DAG.getConstant (255ULL << 16 , dl, VT), Mask, EVL);
9368
- Tmp2 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (40 , dl, SHVT),
9368
+ Tmp2 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (40 , dl, SHVT),
9369
9369
Mask, EVL);
9370
9370
Tmp2 = DAG.getNode (ISD::VP_AND, dl, VT, Tmp2,
9371
9371
DAG.getConstant (255ULL << 8 , dl, VT), Mask, EVL);
9372
- Tmp1 = DAG.getNode (ISD::VP_LSHR , dl, VT, Op, DAG.getConstant (56 , dl, SHVT),
9372
+ Tmp1 = DAG.getNode (ISD::VP_SRL , dl, VT, Op, DAG.getConstant (56 , dl, SHVT),
9373
9373
Mask, EVL);
9374
9374
Tmp8 = DAG.getNode (ISD::VP_OR, dl, VT, Tmp8, Tmp7, Mask, EVL);
9375
9375
Tmp6 = DAG.getNode (ISD::VP_OR, dl, VT, Tmp6, Tmp5, Mask, EVL);
@@ -9468,7 +9468,7 @@ SDValue TargetLowering::expandVPBITREVERSE(SDNode *N, SelectionDAG &DAG) const {
9468
9468
Tmp = (Sz > 8 ? DAG.getNode (ISD::VP_BSWAP, dl, VT, Op, Mask, EVL) : Op);
9469
9469
9470
9470
// swap i4: ((V >> 4) & 0x0F) | ((V & 0x0F) << 4)
9471
- Tmp2 = DAG.getNode (ISD::VP_LSHR , dl, VT, Tmp, DAG.getConstant (4 , dl, SHVT),
9471
+ Tmp2 = DAG.getNode (ISD::VP_SRL , dl, VT, Tmp, DAG.getConstant (4 , dl, SHVT),
9472
9472
Mask, EVL);
9473
9473
Tmp2 = DAG.getNode (ISD::VP_AND, dl, VT, Tmp2,
9474
9474
DAG.getConstant (Mask4, dl, VT), Mask, EVL);
@@ -9479,7 +9479,7 @@ SDValue TargetLowering::expandVPBITREVERSE(SDNode *N, SelectionDAG &DAG) const {
9479
9479
Tmp = DAG.getNode (ISD::VP_OR, dl, VT, Tmp2, Tmp3, Mask, EVL);
9480
9480
9481
9481
// swap i2: ((V >> 2) & 0x33) | ((V & 0x33) << 2)
9482
- Tmp2 = DAG.getNode (ISD::VP_LSHR , dl, VT, Tmp, DAG.getConstant (2 , dl, SHVT),
9482
+ Tmp2 = DAG.getNode (ISD::VP_SRL , dl, VT, Tmp, DAG.getConstant (2 , dl, SHVT),
9483
9483
Mask, EVL);
9484
9484
Tmp2 = DAG.getNode (ISD::VP_AND, dl, VT, Tmp2,
9485
9485
DAG.getConstant (Mask2, dl, VT), Mask, EVL);
@@ -9490,7 +9490,7 @@ SDValue TargetLowering::expandVPBITREVERSE(SDNode *N, SelectionDAG &DAG) const {
9490
9490
Tmp = DAG.getNode (ISD::VP_OR, dl, VT, Tmp2, Tmp3, Mask, EVL);
9491
9491
9492
9492
// swap i1: ((V >> 1) & 0x55) | ((V & 0x55) << 1)
9493
- Tmp2 = DAG.getNode (ISD::VP_LSHR , dl, VT, Tmp, DAG.getConstant (1 , dl, SHVT),
9493
+ Tmp2 = DAG.getNode (ISD::VP_SRL , dl, VT, Tmp, DAG.getConstant (1 , dl, SHVT),
9494
9494
Mask, EVL);
9495
9495
Tmp2 = DAG.getNode (ISD::VP_AND, dl, VT, Tmp2,
9496
9496
DAG.getConstant (Mask1, dl, VT), Mask, EVL);
0 commit comments