[llvm] [GlobalISel] add G_ROTL, G_ROTR to computeKnownBits (PR #166365)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 5 03:05:18 PST 2025
================
@@ -483,6 +483,27 @@ 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());
+ if (!AmtOpMI)
+ break;
+ auto MaybeAmtOp = isConstantOrConstantSplatVector(*AmtOpMI, MRI);
+ if (MaybeAmtOp.has_value()) {
+ unsigned Amt = MaybeAmtOp.value().urem(BitWidth);
+
+ Register SrcReg = MI.getOperand(1).getReg();
+ computeKnownBitsImpl(SrcReg, Known, DemandedElts, Depth + 1);
+
+ // Canonicalize to ROTR.
+ if (Opcode == TargetOpcode::G_ROTL && Amt != 0)
----------------
jayfoad wrote:
Simpler:
```suggestion
if (Opcode == TargetOpcode::G_ROTL)
```
https://github.com/llvm/llvm-project/pull/166365
More information about the llvm-commits
mailing list