regression: +103 insts: add_ugecmp_i16_i8 (signed-truncation-check.ll)

Run:explore-bc8218b282-20261015-075519
Kind:regression
Category:+103 insts: add_ugecmp_i16_i8 (signed-truncation-check.ll)
Occurrences:1 in 1 configs, 1 test files
Snippet from:signed-truncation-check.78526b77dc.ll (mutant of signed-truncation-check.ll) @add_ugecmp_i16_i8 via llvm-extract
Config:-mtriple=riscv32-unknown-linux-gnu
Local check:reproduces at bc8218b282
Compiler Explorer:not uploaded (over --godbolt-limit or disabled)

Snippet:

@G.1 = external global i1
@G.2 = external global i1

; Function Attrs: nounwind
define i1 @add_ugecmp_i16_i8(i16 %x) #0 {
  %A9 = alloca i1, align 1
  store i1 false, ptr %A9, align 1
  %A = alloca i128, align 8
  store i128 18446744073709551616, ptr %A, align 4
  %L = load i128, ptr %A, align 4
  switch i128 %L, label %SW_D [
    i128 10313260519407683672, label %SW_C
    i128 10113334039659144235, label %SW_C1
    i128 1018002067521868096, label %SW_C2
    i128 14037542181371330795, label %SW_C3
    i128 5836119722115023178, label %SW_C4
    i128 13476525337644816333, label %SW_C5
    i128 8589347238422132671, label %SW_C6
    i128 14943832940757854221, label %SW_C7
  ]

BB:                                               ; preds = %SW_C6, %SW_C5, %SW_C4, %SW_C2, %SW_C1, %SW_C
  %tmp0 = add i16 %x, -128
  %tmp1 = icmp uge i16 %tmp0, -256
  ret i1 %tmp1

SW_D:                                             ; preds = %0
  %LGV = load i1, ptr @G.1, align 1
  ret i1 %LGV

SW_C:                                             ; preds = %0
  br label %BB

SW_C1:                                            ; preds = %0
  br label %BB

SW_C2:                                            ; preds = %0
  br label %BB

SW_C3:                                            ; preds = %0
  ret i1 true

SW_C4:                                            ; preds = %0
  br label %BB

SW_C5:                                            ; preds = %SW_C5, %0
  %LGV8 = load i1, ptr @G.1, align 1
  %L10 = load i1, ptr %A9, align 1
  br i1 %L10, label %SW_C5, label %BB

SW_C6:                                            ; preds = %SW_C6, %0
  %LGV11 = load i1, ptr @G.2, align 1
  br i1 %LGV11, label %SW_C6, label %BB

SW_C7:                                            ; preds = %0
  %LGV12 = load i1, ptr @G.1, align 1
  ret i1 false
}

attributes #0 = { nounwind }

Reproduce:

llc -mtriple=riscv32-unknown-linux-gnu -global-isel snippet.ll -o -
llc -mtriple=riscv32-unknown-linux-gnu -global-isel=0 snippet.ll -o -

Assembly diff (SelectionDAG vs GlobalISel):

--- sdag
+++ gisel
@@ -1,56 +1,177 @@
 addi sp, sp, -32
+li a1, 1
+addi a4, sp, 8
+sw zero, 8(sp)
+sw zero, 4(a4)
+sw a1, 8(a4)
+lw a1, 12(sp)
+lw a2, 8(sp)
+lw a3, 16(sp)
+sw zero, 12(a4)
+lui a4, 586241
+lui a6, 947633
+addi a5, a4, -52
+addi a6, a6, -1960
 sb zero, 31(sp)
-li a1, 1
-sw zero, 8(sp)
-sw zero, 12(sp)
-sw a1, 16(sp)
-sw zero, 20(sp)
-seqz a2, a1
-addi a2, a2, -1
-and a2, a2, a1
-j .L0
-bnez a2, .L1
-lui a2, 652828
-addi a2, a2, -1156
-or a1, a1, a2
-bnez a1, .L2
-j .L3
+beq a1, a5, .L0
+sltu a4, a1, a5
+j .L1
 .L0:
