[llvm] [VPlan] Simplify pow-of-2 (mul|udiv) -> (shl|lshr) (PR #172477)

Alex Bradbury via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 6 02:59:12 PST 2026


asb wrote:

I've reverted this in #174559 as it's causing failures for RVA23. [Here](https://gist.github.com/asb/16655a24e32449fd11f54f904385f1fa) is the miscompiled gcc-stdarg-3.c from the llvm-test-suite where an illegal transform happens:
```
-	sh3add	a1, a4, a1
+	addi	a1, a1, 64
```

Similar in minisat:
```diff
--- build.rva23-good/MultiSource/Applications/minisat/CMakeFiles/minisat.dir/Solver.s   2026-01-06 10:42:09.270790638 +0000
+++ build.rva23-bad/MultiSource/Applications/minisat/CMakeFiles/minisat.dir/Solver.s    2026-01-06 10:42:51.325471663 +0000
@@ -1202,11 +1202,11 @@
        vsetvli a1, a0, e64, m2, ta, ma
        vmv.x.s a2, v10
        vle64.v v12, (a2)
+       addi    s7, s7, 64
        vmv.x.s a2, v8
        sub     a0, a0, a1
-       sh3add  s7, a1, s7
        vse64.v v12, (a2)
-       sh3add  s6, a1, s6
+       addi    s6, s6, 64                      
        bnez    a0, .LBB5_26             
 # %bb.27:                               # %middle.block
                                         #   in Loop: Header=BB5_7 Depth=2
```

https://github.com/llvm/llvm-project/pull/172477


More information about the llvm-commits mailing list