[llvm] [X86] LowerRotate - expand vXi8 non-uniform variable rotates using uniform constant rotates (PR #189986)
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 1 18:50:39 PDT 2026
================
@@ -32177,14 +32177,16 @@ static SDValue LowerRotate(SDValue Op, const X86Subtarget &Subtarget,
return DAG.getSelect(DL, SelVT, C, V0, V1);
};
- // ISD::ROTR is currently only profitable on AVX512 targets with VPTERNLOG.
- if (!IsROTL && !useVPTERNLOG(Subtarget, VT)) {
+ // ISD::ROTR is currently only profitable on GFNI/AVX512+VPTERNLOG targets.
+ if (!IsROTL && !useVPTERNLOG(Subtarget, VT) && !Subtarget.hasGFNI()) {
Amt = DAG.getNode(ISD::SUB, DL, VT, Z, Amt);
IsROTL = true;
}
- unsigned ShiftLHS = IsROTL ? ISD::SHL : ISD::SRL;
- unsigned ShiftRHS = IsROTL ? ISD::SRL : ISD::SHL;
+ auto BuildRotate = [&](SDValue R, unsigned RotAmt) {
+ return DAG.getNode(IsROTL ? ISD::ROTL : ISD::ROTR, DL, VT, R,
----------------
phoebewang wrote:
Can we use `Opcode` directly?
https://github.com/llvm/llvm-project/pull/189986
More information about the llvm-commits
mailing list