regression: +442 insts: shl_32bytes_wordOff (wide-scalar-shift-by-byte-multiple-legalization.ll)
| Run: | explore-bc8218b282-20261015-075519 |
| Kind: | regression |
| Category: | +442 insts: shl_32bytes_wordOff (wide-scalar-shift-by-byte-multiple-legalization.ll) |
| Occurrences: | 1 in 1 configs, 1 test files |
| Snippet from: | wide-scalar-shift-by-byte-multiple-legalization.ll @shl_32bytes_wordOff via llvm-extract |
| Config: | -mtriple=riscv32 -verify-machineinstrs |
| Local check: | reproduces at bc8218b282 |
| Compiler Explorer: | not uploaded (over --godbolt-limit or disabled) |
Snippet:
; Function Attrs: nounwind
define void @shl_32bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) #0 {
%src = load i256, ptr %src.ptr, align 1
%wordOff = load i256, ptr %wordOff.ptr, align 1
%bitOff = shl i256 %wordOff, 5
%res = shl i256 %src, %bitOff
store i256 %res, ptr %dst, align 1
ret void
}
attributes #0 = { nounwind }
Reproduce:
llc -mtriple=riscv32 -verify-machineinstrs -global-isel snippet.ll -o -
llc -mtriple=riscv32 -verify-machineinstrs -global-isel=0 snippet.ll -o -
Assembly diff (SelectionDAG vs GlobalISel):
--- sdag
+++ gisel
@@ -1,172 +1,759 @@
addi sp, sp, -80
-sw s0, 76(sp)
-sw s1, 72(sp)
-lbu a1, 0(a1)
+sw ra, 76(sp)
+sw s0, 72(sp)
+sw s1, 68(sp)
+sw s2, 64(sp)
+sw s3, 60(sp)
+sw s4, 56(sp)
+sw s5, 52(sp)
+sw s6, 48(sp)
+sw s7, 44(sp)
+sw s8, 40(sp)
+sw s9, 36(sp)
+sw s10, 32(sp)
+sw s11, 28(sp)
lbu a3, 1(a0)
lbu a4, 0(a0)
-lbu a5, 2(a0)
-lbu a6, 3(a0)
+lbu a5, 3(a0)
+lbu a6, 2(a0)
+lbu a7, 3(a1)
+lbu t0, 1(a1)
+lbu t1, 2(a1)
+lbu a1, 0(a1)
slli a3, a3, 8
-lbu a7, 5(a0)
-lbu t0, 6(a0)
-lbu t1, 7(a0)
-lbu t2, 4(a0)
or a3, a3, a4
+slli a5, a5, 8
+or a4, a5, a6
+slli a7, a7, 8
+slli t0, t0, 8
+or a5, a7, t1
+or a1, t0, a1
slli a5, a5, 16
-slli a6, a6, 24
-or a4, a6, a5
-slli a7, a7, 8
-slli t0, t0, 16
-slli t1, t1, 24
-lbu a5, 8(a0)
-lbu a6, 9(a0)
-lbu t3, 10(a0)
-lbu t4, 11(a0)
-or a7, a7, t2
-or t0, t1, t0
-or a3, a4, a3
-or a4, t0, a7
-slli a6, a6, 8
-lbu a7, 13(a0)
-slli t3, t3, 16
-slli t4, t4, 24
-or a5, a6, a5
-or a6, t4, t3
-lbu t0, 12(a0)
-lbu t1, 14(a0)
+slli a4, a4, 16
+or a1, a5, a1
+or a6, a4, a3
+slli a1, a1, 5
+srli a4, a1, 5
+sll t4, a6, a1
+li s9, 1
+mv a3, t4
+beqz a4, .L0
+li a3, 0
+.L0:
+li a5, 0
+li t6, 2
+beq a4, s9, .L1
+mv a5, a3
+.L1:
+li a7, 0
+beq a4, t6, .L2
+mv a7, a5
+.L2:
+li a5, 0
+li s6, 3
+li s3, 4
+beq a4, s6, .L3
+mv a5, a7
+.L3:
+li t0, 0
+li s11, 5
+beq a4, s3, .L4
+mv t0, a5
+.L4:
+lbu t2, 7(a0)
+li a7, 0
+beq a4, s11, .L5
+mv a7, t0
+.L5:
+li a5, 0
+lbu t0, 5(a0)
+lbu t1, 6(a0)
+li s0, 6
+slli t2, t2, 8
+beq a4, s0, .L6
+mv a5, a7
+.L6:
+li a7, 0
+lbu t3, 4(a0)
+li ra, 7
+or a3, t2, t1
+slli t0, t0, 8
+beq a4, ra, .L7
+mv a7, a5
+.L7:
+or t1, t0, t3
+slli a3, a3, 16
+andi t5, a1, 31
+mv a5, a6
+beqz a1, .L8
+mv a5, a7
+.L8:
+li t0, 0
+neg s2, t5
+or a7, a3, t1
+srl s4, a6, s2
+beqz t5, .L9
+mv t0, s4
+.L9:
+sll s7, a7, a1
+beqz a4, .L10
+li a3, 0
+mv a6, t4
+bne a4, s9, .L11
+j .L12
+.L10:
+or a3, s7, t0
+mv a6, t4
+beq a4, s9, .L12
+.L11:
+mv a6, a3
+.L12:
+li a3, 0
+bne a4, t6, .L13
+li a6, 0
+bne a4, s6, .L14
+.L15:
+li a3, 0
+beq a4, s3, .L16
+.L17:
+mv a3, a6
+.L16:
+lbu t2, 11(a0)
+li t0, 0
+beq a4, s11, .L18
+mv t0, a3
+.L18:
+li a6, 0
+lbu t1, 9(a0)
+lbu a3, 10(a0)
+slli t2, t2, 8
+beq a4, s0, .L19
+mv a6, t0
+.L19:
+li t0, 0
+lbu t3, 8(a0)
+or t2, t2, a3
+slli t1, t1, 8
+beq a4, ra, .L20
+mv t0, a6
+.L20:
+or a3, t1, t3
+slli t2, t2, 16
+mv s1, a7
+beqz a1, .L21
+mv s1, t0
+.L21:
+li t0, 0
+or a6, t2, a3
+srl s8, a7, s2
+beqz t5, .L22
+mv t0, s8
+.L22:
+sll s10, a6, a1
+beqz a4, .L23
+li a7, 0
+li a3, 0
+bnez t5, .L24
+j .L25
+.L13:
+mv a3, a6
+li a6, 0
+beq a4, s6, .L15
+.L14:
+mv a6, a3
+li a3, 0
+bne a4, s3, .L17
+j .L16
+.L23:
+or a7, s10, t0
+li a3, 0
+beqz t5, .L25
+.L24:
+mv a3, s4
+.L25:
+beq a4, s9, .L26
+mv a3, t4
+bne a4, t6, .L27
+.L28:
+li a7, 0
+bne a4, s6, .L29
+.L30:
+li a3, 0
+beq a4, s3, .L31
+.L32:
+mv a3, a7
+.L31:
lbu t2, 15(a0)
-slli a7, a7, 8
+li t0, 0
+beq a4, s11, .L33
+mv t0, a3
+.L33:
+li a7, 0
+lbu t1, 13(a0)
+lbu a3, 14(a0)
+slli t2, t2, 8
+beq a4, s0, .L34
+mv a7, t0
+.L34:
+li t0, 0
+lbu t3, 12(a0)
+or t2, t2, a3
+slli t1, t1, 8
+beq a4, ra, .L35
+mv t0, a7
+.L35:
+or a3, t1, t3
+slli t2, t2, 16
+mv s5, a6
+beqz a1, .L36
+mv s5, t0
+.L36:
+li t0, 0
+or a7, t2, a3
+srl a3, a6, s2
+sw a3, 24(sp)
+beqz t5, .L37
+lw t0, 24(sp)
+.L37:
+sll a3, a7, a1
+sw a3, 20(sp)
+beqz a4, .L38
+li a6, 0
+li a3, 0
+bnez t5, .L39
+j .L40
+.L26:
+or a7, s7, a3
+mv a3, t4
+beq a4, t6, .L28
+.L27:
+mv a3, a7
+li a7, 0
+beq a4, s6, .L30
+.L29:
+mv a7, a3
+li a3, 0
+bne a4, s3, .L32
+j .L31
+.L38:
+or a6, a3, t0
+li a3, 0
+beqz t5, .L40
+.L39:
+mv a3, s8
+.L40:
+beq a4, s9, .L41
+li a3, 0
+bnez t5, .L42
+.L43:
+beq a4, t6, .L44
+.L45:
+mv t0, t4
+bne a4, s6, .L46
+.L47:
+li a3, 0
+beq a4, s3, .L48
+.L49:
+mv a3, t0
+.L48:
+lbu t2, 19(a0)
+li t0, 0
+beq a4, s11, .L50
+mv t0, a3
+.L50:
+li a6, 0
+lbu t1, 17(a0)
+lbu a3, 18(a0)
+slli t2, t2, 8
+beq a4, s0, .L51
+mv a6, t0
+.L51:
+li t0, 0
lbu t3, 16(a0)
-lbu t4, 17(a0)
-lbu t5, 18(a0)
-lbu t6, 19(a0)
-or a5, a6, a5
-or a6, a7, t0
-slli t1, t1, 16
-slli t2, t2, 24
-or a7, t2, t1
-slli t4, t4, 8
-slli t5, t5, 16
-slli t6, t6, 24
-lbu t0, 20(a0)
+or t2, t2, a3
+slli t1, t1, 8
+beq a4, ra, .L52
+mv t0, a6
+.L52:
+or a3, t1, t3
+slli t2, t2, 16
+mv s6, a7
+beqz a1, .L53
+mv s6, t0
+.L53:
+li t0, 0
+or a6, t2, a3
+srl a3, a7, s2
+sw a3, 16(sp)
+beqz t5, .L54
+lw t0, 16(sp)
+.L54:
+sll a3, a6, a1
+sw a3, 12(sp)
+beqz a4, .L55
+li a7, 0
+li a3, 0
+bnez t5, .L56
+j .L57
+.L41:
+or a6, s10, a3
+li a3, 0
+beqz t5, .L43
+.L42:
+mv a3, s4
+bne a4, t6, .L45
+.L44:
+or a6, s7, a3
+mv t0, t4
+beq a4, s6, .L47
+.L46:
+mv t0, a6
+li a3, 0
+bne a4, s3, .L49
+j .L48
+.L55:
+or a7, a3, t0
+li a3, 0
+beqz t5, .L57
+.L56:
+lw a3, 24(sp)
+.L57:
+beq a4, s9, .L58
+li a3, 0
+bnez t5, .L59
+.L60:
+beq a4, t6, .L61
+.L62:
+li a3, 0
+bnez t5, .L63
+.L64:
+li t0, 3
+beq a4, t0, .L65
+.L66:
+mv a3, t4
+beq a4, s3, .L67
+.L68:
+mv a3, a7
+.L67:
+lbu t2, 23(a0)
+li t0, 0
+beq a4, s11, .L69
+mv t0, a3
+.L69:
+li a7, 0
lbu t1, 21(a0)
-lbu t2, 22(a0)
-lbu s0, 23(a0)
-or t3, t4, t3
-or t4, t6, t5
-or a6, a7, a6
-or a7, t4, t3
+lbu a3, 22(a0)
+slli t2, t2, 8
+beq a4, s0, .L70
+mv a7, t0
+.L70:
+li t0, 0
+lbu t3, 20(a0)
+or t2, t2, a3
slli t1, t1, 8
+beq a4, ra, .L71
+mv t0, a7
+.L71:
+or a3, t1, t3
+slli t2, t2, 16
+mv s9, a6
+beqz a1, .L72
+mv s9, t0
+.L72:
+li t1, 0
+or t0, t2, a3
+srl a6, a6, s2
+beqz t5, .L73
+mv t1, a6
+.L73:
+sll a7, t0, a1
+beqz a4, .L74
+li t1, 0
+li a3, 0
+bnez t5, .L75
+j .L76
+.L58:
+lw a7, 20(sp)
+or a7, a7, a3
+li a3, 0
+beqz t5, .L60
+.L59:
+mv a3, s8
+bne a4, t6, .L62
+.L61:
+or a7, s10, a3
+li a3, 0
+beqz t5, .L64
+.L63:
+mv a3, s4
+li t0, 3
+bne a4, t0, .L66
+.L65:
+or a7, s7, a3
+mv a3, t4
+bne a4, s3, .L68
+j .L67
+.L74:
+or t1, a7, t1
+li a3, 0
+beqz t5, .L76
+.L75:
+lw a3, 16(sp)
+.L76:
+li t2, 1
+beq a4, t2, .L77
+li a3, 0
+bnez t5, .L78
+.L79:
+beq a4, t6, .L80
+.L81:
+li a3, 0
+bnez t5, .L82
+.L83:
+li t2, 3
+beq a4, t2, .L84
+.L85:
+li a3, 0
+bnez t5, .L86
+.L87:
+bne a4, s3, .L88
+.L89:
+or t1, s7, a3
+.L88:
+lbu t6, 27(a0)
+mv t2, t4
+beq a4, s11, .L90
+mv t2, t1
+.L90:
+sw s10, 8(sp)
+li t1, 0
lbu t3, 25(a0)
-slli t2, t2, 16
-slli s0, s0, 24
-or t0, t1, t0
-or t1, s0, t2
-lbu t2, 24(a0)
-lbu t4, 26(a0)
-lbu t5, 27(a0)
-slli t3, t3, 8
-lbu t6, 28(a0)
-lbu s0, 29(a0)
-lbu s1, 30(a0)
-lbu a0, 31(a0)
-or t0, t1, t0
-or t1, t3, t2
-slli t4, t4, 16
-slli t5, t5, 24
-or t2, t5, t4
-slli s0, s0, 8
-slli s1, s1, 16
-slli a0, a0, 24
-or t3, s0, t6
-or a0, a0, s1
-or t1, t2, t1
-or a0, a0, t3
-sw zero, 24(sp)
-sw zero, 28(sp)
-sw zero, 32(sp)
-sw zero, 36(sp)
-sw zero, 8(sp)
-sw zero, 12(sp)
-sw zero, 16(sp)
-sw zero, 20(sp)
-slli a1, a1, 2
-sw a7, 56(sp)
-sw t0, 60(sp)
-sw t1, 64(sp)
-sw a0, 68(sp)
-andi a1, a1, 28
-addi a0, sp, 40
-sw a3, 40(sp)
-sw a4, 44(sp)
-sw a5, 48(sp)
-sw a6, 52(sp)
-sub a4, a0, a1
-lw a5, 24(a4)
-lw a1, 0(a4)
-lw a0, 4(a4)
-lw a6, 8(a4)
-lw a3, 12(a4)
-lw a7, 20(a4)
-lw t0, 16(a4)
-lw a4, 28(a4)
-srli t1, a5, 24
-srli t2, a5, 16
-srli t3, a5, 8
-sb a5, 24(a2)
-sb t3, 25(a2)
-sb t2, 26(a2)
-sb t1, 27(a2)
-srli a5, a4, 24
-srli t1, a4, 16
-srli t2, a4, 8
-sb a4, 28(a2)
-sb t2, 29(a2)
-sb t1, 30(a2)
-sb a5, 31(a2)
-srli a4, t0, 24
-srli a5, t0, 16
-srli t1, t0, 8
-sb t0, 16(a2)
-sb t1, 17(a2)
-sb a5, 18(a2)
-sb a4, 19(a2)
-srli a4, a7, 24
-srli a5, a7, 16
-srli t0, a7, 8
-sb a7, 20(a2)
-sb t0, 21(a2)
-sb a5, 22(a2)
-sb a4, 23(a2)
-srli a4, a6, 24
-srli a5, a6, 16
-srli a7, a6, 8
-sb a6, 8(a2)
-sb a7, 9(a2)
-sb a5, 10(a2)
-sb a4, 11(a2)
-srli a4, a3, 24
-srli a5, a3, 16
-srli a6, a3, 8
-sb a3, 12(a2)
-sb a6, 13(a2)
-sb a5, 14(a2)
-sb a4, 15(a2)
-srli a3, a1, 24
-srli a4, a1, 16
-srli a5, a1, 8
-sb a1, 0(a2)
-sb a5, 1(a2)
-sb a4, 2(a2)
-sb a3, 3(a2)
-srli a1, a0, 24
-srli a3, a0, 16
-srli a4, a0, 8
-sb a0, 4(a2)
+lbu a3, 26(a0)
+slli t6, t6, 8
+beq a4, s0, .L91
+mv t1, t2
+.L91:
+mv s10, s8
+li t2, 0
+lbu s0, 24(a0)
+or t6, t6, a3
+slli a3, t3, 8
+beq a4, ra, .L92
+mv t2, t1
+.L92:
+li s8, 4
+or a3, a3, s0
+slli t6, t6, 16
+mv ra, t0
+beqz a1, .L93
+mv ra, t2
+.L93:
+li s3, 5
+li t3, 0
+or t2, t6, a3
+srl t0, t0, s2
+li s0, 6
+beqz t5, .L94
+mv t3, t0
+.L94:
+mv s11, a5
+sll t1, t2, a1
+li t6, 2
+mv a5, s7
+beqz a4, .L95
+li t3, 0
+j .L96
+.L77:
+lw t1, 12(sp)
+or t1, t1, a3
+li a3, 0
+beqz t5, .L79
+.L78:
+lw a3, 24(sp)
+bne a4, t6, .L81
+.L80:
+lw t1, 20(sp)
+or t1, t1, a3
+li a3, 0
+beqz t5, .L83
+.L82:
+mv a3, s8
+li t2, 3
+bne a4, t2, .L85
+.L84:
+or t1, s10, a3
+li a3, 0
+beqz t5, .L87
+.L86:
+mv a3, s4
+beq a4, s3, .L89
+j .L88
+.L95:
+or t3, t1, t3
+.L96:
+mv s7, s4
+li a3, 0
+beqz t5, .L97
+mv a3, a6
+.L97:
+li s4, 1
+bne a4, s4, .L98
+or t3, a7, a3
+.L98:
+mv s4, s7
+li a3, 0
+bnez t5, .L99
+beq a4, t6, .L100
+.L101:
+li a3, 0
+bnez t5, .L102
+.L103:
+li t6, 3
+beq a4, t6, .L104
+.L105:
+li a3, 0
+bnez t5, .L106
+.L107:
+beq a4, s8, .L108
+.L109:
+li a3, 0
+bnez t5, .L110
+.L111:
+li s8, 2
+bne a4, s3, .L112
+.L113:
+or t3, a5, a3
+.L112:
+lbu t6, 31(a0)
+mv a3, t4
+beq a4, s0, .L114
+mv a3, t3
+.L114:
+li t3, 0
+lbu s4, 29(a0)
+lbu s0, 30(a0)
+slli t6, t6, 8
+li s3, 7
+beq a4, s3, .L115
+mv t3, a3
+.L115:
+lbu a3, 28(a0)
+slli s4, s4, 8
+or t6, t6, s0
+mv a0, t2
+beqz a1, .L116
+mv a0, t3
+.L116:
+li t3, 0
+or a3, s4, a3
+slli t6, t6, 16
+li s0, 6
+li s3, 4
+beqz t5, .L117
+srl t3, t2, s2
+.L117:
+or s2, t6, a3
+li t6, 5
+beqz a4, .L118
+li t2, 0
+li a3, 0
+bnez t5, .L119
+j .L120
+.L99:
+lw a3, 16(sp)
+bne a4, t6, .L101
+.L100:
+lw t3, 12(sp)
+or t3, t3, a3
+li a3, 0
+beqz t5, .L103
+.L102:
+lw a3, 24(sp)
+li t6, 3
+bne a4, t6, .L105
+.L104:
+lw t3, 20(sp)
+or t3, t3, a3
+li a3, 0
+beqz t5, .L107
+.L106:
+mv a3, s10
+bne a4, s8, .L109
+.L108:
+lw t3, 8(sp)
+or t3, t3, a3
+li a3, 0
+beqz t5, .L111
+.L110:
+mv a3, s4
+li s8, 2
+beq a4, s3, .L113
+j .L112
+.L118:
+sll a3, s2, a1
+or t2, a3, t3
+li a3, 0
+beqz t5, .L120
+.L119:
+mv a3, t0
+.L120:
+li t0, 1
+beq a4, t0, .L121
+li a3, 0
+bnez t5, .L122
+.L123:
+bne a4, s8, .L124
+.L125:
+or t2, a7, a3
+.L124:
+li a3, 0
+li a6, 3
+bnez t5, .L126
+beq a4, a6, .L127
+.L128:
+li a3, 0
+bnez t5, .L129
+.L130:
+beq a4, s3, .L131
+.L132:
+li a3, 0
+bnez t5, .L133
+.L134:
+beq a4, t6, .L135
+.L136:
+li a3, 0
+bnez t5, .L137
+.L138:
+beq a4, s0, .L139
+.L140:
+li a3, 7
+bne a4, a3, .L141
+.L142:
+beqz a1, .L143
+.L144:
+mv s2, t4
+.L143:
+lui a1, 16
+addi a1, a1, -1
+srli a3, s11, 16
+and a4, s11, a1
+srli a6, s11, 24
+srli a4, a4, 8
+sb s11, 0(a2)
+sb a4, 1(a2)
+sb a3, 2(a2)
+sb a6, 3(a2)
+srli a3, s1, 16
+and a4, s1, a1
+srli a4, a4, 8
+srli a5, s1, 24
+sb s1, 4(a2)
sb a4, 5(a2)
sb a3, 6(a2)
-sb a1, 7(a2)
-lw s0, 76(sp)
-lw s1, 72(sp)
+sb a5, 7(a2)
+srli a3, s5, 16
+and a4, s5, a1
+srli a4, a4, 8
+srli a5, s5, 24
+sb s5, 8(a2)
+sb a4, 9(a2)
+sb a3, 10(a2)
+sb a5, 11(a2)
+srli a3, s6, 16
+and a4, s6, a1
+srli a4, a4, 8
+srli a5, s6, 24
+sb s6, 12(a2)
+sb a4, 13(a2)
+sb a3, 14(a2)
+sb a5, 15(a2)
+srli a3, s9, 16
+and a4, s9, a1
+srli a4, a4, 8
+srli a5, s9, 24
+sb s9, 16(a2)
+sb a4, 17(a2)
+sb a3, 18(a2)
+sb a5, 19(a2)
+srli a3, ra, 16
+and a4, ra, a1
+srli a4, a4, 8
+srli a5, ra, 24
+sb ra, 20(a2)
+sb a4, 21(a2)
+sb a3, 22(a2)
+sb a5, 23(a2)
+srli a3, a0, 16
+and a4, a0, a1
+srli a4, a4, 8
+srli a5, a0, 24
+sb a0, 24(a2)
+sb a4, 25(a2)
+sb a3, 26(a2)
+sb a5, 27(a2)
+srli a0, s2, 16
+and a1, s2, a1
+srli a1, a1, 8
+srli a3, s2, 24
+sb s2, 28(a2)
+sb a1, 29(a2)
+sb a0, 30(a2)
+sb a3, 31(a2)
+lw ra, 76(sp)
+lw s0, 72(sp)
+lw s1, 68(sp)
+lw s2, 64(sp)
+lw s3, 60(sp)
+lw s4, 56(sp)
+lw s5, 52(sp)
+lw s6, 48(sp)
+lw s7, 44(sp)
+lw s8, 40(sp)
+lw s9, 36(sp)
+lw s10, 32(sp)
+lw s11, 28(sp)
addi sp, sp, 80
ret
+.L121:
+or t2, t1, a3
+li a3, 0
+beqz t5, .L123
+.L122:
+mv a3, a6
+beq a4, s8, .L125
+j .L124
+.L126:
+lw a3, 16(sp)
+bne a4, a6, .L128
+.L127:
+lw a6, 12(sp)
+or t2, a6, a3
+li a3, 0
+beqz t5, .L130
+.L129:
+lw a3, 24(sp)
+bne a4, s3, .L132
+.L131:
+lw a6, 20(sp)
+or t2, a6, a3
+li a3, 0
+beqz t5, .L134
+.L133:
+mv a3, s10
+bne a4, t6, .L136
+.L135:
+lw a6, 8(sp)
+or t2, a6, a3
+li a3, 0
+beqz t5, .L138
+.L137:
+mv a3, s7
+bne a4, s0, .L140
+.L139:
+or t2, a5, a3
+li a3, 7
+beq a4, a3, .L142
+.L141:
+mv t4, t2
+bnez a1, .L144
+j .L143
Occurrences (1):
Generated 2026-10-15 08:05 UTC.