Files
wasmtime/cranelift/filetests/filetests/isa/riscv64/stack.clif
Trevor Elliott cc073593a4 Fix block label printing in precise-output tests (#5798)
As a follow-up to #5780, disassemble the regions identified by bb_starts, falling back on disassembling the whole buffer. This ensures that instructions like br_table that introduce a lot of constants don't throw off capstone for the remainder of the function.

---------

Co-authored-by: Jamey Sharp <jamey@minilop.net>
2023-02-16 02:35:26 +00:00

1088 lines
20 KiB
Plaintext

test compile precise-output
set unwind_info=false
set enable_probestack=true
target riscv64
function %stack_addr_small() -> i64 {
ss0 = explicit_slot 8
block0:
v0 = stack_addr.i64 ss0
return v0
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; add sp,-16
; block0:
; load_addr a0,nsp+0
; add sp,+16
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; addi sp, sp, -0x10
; block1: ; offset 0x14
; mv a0, sp
; addi sp, sp, 0x10
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %stack_addr_big() -> i64 {
ss0 = explicit_slot 100000
ss1 = explicit_slot 8
block0:
v0 = stack_addr.i64 ss0
return v0
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; lui a0,24
; addi a0,a0,1712
; call %Probestack
; add sp,-100016
; block0:
; load_addr a0,nsp+0
; add sp,+100016
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; lui a0, 0x18
; addi a0, a0, 0x6b0
; auipc t5, 0
; ld t5, 0xc(t5)
; j 0xc
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %Probestack 0
; .byte 0x00, 0x00, 0x00, 0x00
; jalr t5
; lui t6, 0xfffe8
; addi t6, t6, -0x6b0
; add sp, t6, sp
; block1: ; offset 0x3c
; mv a0, sp
; lui t6, 0x18
; addi t6, t6, 0x6b0
; add sp, t6, sp
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %stack_load_small() -> i64 {
ss0 = explicit_slot 8
block0:
v0 = stack_load.i64 ss0
return v0
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; add sp,-16
; block0:
; load_addr t1,nsp+0
; ld a0,0(t1)
; add sp,+16
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; addi sp, sp, -0x10
; block1: ; offset 0x14
; mv t1, sp
; ld a0, 0(t1)
; addi sp, sp, 0x10
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %stack_load_big() -> i64 {
ss0 = explicit_slot 100000
ss1 = explicit_slot 8
block0:
v0 = stack_load.i64 ss0
return v0
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; lui a0,24
; addi a0,a0,1712
; call %Probestack
; add sp,-100016
; block0:
; load_addr t1,nsp+0
; ld a0,0(t1)
; add sp,+100016
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; lui a0, 0x18
; addi a0, a0, 0x6b0
; auipc t5, 0
; ld t5, 0xc(t5)
; j 0xc
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %Probestack 0
; .byte 0x00, 0x00, 0x00, 0x00
; jalr t5
; lui t6, 0xfffe8
; addi t6, t6, -0x6b0
; add sp, t6, sp
; block1: ; offset 0x3c
; mv t1, sp
; ld a0, 0(t1)
; lui t6, 0x18
; addi t6, t6, 0x6b0
; add sp, t6, sp
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %stack_store_small(i64) {
ss0 = explicit_slot 8
block0(v0: i64):
stack_store.i64 v0, ss0
return
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; add sp,-16
; block0:
; load_addr t2,nsp+0
; sd a0,0(t2)
; add sp,+16
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; addi sp, sp, -0x10
; block1: ; offset 0x14
; mv t2, sp
; sd a0, 0(t2)
; addi sp, sp, 0x10
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %stack_store_big(i64) {
ss0 = explicit_slot 100000
ss1 = explicit_slot 8
block0(v0: i64):
stack_store.i64 v0, ss0
return
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; lui a0,24
; addi a0,a0,1712
; call %Probestack
; add sp,-100016
; block0:
; load_addr t2,nsp+0
; sd a0,0(t2)
; add sp,+100016
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; lui a0, 0x18
; addi a0, a0, 0x6b0
; auipc t5, 0
; ld t5, 0xc(t5)
; j 0xc
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %Probestack 0
; .byte 0x00, 0x00, 0x00, 0x00
; jalr t5
; lui t6, 0xfffe8
; addi t6, t6, -0x6b0
; add sp, t6, sp
; block1: ; offset 0x3c
; mv t2, sp
; sd a0, 0(t2)
; lui t6, 0x18
; addi t6, t6, 0x6b0
; add sp, t6, sp
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %i8_spill_slot(i8) -> i8, i64 {
ss0 = explicit_slot 1000
block0(v0: i8):
v1 = iconst.i64 1
v2 = iconst.i64 2
v3 = iconst.i64 3
v4 = iconst.i64 4
v5 = iconst.i64 5
v6 = iconst.i64 6
v7 = iconst.i64 7
v8 = iconst.i64 8
v9 = iconst.i64 9
v10 = iconst.i64 10
v11 = iconst.i64 11
v12 = iconst.i64 12
v13 = iconst.i64 13
v14 = iconst.i64 14
v15 = iconst.i64 15
v16 = iconst.i64 16
v17 = iconst.i64 17
v18 = iconst.i64 18
v19 = iconst.i64 19
v20 = iconst.i64 20
v21 = iconst.i64 21
v22 = iconst.i64 22
v23 = iconst.i64 23
v24 = iconst.i64 24
v25 = iconst.i64 25
v26 = iconst.i64 26
v27 = iconst.i64 27
v28 = iconst.i64 28
v29 = iconst.i64 29
v30 = iconst.i64 30
v31 = iconst.i64 31
v32 = iconst.i64 32
v33 = iconst.i64 33
v34 = iconst.i64 34
v35 = iconst.i64 35
v36 = iconst.i64 36
v37 = iconst.i64 37
v38 = iconst.i64 38
v39 = iconst.i64 39
v40 = iconst.i64 30
v41 = iconst.i64 31
v42 = iconst.i64 32
v43 = iconst.i64 33
v44 = iconst.i64 34
v45 = iconst.i64 35
v46 = iconst.i64 36
v47 = iconst.i64 37
v48 = iconst.i64 38
v49 = iconst.i64 39
v50 = iconst.i64 30
v51 = iconst.i64 31
v52 = iconst.i64 32
v53 = iconst.i64 33
v54 = iconst.i64 34
v55 = iconst.i64 35
v56 = iconst.i64 36
v57 = iconst.i64 37
v58 = iconst.i64 38
v59 = iconst.i64 39
v60 = iconst.i64 30
v61 = iconst.i64 31
v62 = iconst.i64 32
v63 = iconst.i64 33
v64 = iconst.i64 34
v65 = iconst.i64 35
v66 = iconst.i64 36
v67 = iconst.i64 37
v68 = iconst.i64 38
v69 = iconst.i64 39
v70 = iadd.i64 v1, v2
v71 = iadd.i64 v3, v4
v72 = iadd.i64 v5, v6
v73 = iadd.i64 v7, v8
v74 = iadd.i64 v9, v10
v75 = iadd.i64 v11, v12
v76 = iadd.i64 v13, v14
v77 = iadd.i64 v15, v16
v78 = iadd.i64 v17, v18
v79 = iadd.i64 v19, v20
v80 = iadd.i64 v21, v22
v81 = iadd.i64 v23, v24
v82 = iadd.i64 v25, v26
v83 = iadd.i64 v27, v28
v84 = iadd.i64 v29, v30
v85 = iadd.i64 v31, v32
v86 = iadd.i64 v33, v34
v87 = iadd.i64 v35, v36
v88 = iadd.i64 v37, v38
v89 = iadd.i64 v39, v40
v90 = iadd.i64 v41, v42
v91 = iadd.i64 v43, v44
v92 = iadd.i64 v45, v46
v93 = iadd.i64 v47, v48
v94 = iadd.i64 v49, v50
v95 = iadd.i64 v51, v52
v96 = iadd.i64 v53, v54
v97 = iadd.i64 v55, v56
v98 = iadd.i64 v57, v58
v99 = iadd.i64 v59, v60
v100 = iadd.i64 v61, v62
v101 = iadd.i64 v63, v64
v102 = iadd.i64 v65, v66
v103 = iadd.i64 v67, v68
v104 = iadd.i64 v69, v70
v105 = iadd.i64 v71, v72
v106 = iadd.i64 v73, v74
v107 = iadd.i64 v75, v76
v108 = iadd.i64 v77, v78
v109 = iadd.i64 v79, v80
v110 = iadd.i64 v81, v82
v111 = iadd.i64 v83, v84
v112 = iadd.i64 v85, v86
v113 = iadd.i64 v87, v88
v114 = iadd.i64 v89, v90
v115 = iadd.i64 v91, v92
v116 = iadd.i64 v93, v94
v117 = iadd.i64 v95, v96
v118 = iadd.i64 v97, v98
v119 = iadd.i64 v99, v100
v120 = iadd.i64 v101, v102
v121 = iadd.i64 v103, v104
v122 = iadd.i64 v105, v106
v123 = iadd.i64 v107, v108
v124 = iadd.i64 v109, v110
v125 = iadd.i64 v111, v112
v126 = iadd.i64 v113, v114
v127 = iadd.i64 v115, v116
v128 = iadd.i64 v117, v118
v129 = iadd.i64 v119, v120
v130 = iadd.i64 v121, v122
v131 = iadd.i64 v123, v124
v132 = iadd.i64 v125, v126
v133 = iadd.i64 v127, v128
v134 = iadd.i64 v129, v130
v135 = iadd.i64 v131, v132
v136 = iadd.i64 v133, v134
v137 = iadd.i64 v135, v136
return v0, v137
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; sd s1,-8(sp)
; sd s2,-16(sp)
; sd s3,-24(sp)
; sd s4,-32(sp)
; sd s5,-40(sp)
; sd s6,-48(sp)
; sd s7,-56(sp)
; sd s8,-64(sp)
; sd s9,-72(sp)
; sd s10,-80(sp)
; sd s11,-88(sp)
; add sp,-1280
; block0:
; sd a0,1000(nominal_sp)
; li t3,2
; addi t1,t3,1
; sd t1,1176(nominal_sp)
; li t3,4
; addi t2,t3,3
; sd t2,1168(nominal_sp)
; li t3,6
; addi a1,t3,5
; sd a1,1160(nominal_sp)
; li t3,8
; addi a2,t3,7
; sd a2,1152(nominal_sp)
; li t3,10
; addi a3,t3,9
; sd a3,1144(nominal_sp)
; li t3,12
; addi a4,t3,11
; sd a4,1136(nominal_sp)
; li t3,14
; addi a5,t3,13
; sd a5,1128(nominal_sp)
; li t3,16
; addi a6,t3,15
; sd a6,1120(nominal_sp)
; li t3,18
; addi a7,t3,17
; sd a7,1112(nominal_sp)
; li t3,20
; addi t3,t3,19
; sd t3,1104(nominal_sp)
; li t3,22
; addi t4,t3,21
; sd t4,1096(nominal_sp)
; li t3,24
; addi s6,t3,23
; sd s6,1088(nominal_sp)
; li t3,26
; addi s7,t3,25
; sd s7,1080(nominal_sp)
; li t3,28
; addi s8,t3,27
; sd s8,1072(nominal_sp)
; li t3,30
; addi s9,t3,29
; sd s9,1064(nominal_sp)
; li t3,32
; addi s10,t3,31
; sd s10,1056(nominal_sp)
; li t3,34
; addi s11,t3,33
; sd s11,1048(nominal_sp)
; li t3,36
; addi s1,t3,35
; sd s1,1040(nominal_sp)
; li t3,38
; addi s2,t3,37
; sd s2,1032(nominal_sp)
; li t3,30
; addi s3,t3,39
; sd s3,1024(nominal_sp)
; li t3,32
; addi s4,t3,31
; sd s4,1016(nominal_sp)
; li t3,34
; addi s5,t3,33
; sd s5,1008(nominal_sp)
; li t3,36
; addi s5,t3,35
; li t3,38
; addi a0,t3,37
; li t3,30
; addi t0,t3,39
; li t3,32
; addi t1,t3,31
; li t3,34
; addi t2,t3,33
; li t3,36
; addi a1,t3,35
; li t3,38
; addi a2,t3,37
; li t3,30
; addi a3,t3,39
; li t3,32
; addi a4,t3,31
; li t3,34
; addi a5,t3,33
; li t3,36
; addi a6,t3,35
; li t3,38
; addi a7,t3,37
; ld t3,1176(nominal_sp)
; addi t3,t3,39
; ld t4,1160(nominal_sp)
; ld s2,1168(nominal_sp)
; add t4,s2,t4
; ld s9,1144(nominal_sp)
; ld s7,1152(nominal_sp)
; add s6,s7,s9
; ld s3,1128(nominal_sp)
; ld s1,1136(nominal_sp)
; add s7,s1,s3
; ld s8,1112(nominal_sp)
; ld s9,1120(nominal_sp)
; add s8,s9,s8
; ld s2,1096(nominal_sp)
; ld s11,1104(nominal_sp)
; add s9,s11,s2
; ld s10,1080(nominal_sp)
; ld s11,1088(nominal_sp)
; add s10,s11,s10
; ld s1,1064(nominal_sp)
; ld s11,1072(nominal_sp)
; add s11,s11,s1
; ld s1,1048(nominal_sp)
; ld s4,1056(nominal_sp)
; add s1,s4,s1
; ld s2,1032(nominal_sp)
; ld s3,1040(nominal_sp)
; add s2,s3,s2
; ld s4,1016(nominal_sp)
; ld s3,1024(nominal_sp)
; add s3,s3,s4
; ld s4,1008(nominal_sp)
; add s5,s4,s5
; add t0,a0,t0
; add t1,t1,t2
; add t2,a1,a2
; add a0,a3,a4
; add a1,a5,a6
; add a2,a7,t3
; add t4,t4,s6
; add a3,s7,s8
; add a4,s9,s10
; add a5,s11,s1
; add a6,s2,s3
; add t0,s5,t0
; add t1,t1,t2
; add t2,a0,a1
; add t4,a2,t4
; add a0,a3,a4
; add a1,a5,a6
; add t0,t0,t1
; add t4,t2,t4
; add t1,a0,a1
; add t4,t0,t4
; add a1,t1,t4
; ld a0,1000(nominal_sp)
; add sp,+1280
; ld s1,-8(sp)
; ld s2,-16(sp)
; ld s3,-24(sp)
; ld s4,-32(sp)
; ld s5,-40(sp)
; ld s6,-48(sp)
; ld s7,-56(sp)
; ld s8,-64(sp)
; ld s9,-72(sp)
; ld s10,-80(sp)
; ld s11,-88(sp)
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; sd s1, -8(sp)
; sd s2, -0x10(sp)
; sd s3, -0x18(sp)
; sd s4, -0x20(sp)
; sd s5, -0x28(sp)
; sd s6, -0x30(sp)
; sd s7, -0x38(sp)
; sd s8, -0x40(sp)
; sd s9, -0x48(sp)
; sd s10, -0x50(sp)
; sd s11, -0x58(sp)
; addi sp, sp, -0x500
; block1: ; offset 0x40
; sd a0, 0x3e8(sp)
; addi t3, zero, 2
; addi t1, t3, 1
; sd t1, 0x498(sp)
; addi t3, zero, 4
; addi t2, t3, 3
; sd t2, 0x490(sp)
; addi t3, zero, 6
; addi a1, t3, 5
; sd a1, 0x488(sp)
; addi t3, zero, 8
; addi a2, t3, 7
; sd a2, 0x480(sp)
; addi t3, zero, 0xa
; addi a3, t3, 9
; sd a3, 0x478(sp)
; addi t3, zero, 0xc
; addi a4, t3, 0xb
; sd a4, 0x470(sp)
; addi t3, zero, 0xe
; addi a5, t3, 0xd
; sd a5, 0x468(sp)
; addi t3, zero, 0x10
; addi a6, t3, 0xf
; sd a6, 0x460(sp)
; addi t3, zero, 0x12
; addi a7, t3, 0x11
; sd a7, 0x458(sp)
; addi t3, zero, 0x14
; addi t3, t3, 0x13
; sd t3, 0x450(sp)
; addi t3, zero, 0x16
; addi t4, t3, 0x15
; sd t4, 0x448(sp)
; addi t3, zero, 0x18
; addi s6, t3, 0x17
; sd s6, 0x440(sp)
; addi t3, zero, 0x1a
; addi s7, t3, 0x19
; sd s7, 0x438(sp)
; addi t3, zero, 0x1c
; addi s8, t3, 0x1b
; sd s8, 0x430(sp)
; addi t3, zero, 0x1e
; addi s9, t3, 0x1d
; sd s9, 0x428(sp)
; addi t3, zero, 0x20
; addi s10, t3, 0x1f
; sd s10, 0x420(sp)
; addi t3, zero, 0x22
; addi s11, t3, 0x21
; sd s11, 0x418(sp)
; addi t3, zero, 0x24
; addi s1, t3, 0x23
; sd s1, 0x410(sp)
; addi t3, zero, 0x26
; addi s2, t3, 0x25
; sd s2, 0x408(sp)
; addi t3, zero, 0x1e
; addi s3, t3, 0x27
; sd s3, 0x400(sp)
; addi t3, zero, 0x20
; addi s4, t3, 0x1f
; sd s4, 0x3f8(sp)
; addi t3, zero, 0x22
; addi s5, t3, 0x21
; sd s5, 0x3f0(sp)
; addi t3, zero, 0x24
; addi s5, t3, 0x23
; addi t3, zero, 0x26
; addi a0, t3, 0x25
; addi t3, zero, 0x1e
; addi t0, t3, 0x27
; addi t3, zero, 0x20
; addi t1, t3, 0x1f
; addi t3, zero, 0x22
; addi t2, t3, 0x21
; addi t3, zero, 0x24
; addi a1, t3, 0x23
; addi t3, zero, 0x26
; addi a2, t3, 0x25
; addi t3, zero, 0x1e
; addi a3, t3, 0x27
; addi t3, zero, 0x20
; addi a4, t3, 0x1f
; addi t3, zero, 0x22
; addi a5, t3, 0x21
; addi t3, zero, 0x24
; addi a6, t3, 0x23
; addi t3, zero, 0x26
; addi a7, t3, 0x25
; ld t3, 0x498(sp)
; addi t3, t3, 0x27
; ld t4, 0x488(sp)
; ld s2, 0x490(sp)
; add t4, s2, t4
; ld s9, 0x478(sp)
; ld s7, 0x480(sp)
; add s6, s7, s9
; ld s3, 0x468(sp)
; ld s1, 0x470(sp)
; add s7, s1, s3
; ld s8, 0x458(sp)
; ld s9, 0x460(sp)
; add s8, s9, s8
; ld s2, 0x448(sp)
; ld s11, 0x450(sp)
; add s9, s11, s2
; ld s10, 0x438(sp)
; ld s11, 0x440(sp)
; add s10, s11, s10
; ld s1, 0x428(sp)
; ld s11, 0x430(sp)
; add s11, s11, s1
; ld s1, 0x418(sp)
; ld s4, 0x420(sp)
; add s1, s4, s1
; ld s2, 0x408(sp)
; ld s3, 0x410(sp)
; add s2, s3, s2
; ld s4, 0x3f8(sp)
; ld s3, 0x400(sp)
; add s3, s3, s4
; ld s4, 0x3f0(sp)
; add s5, s4, s5
; add t0, a0, t0
; add t1, t1, t2
; add t2, a1, a2
; add a0, a3, a4
; add a1, a5, a6
; add a2, a7, t3
; add t4, t4, s6
; add a3, s7, s8
; add a4, s9, s10
; add a5, s11, s1
; add a6, s2, s3
; add t0, s5, t0
; add t1, t1, t2
; add t2, a0, a1
; add t4, a2, t4
; add a0, a3, a4
; add a1, a5, a6
; add t0, t0, t1
; add t4, t2, t4
; add t1, a0, a1
; add t4, t0, t4
; add a1, t1, t4
; ld a0, 0x3e8(sp)
; addi sp, sp, 0x500
; ld s1, -8(sp)
; ld s2, -0x10(sp)
; ld s3, -0x18(sp)
; ld s4, -0x20(sp)
; ld s5, -0x28(sp)
; ld s6, -0x30(sp)
; ld s7, -0x38(sp)
; ld s8, -0x40(sp)
; ld s9, -0x48(sp)
; ld s10, -0x50(sp)
; ld s11, -0x58(sp)
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %i128_stack_store(i128) {
ss0 = explicit_slot 16
block0(v0: i128):
stack_store.i128 v0, ss0
return
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; add sp,-16
; block0:
; mv a2,a0
; load_addr a0,nsp+0
; sd a2,0(a0)
; sd a1,8(a0)
; add sp,+16
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; addi sp, sp, -0x10
; block1: ; offset 0x14
; ori a2, a0, 0
; mv a0, sp
; sd a2, 0(a0)
; sd a1, 8(a0)
; addi sp, sp, 0x10
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %i128_stack_store_inst_offset(i128) {
ss0 = explicit_slot 16
ss1 = explicit_slot 16
block0(v0: i128):
stack_store.i128 v0, ss1+16
return
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; add sp,-32
; block0:
; mv a2,a0
; load_addr a0,nsp+32
; sd a2,0(a0)
; sd a1,8(a0)
; add sp,+32
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; addi sp, sp, -0x20
; block1: ; offset 0x14
; ori a2, a0, 0
; addi a0, sp, 0x20
; sd a2, 0(a0)
; sd a1, 8(a0)
; addi sp, sp, 0x20
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %i128_stack_store_big(i128) {
ss0 = explicit_slot 100000
ss1 = explicit_slot 8
block0(v0: i128):
stack_store.i128 v0, ss0
return
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; lui a0,24
; addi a0,a0,1712
; call %Probestack
; add sp,-100016
; block0:
; mv a2,a0
; load_addr a0,nsp+0
; sd a2,0(a0)
; sd a1,8(a0)
; add sp,+100016
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; lui a0, 0x18
; addi a0, a0, 0x6b0
; auipc t5, 0
; ld t5, 0xc(t5)
; j 0xc
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %Probestack 0
; .byte 0x00, 0x00, 0x00, 0x00
; jalr t5
; lui t6, 0xfffe8
; addi t6, t6, -0x6b0
; add sp, t6, sp
; block1: ; offset 0x3c
; ori a2, a0, 0
; mv a0, sp
; sd a2, 0(a0)
; sd a1, 8(a0)
; lui t6, 0x18
; addi t6, t6, 0x6b0
; add sp, t6, sp
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %i128_stack_load() -> i128 {
ss0 = explicit_slot 16
block0:
v0 = stack_load.i128 ss0
return v0
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; add sp,-16
; block0:
; load_addr t2,nsp+0
; ld a0,0(t2)
; ld a1,8(t2)
; add sp,+16
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; addi sp, sp, -0x10
; block1: ; offset 0x14
; mv t2, sp
; ld a0, 0(t2)
; ld a1, 8(t2)
; addi sp, sp, 0x10
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %i128_stack_load_inst_offset() -> i128 {
ss0 = explicit_slot 16
ss1 = explicit_slot 16
block0:
v0 = stack_load.i128 ss1+16
return v0
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; add sp,-32
; block0:
; load_addr t2,nsp+32
; ld a0,0(t2)
; ld a1,8(t2)
; add sp,+32
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; addi sp, sp, -0x20
; block1: ; offset 0x14
; addi t2, sp, 0x20
; ld a0, 0(t2)
; ld a1, 8(t2)
; addi sp, sp, 0x20
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret
function %i128_stack_load_big() -> i128 {
ss0 = explicit_slot 100000
ss1 = explicit_slot 8
block0:
v0 = stack_load.i128 ss0
return v0
}
; VCode:
; add sp,-16
; sd ra,8(sp)
; sd fp,0(sp)
; mv fp,sp
; lui a0,24
; addi a0,a0,1712
; call %Probestack
; add sp,-100016
; block0:
; load_addr t2,nsp+0
; ld a0,0(t2)
; ld a1,8(t2)
; add sp,+100016
; ld ra,8(sp)
; ld fp,0(sp)
; add sp,+16
; ret
;
; Disassembled:
; block0: ; offset 0x0
; addi sp, sp, -0x10
; sd ra, 8(sp)
; sd s0, 0(sp)
; ori s0, sp, 0
; lui a0, 0x18
; addi a0, a0, 0x6b0
; auipc t5, 0
; ld t5, 0xc(t5)
; j 0xc
; .byte 0x00, 0x00, 0x00, 0x00 ; reloc_external Abs8 %Probestack 0
; .byte 0x00, 0x00, 0x00, 0x00
; jalr t5
; lui t6, 0xfffe8
; addi t6, t6, -0x6b0
; add sp, t6, sp
; block1: ; offset 0x3c
; mv t2, sp
; ld a0, 0(t2)
; ld a1, 8(t2)
; lui t6, 0x18
; addi t6, t6, 0x6b0
; add sp, t6, sp
; ld ra, 8(sp)
; ld s0, 0(sp)
; addi sp, sp, 0x10
; ret