Lines Matching full:bswap
2854 /// MatchBSwapHWord - Match (a >> 8) | (a << 8) as (bswap a) >> 16
2864 if (!TLI.isOperationLegal(ISD::BSWAP, VT))
2943 SDValue Res = DAG.getNode(ISD::BSWAP, SDLoc(N), VT, N00);
3020 /// MatchBSwapHWord - Match a 32-bit packed halfword bswap. That is
3022 /// => (rotl (bswap x), 16)
3030 if (!TLI.isOperationLegal(ISD::BSWAP, VT))
3078 SDValue BSwap = DAG.getNode(ISD::BSWAP, SDLoc(N), VT,
3081 // Result of the bswap should be rotated by 16. If it's not legal, than
3085 return DAG.getNode(ISD::ROTL, SDLoc(N), VT, BSwap, ShAmt);
3087 return DAG.getNode(ISD::ROTR, SDLoc(N), VT, BSwap, ShAmt);
3089 DAG.getNode(ISD::SHL, SDLoc(N), VT, BSwap, ShAmt),
3090 DAG.getNode(ISD::SRL, SDLoc(N), VT, BSwap, ShAmt));
3141 // Recognize halfword bswaps as (bswap + rotl 16) or (bswap + shl 16)
3142 SDValue BSwap = MatchBSwapHWord(N, N0, N1);
3143 if (BSwap.getNode() != 0)
3144 return BSwap;
3145 BSwap = MatchBSwapHWordLow(N, N0, N1);
3146 if (BSwap.getNode() != 0)
3147 return BSwap;
5383 // Form (sext_inreg (bswap >> 16)) or (sext_inreg (rotl (bswap) 16))
5385 SDValue BSwap = MatchBSwapHWordLow(N0.getNode(), N0.getOperand(0),
5387 if (BSwap.getNode() != 0)
5389 BSwap, N1);