[llvm] [SelectionDAG] Optimize 32-bit udiv with 33-bit magic constants on 64-bit targets (PR #181288)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 12 21:25:36 PST 2026
================
@@ -6864,6 +6891,39 @@ SDValue TargetLowering::BuildUDIV(SDNode *N, SelectionDAG &DAG,
PostShift = PostShifts[0];
}
+ if (Use33BitOptimization) {
+ // x is i32, MagicFactor is pre-shifted i64 constant
+ // Compute: (i64(x) * MagicFactor) >> 64
+ SDValue X64 = DAG.getNode(ISD::ZERO_EXTEND, dl, WideVT64, N0);
+
+ // Get the pre-shifted constant (it's already in MagicFactor as i64)
+ SDValue MagicFactor64 = isa<ConstantSDNode>(MagicFactor)
----------------
topperc wrote:
if you're only handling scalars `isa<ConstantSDNode>(MagicFactor)` is always true.
https://github.com/llvm/llvm-project/pull/181288
More information about the llvm-commits
mailing list