regression: +68 insts: test_bitreverse_srli_bitreverse_i64 (bitreverse-shift.ll)
| Run: | main-bc8218b282-20261015-074651 |
| Kind: | regression |
| Category: | +68 insts: test_bitreverse_srli_bitreverse_i64 (bitreverse-shift.ll) |
| Occurrences: | 1 in 1 configs, 1 test files |
| Snippet from: | bitreverse-shift.37c4c0cfe7.ll (mutant of bitreverse-shift.ll) @test_bitreverse_srli_bitreverse_i64 via llvm-extract |
| Config: | -mtriple=riscv32 -mattr=+zbkb -verify-machineinstrs |
| Local check: | reproduces at bc8218b282 |
| Compiler Explorer: | not uploaded (over --godbolt-limit or disabled) |
Snippet:
; Function Attrs: nounwind
define i64 @test_bitreverse_srli_bitreverse_i64(i64 %a) #0 {
%1 = call i64 @llvm.bitreverse.i64(i64 %a)
%B = urem i64 %a, %1
%2 = call i64 @llvm.bitreverse.i64(i64 %B)
ret i64 %2
}
; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.bitreverse.i64(i64) #1
attributes #0 = { nounwind }
attributes #1 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
Reproduce:
llc -mtriple=riscv32 -mattr=+zbkb -verify-machineinstrs -global-isel snippet.ll -o -
llc -mtriple=riscv32 -mattr=+zbkb -verify-machineinstrs -global-isel=0 snippet.ll -o -
Assembly diff (SelectionDAG vs GlobalISel):
--- sdag
+++ gisel
@@ -1,14 +1,82 @@
addi sp, sp, -16
sw ra, 12(sp)
-rev8 a2, a1
-rev8 a3, a0
-brev8 a2, a2
-brev8 a3, a3
+sw s0, 8(sp)
+sw s1, 4(sp)
+sw s2, 0(sp)
+lui a2, 986895
+rev8 a3, a1
+addi s1, a2, 240
+and a2, a3, s1
+slli a3, a3, 4
+srli a2, a2, 4
+and a3, a3, s1
+lui a4, 838861
+or a2, a2, a3
+addi s0, a4, -820
+and a3, a2, s0
+srli a3, a3, 2
+slli a2, a2, 2
+and a2, a2, s0
+lui a4, 699051
+or a2, a3, a2
+addi s2, a4, -1366
+and a3, a2, s2
+srli a3, a3, 1
+rev8 a4, a0
+and a5, a4, s1
+slli a4, a4, 4
+srli a5, a5, 4
+and a4, a4, s1
+slli a2, a2, 1
+or a4, a5, a4
+and a5, a4, s0
+slli a4, a4, 2
+srli a5, a5, 2
+and a4, a4, s0
+and a2, a2, s2
+or a4, a5, a4
+and a5, a4, s2
+slli a4, a4, 1
+srli a5, a5, 1
+and a4, a4, s2
+or a2, a3, a2
+or a3, a5, a4
call __umoddi3
rev8 a1, a1
-rev8 a2, a0
-brev8 a0, a1
-brev8 a1, a2
+and a2, a1, s1
+slli a1, a1, 4
+srli a2, a2, 4
+and a1, a1, s1
+or a1, a2, a1
+and a2, a1, s0
+slli a1, a1, 2
+srli a2, a2, 2
+and a1, a1, s0
+rev8 a0, a0
+or a1, a2, a1
+and a2, a0, s1
+slli a0, a0, 4
+and a0, a0, s1
+and a3, a1, s2
+srli a2, a2, 4
+srli a3, a3, 1
+slli a1, a1, 1
+or a0, a2, a0
+and a2, a0, s0
+slli a0, a0, 2
+srli a2, a2, 2
+and a0, a0, s0
+and a1, a1, s2
+or a0, a2, a0
+and a2, a0, s2
+slli a0, a0, 1
+srli a2, a2, 1
+and a4, a0, s2
+or a0, a3, a1
+or a1, a2, a4
lw ra, 12(sp)
+lw s0, 8(sp)
+lw s1, 4(sp)
+lw s2, 0(sp)
addi sp, sp, 16
ret
Occurrences (1):
| Input | Function | Config |
|---|
| bitreverse-shift.37c4c0cfe7.ll (mutant of bitreverse-shift.ll) | test_bitreverse_srli_bitreverse_i64 | -mtriple=riscv32 -mattr=+zbkb -verify-machineinstrs |
Generated 2026-10-15 08:05 UTC.