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):

InputFunctionConfig
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.