146 lines
5.0 KiB
Plaintext
146 lines
5.0 KiB
Plaintext
; Binary emission of 32-bit code.
|
|
test binemit
|
|
target riscv32
|
|
|
|
function %RV32I(i32 link [%x1]) -> i32 link [%x1] {
|
|
sig0 = ()
|
|
fn0 = %foo()
|
|
|
|
ebb0(v9999: i32):
|
|
[-,%x10] v1 = iconst.i32 1
|
|
[-,%x21] v2 = iconst.i32 2
|
|
|
|
; Integer Register-Register Operations.
|
|
; add
|
|
[-,%x7] v10 = iadd v1, v2 ; bin: 015503b3
|
|
[-,%x16] v11 = iadd v2, v1 ; bin: 00aa8833
|
|
; sub
|
|
[-,%x7] v12 = isub v1, v2 ; bin: 415503b3
|
|
[-,%x16] v13 = isub v2, v1 ; bin: 40aa8833
|
|
; and
|
|
[-,%x7] v20 = band v1, v2 ; bin: 015573b3
|
|
[-,%x16] v21 = band v2, v1 ; bin: 00aaf833
|
|
; or
|
|
[-,%x7] v22 = bor v1, v2 ; bin: 015563b3
|
|
[-,%x16] v23 = bor v2, v1 ; bin: 00aae833
|
|
; xor
|
|
[-,%x7] v24 = bxor v1, v2 ; bin: 015543b3
|
|
[-,%x16] v25 = bxor v2, v1 ; bin: 00aac833
|
|
; sll
|
|
[-,%x7] v30 = ishl v1, v2 ; bin: 015513b3
|
|
[-,%x16] v31 = ishl v2, v1 ; bin: 00aa9833
|
|
; srl
|
|
[-,%x7] v32 = ushr v1, v2 ; bin: 015553b3
|
|
[-,%x16] v33 = ushr v2, v1 ; bin: 00aad833
|
|
; sra
|
|
[-,%x7] v34 = sshr v1, v2 ; bin: 415553b3
|
|
[-,%x16] v35 = sshr v2, v1 ; bin: 40aad833
|
|
; slt
|
|
[-,%x7] v42 = icmp slt v1, v2 ; bin: 015523b3
|
|
[-,%x16] v43 = icmp slt v2, v1 ; bin: 00aaa833
|
|
; sltu
|
|
[-,%x7] v44 = icmp ult v1, v2 ; bin: 015533b3
|
|
[-,%x16] v45 = icmp ult v2, v1 ; bin: 00aab833
|
|
|
|
; Integer Register-Immediate Instructions
|
|
|
|
; addi
|
|
[-,%x7] v100 = iadd_imm v1, 1000 ; bin: 3e850393
|
|
[-,%x16] v101 = iadd_imm v2, -905 ; bin: c77a8813
|
|
; andi
|
|
[-,%x7] v110 = band_imm v1, 1000 ; bin: 3e857393
|
|
[-,%x16] v111 = band_imm v2, -905 ; bin: c77af813
|
|
; ori
|
|
[-,%x7] v112 = bor_imm v1, 1000 ; bin: 3e856393
|
|
[-,%x16] v113 = bor_imm v2, -905 ; bin: c77ae813
|
|
; xori
|
|
[-,%x7] v114 = bxor_imm v1, 1000 ; bin: 3e854393
|
|
[-,%x16] v115 = bxor_imm v2, -905 ; bin: c77ac813
|
|
|
|
; slli
|
|
[-,%x7] v120 = ishl_imm v1, 31 ; bin: 01f51393
|
|
[-,%x16] v121 = ishl_imm v2, 8 ; bin: 008a9813
|
|
; srli
|
|
[-,%x7] v122 = ushr_imm v1, 31 ; bin: 01f55393
|
|
[-,%x16] v123 = ushr_imm v2, 8 ; bin: 008ad813
|
|
; srai
|
|
[-,%x7] v124 = sshr_imm v1, 31 ; bin: 41f55393
|
|
[-,%x16] v125 = sshr_imm v2, 8 ; bin: 408ad813
|
|
|
|
; slti
|
|
[-,%x7] v130 = icmp_imm slt v1, 1000 ; bin: 3e852393
|
|
[-,%x16] v131 = icmp_imm slt v2, -905 ; bin: c77aa813
|
|
; sltiu
|
|
[-,%x7] v132 = icmp_imm ult v1, 1000 ; bin: 3e853393
|
|
[-,%x16] v133 = icmp_imm ult v2, -905 ; bin: c77ab813
|
|
|
|
; lui
|
|
[-,%x7] v140 = iconst.i32 0x12345000 ; bin: 123453b7
|
|
[-,%x16] v141 = iconst.i32 0xffffffff_fedcb000 ; bin: fedcb837
|
|
; addi
|
|
[-,%x7] v142 = iconst.i32 1000 ; bin: 3e800393
|
|
[-,%x16] v143 = iconst.i32 -905 ; bin: c7700813
|
|
|
|
; Copies alias to iadd_imm.
|
|
[-,%x7] v150 = copy v1 ; bin: 00050393
|
|
[-,%x16] v151 = copy v2 ; bin: 000a8813
|
|
|
|
; Control Transfer Instructions
|
|
|
|
; jal %x1, fn0
|
|
call fn0() ; bin: Call(%foo) 000000ef
|
|
|
|
; jalr %x1, %x10
|
|
call_indirect sig0, v1() ; bin: 000500e7
|
|
call_indirect sig0, v2() ; bin: 000a80e7
|
|
|
|
brz v1, ebb3
|
|
brnz v1, ebb1
|
|
|
|
; jalr %x0, %x1, 0
|
|
return v9999 ; bin: 00008067
|
|
|
|
ebb1:
|
|
; beq 0x000
|
|
br_icmp eq v1, v2, ebb1 ; bin: 01550063
|
|
; bne 0xffc
|
|
br_icmp ne v1, v2, ebb1 ; bin: ff551ee3
|
|
; blt 0xff8
|
|
br_icmp slt v1, v2, ebb1 ; bin: ff554ce3
|
|
; bge 0xff4
|
|
br_icmp sge v1, v2, ebb1 ; bin: ff555ae3
|
|
; bltu 0xff0
|
|
br_icmp ult v1, v2, ebb1 ; bin: ff5568e3
|
|
; bgeu 0xfec
|
|
br_icmp uge v1, v2, ebb1 ; bin: ff5576e3
|
|
|
|
; Forward branches.
|
|
; beq 0x018
|
|
br_icmp eq v2, v1, ebb2 ; bin: 00aa8c63
|
|
; bne 0x014
|
|
br_icmp ne v2, v1, ebb2 ; bin: 00aa9a63
|
|
; blt 0x010
|
|
br_icmp slt v2, v1, ebb2 ; bin: 00aac863
|
|
; bge 0x00c
|
|
br_icmp sge v2, v1, ebb2 ; bin: 00aad663
|
|
; bltu 0x008
|
|
br_icmp ult v2, v1, ebb2 ; bin: 00aae463
|
|
; bgeu 0x004
|
|
br_icmp uge v2, v1, ebb2 ; bin: 00aaf263
|
|
|
|
fallthrough ebb2
|
|
|
|
ebb2:
|
|
; jal %x0, 0x00000
|
|
jump ebb2 ; bin: 0000006f
|
|
|
|
ebb3:
|
|
; beq x, %x0
|
|
brz v1, ebb3 ; bin: 00050063
|
|
; bne x, %x0
|
|
brnz v1, ebb3 ; bin: fe051ee3
|
|
|
|
; jal %x0, 0x1ffff4
|
|
jump ebb2 ; bin: ff5ff06f
|
|
}
|