[llvm] [GlobalISel] add G_ROTL, G_ROTR to computeKnownBits (PR #166365)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 5 07:56:36 PST 2025
================
@@ -483,6 +483,25 @@ void GISelValueTracking::computeKnownBitsImpl(Register R, KnownBits &Known,
Known = KnownBits::shl(LHSKnown, RHSKnown);
break;
}
+ case TargetOpcode::G_ROTL:
+ case TargetOpcode::G_ROTR: {
+ MachineInstr *AmtOpMI = MRI.getVRegDef(MI.getOperand(2).getReg());
+ auto MaybeAmtOp = isConstantOrConstantSplatVector(*AmtOpMI, MRI);
+ if (!MaybeAmtOp)
+ break;
+ unsigned Amt = MaybeAmtOp->urem(BitWidth);
+
+ Register SrcReg = MI.getOperand(1).getReg();
+ computeKnownBitsImpl(SrcReg, Known, DemandedElts, Depth + 1);
+
+ // Canonicalize to ROTR.
+ if (Opcode == TargetOpcode::G_ROTL)
----------------
arsenm wrote:
```suggestion
Register SrcReg = MI.getOperand(1).getReg();
computeKnownBitsImpl(SrcReg, Known, DemandedElts, Depth + 1);
unsigned Amt = MaybeAmtOp->urem(BitWidth);
// Canonicalize to ROTR.
if (Opcode == TargetOpcode::G_ROTL)
```
https://github.com/llvm/llvm-project/pull/166365
More information about the llvm-commits
mailing list