-bnez a2, .L4
-lui a2, 980913
-addi a2, a2, -36
-or a1, a1, a2
-beqz a1, .L3
-j .L5
+sltu a4, a2, a6
+.L1:
+xori t1, a4, 1
+lw a4, 20(sp)
+sltiu t0, a3, 0
+bnez a3, .L2
+slti a7, a4, 0
+bnez a4, .L3
+.L4:
+bnez t1, .L5
+.L6:
+lui a5, 488248
+lui a6, 92707
+addi a5, a5, -562
+addi a6, a6, 1983
+beq a1, a5, .L7
+sltu t1, a1, a5
+xori t1, t1, 1
+bnez a3, .L8
+j .L9
+.L2:
+xori t1, t0, 1
+slti a7, a4, 0
+beqz a4, .L4
+.L3:
+xori t1, a7, 1
+beqz t1, .L6
+.L5:
+lui t1, 797942
+lui t2, 426804
+addi t1, t1, -451
+addi t2, t2, 235
+beq a1, t1, .L10
+sltu t3, a1, t1
+xori t3, t3, 1
+bnez a3, .L11
+j .L12
+.L7:
+sltu t1, a2, a6
+xori t1, t1, 1
+beqz a3, .L9
+.L8:
+xori t1, t0, 1
+.L9:
+bnez a4, .L13
+bnez t1, .L14
+.L15:
+lui a5, 652305
+lui a6, 57867
+addi a5, a5, 320
+addi a6, a6, -1156
+xor a5, a2, a5
+xor a6, a1, a6
+or a5, a5, a6
+or a3, a3, a4
+or a5, a5, a3
+beqz a5, .L16
+lui a4, 357652
+lui a5, 331745
+addi a4, a4, 330
+addi a5, a5, -9
+j .L17
+.L10:
+sltu t3, a2, t2
+xori t3, t3, 1
+beqz a3, .L12
+.L11:
+xori t3, t0, 1
+.L12:
+bnez a4, .L18
+or a3, a3, a4
+bnez t3, .L19
+.L20:
+xor a4, a2, a6
+xor a5, a1, a5
+or a4, a4, a5
+or a4, a4, a3
+beqz a4, .L16
+lui a4, 609773
+lui a5, 766052
+addi a4, a4, 1997
+addi a5, a5, -924
+xor a2, a2, a4
+xor a1, a1, a5
+or a1, a2, a1
+or a1, a1, a3
+bnez a1, .L21
 lbu a1, 31(sp)
-.L6:
-bnez a1, .L6
-j .L3
-.L1:
-.L2:
-j .L5
-.L4:
-j .L5
-li a0, 0
+andi a1, a1, 1
+.L22:
+bnez a1, .L22
+j .L16
+.L13:
+xori t1, a7, 1
+beqz t1, .L15
+.L14:
+xor a6, a2, a6
+xor a5, a1, a5
+or a5, a6, a5
+or a3, a3, a4
+or a5, a5, a3
+beqz a5, .L23
+lui a4, 986110
+lui a5, 574876
+addi a4, a4, 1067
+addi a5, a5, 1977
+.L17:
+xor a2, a2, a4
+xor a1, a1, a5
+or a1, a2, a1
+or a1, a1, a3
+beqz a1, .L16
+j .L21
+.L18:
+xori t3, a7, 1
+or a3, a3, a4
+beqz t3, .L20
+.L19:
+xor a0, a2, t2
+xor a4, a1, t1
+or a0, a0, a4
+or a0, a0, a3
+beqz a0, .L24
+lui a0, 264819
+lui a4, 849459
+addi a0, a0, -2035
+addi a4, a4, -1822
+xor a0, a2, a0
+xor a1, a1, a4
+or a0, a0, a1
+or a0, a0, a3
+bnez a0, .L21
 addi sp, sp, 32
 ret
+.L23:
 lui a1, %hi(G.2)
 lbu a1, %lo(G.2)(a1)
-.L7:
-bnez a1, .L7
-.L3:
+andi a1, a1, 1
+.L25:
+bnez a1, .L25
+.L16:
 slli a0, a0, 16
+lui a1, 16
 srli a0, a0, 16
+addi a1, a1, -256
 addi a0, a0, -128
-srli a0, a0, 8
-sltiu a0, a0, 255
+sltu a0, a0, a1
 xori a0, a0, 1
 addi sp, sp, 32
 ret
+.L24:
 li a0, 1
 addi sp, sp, 32
 ret
-.L5:
+.L21:
 lui a0, %hi(G.1)
 lbu a0, %lo(G.1)(a0)
 addi sp, sp, 32

Occurrences (1):

InputFunctionConfig
signed-truncation-check.78526b77dc.ll (mutant of signed-truncation-check.ll)add_ugecmp_i16_i8-mtriple=riscv32-unknown-linux-gnu

Generated 2026-10-15 08:05 UTC.