rizin/test/db/analysis/riscv
MrQuantum1915 b4f2c39167
Feature: JOP and COP support (#6257)
* Refactor handlers

* COP Support

* JOP support

* Fix RISCV gadget search test

* Remove redundant cop,jop test

* Add COP tests

* Add JOP tests

* Combine gadget_[rjc]op.c into gadget.c
2026-05-11 09:56:35 +00:00

4201 lines
203 KiB
Text

NAME=ret
FILE=bins/elf/analysis/guess-number-riscv64
CMDS=<<EOF
af @ sym._printf_r
afl~_printf_r
EOF
EXPECT=<<EOF
0x00010330 1 68 sym._printf_r
EOF
RUN
NAME=test instructions
FILE==
CMDS=<<EOF
e asm.arch=riscv
e asm.bytes=true
e asm.bits=32
e cfg.bigendian=false
echo --- jump with compress instruction
wx 21a001009d06aa858146
pd 5
echo --- branch with compress instruction
wx 11c182809d06f5fe0000
pd 5
EOF
EXPECT=<<EOF
--- jump with compress instruction
,=< 0x00000000 21a0 j 8
| 0x00000002 0100 nop
| 0x00000004 9d06 addi a3, a3, 7
| 0x00000006 aa85 mv a1, a0
`-> 0x00000008 8146 li a3, 0
--- branch with compress instruction
,=< 0x00000000 11c1 beqz a0, 4
.--> 0x00000002 8280 ret
:`-> 0x00000004 9d06 addi a3, a3, 7
`==< 0x00000006 f5fe bnez a3, 2
0x00000008 0000 unimp
EOF
RUN
NAME=vector addition of 2 arrays
FILE=bins/elf/riscv_vec_arrsum
CMDS=<<EOF
s 0x000103d0
pd 15
EOF
EXPECT=<<EOF
;-- main:
;-- section..text:
;-- .text:
;-- $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0:
0x000103d0 lui a5, 0x12 ; [09] -r-x section size 182 named .text
0x000103d2 addi a5, a5, 8
0x000103d6 vsetivli zero, 4, e0x20, m1, ta, ma
0x000103da addi a4, a5, 0x18
0x000103de vle32.v v1, (a5)
0x000103e2 vle32.v v2, (a4)
0x000103e6 lw a3, 0x10(a5)
0x000103e8 lw a4, 0x28(a5)
0x000103ea addi a5, gp, -0x7c0
0x000103ee addw a4, a4, a3
0x000103f0 vadd.vv v1, v1, v2
0x000103f4 sw a4, 0x10(a5)
0x000103f6 li a0, 0
0x000103f8 vse32.v v1, (a5)
0x000103fc ret
EOF
RUN
NAME=
FILE=bins/elf/riscv_mul_div_bitwise
CMDS=<<EOF
e asm.bytes=true
s 0x00010462
pd 55
EOF
EXPECT=<<EOF
;-- $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0:
;-- arith:
0x00010462 7971 addi sp, sp, -0x30
0x00010464 06f4 sd ra, 0x28(sp)
0x00010466 22f0 sd s0, 0x20(sp)
0x00010468 0018 addi s0, sp, 0x30
0x0001046a aa87 mv a5, a0
0x0001046c 232ef4fc sw a5, -0x24(s0)
0x00010470 8327c4fd lw a5, -0x24(s0)
0x00010474 bb87f702 mulw a5, a5, a5
0x00010478 2326f4fe sw a5, -0x14(s0)
0x0001047c 8327c4fe lw a5, -0x14(s0)
0x00010480 3e87 mv a4, a5
0x00010482 8327c4fd lw a5, -0x24(s0)
0x00010486 bb47f702 divw a5, a4, a5
0x0001048a 2324f4fe sw a5, -0x18(s0)
0x0001048e 8327c4fe lw a5, -0x14(s0)
0x00010492 3e87 mv a4, a5
0x00010494 832784fe lw a5, -0x18(s0)
0x00010498 bb67f702 remw a5, a4, a5
0x0001049c 8127 sext.w a5, a5
0x0001049e 93f7f70f andi a5, a5, 0xff
0x000104a2 8127 sext.w a5, a5
0x000104a4 93e71700 ori a5, a5, 1
0x000104a8 2322f4fe sw a5, -0x1c(s0)
0x000104ac 832744fe lw a5, -0x1c(s0)
0x000104b0 3e87 mv a4, a5
0x000104b2 b7f7f0f0 lui a5, 0xf0f0f
0x000104b6 9387f70f addi a5, a5, 0xff
0x000104ba b98f xor a5, a5, a4
0x000104bc 8127 sext.w a5, a5
0x000104be 3e85 mv a0, a5
0x000104c0 a270 ld ra, 0x28(sp)
0x000104c2 0274 ld s0, 0x20(sp)
0x000104c4 4561 addi sp, sp, 0x30
0x000104c6 8280 ret
;-- main:
0x000104c8 0111 addi sp, sp, -0x20
0x000104ca 06ec sd ra, 0x18(sp)
0x000104cc 22e8 sd s0, 0x10(sp)
0x000104ce 0010 addi s0, sp, 0x20
0x000104d0 c167 lui a5, 0x10
0x000104d2 93872746 addi a5, a5, 0x462
0x000104d6 2326f4fe sw a5, -0x14(s0)
0x000104da 8327c4fe lw a5, -0x14(s0)
0x000104de 3e85 mv a0, a5
0x000104e0 eff03ff8 jal loc._xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0_0x10462
0x000104e4 aa87 mv a5, a0
0x000104e6 93b71700 seqz a5, a5
0x000104ea 93f7f70f andi a5, a5, 0xff
0x000104ee 8127 sext.w a5, a5
0x000104f0 3e85 mv a0, a5
0x000104f2 e260 ld ra, 0x18(sp)
0x000104f4 4264 ld s0, 0x10(sp)
0x000104f6 0561 addi sp, sp, 0x20
0x000104f8 8280 ret
0x000104fa 0000 unimp
;-- section..rodata:
;-- .rodata:
;-- _IO_stdin_used:
0x000104fc 0100 nop ; [10] -r-- section size 4 named .rodata
EOF
RUN
NAME=crypto symbols
FILE=bins/elf/riscv_crypto_64
CMDS=<<EOF
e asm.bytes=true
aaa
is
s 0x00010582
pdf
s 0x000105b0
pdf
s 0x000105de
pdf
s 0x0001060c
pdf
s 0x0001063a
pdf
s 0x00010660
pdf
s 0x0001068e
pdf
s 0x000106b4
pdf
s 0x000106da
pdf
s 0x00010700
pdf
s 0x00010726
pdf
s 0x0001074c
pdf
s 0x00010772
pdf
s 0x00010798
pdf
s 0x000107da
pdf
EOF
EXPECT=<<EOF
nth paddr vaddr bind type size lib name
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 ---------- 0x00013820 GLOBAL NOTYPE 0 __global_pointer$
1 0x00000270 0x00010270 LOCAL SECT 0 .interp
2 0x00000298 0x00010298 LOCAL SECT 0 .hash
3 0x000002c8 0x000102c8 LOCAL SECT 0 .gnu.hash
4 0x00000300 0x00010300 LOCAL SECT 0 .dynsym
5 0x00000390 0x00010390 LOCAL SECT 0 .dynstr
6 0x000003ea 0x000103ea LOCAL SECT 0 .gnu.version
7 0x000003f8 0x000103f8 LOCAL SECT 0 .gnu.version_r
8 0x00000428 0x00010428 LOCAL SECT 0 .rela.plt
9 0x00000490 0x00010490 LOCAL SECT 0 .plt
10 0x000004f0 0x000104f0 LOCAL SECT 0 .text
11 0x00000a20 0x00010a20 LOCAL SECT 0 .rodata
12 0x00000c50 0x00010c50 LOCAL SECT 0 .eh_frame_hdr
13 0x00000d08 0x00010d08 LOCAL SECT 0 .eh_frame
14 0x00001044 0x00011044 LOCAL SECT 0 .note.ABI-tag
15 0x00001df0 0x00012df0 LOCAL SECT 0 .preinit_array
16 0x00001df8 0x00012df8 LOCAL SECT 0 .init_array
17 0x00001e00 0x00012e00 LOCAL SECT 0 .fini_array
18 0x00001e08 0x00012e08 LOCAL SECT 0 .dynamic
19 0x00001fe8 0x00012fe8 LOCAL SECT 0 .got
20 0x00001ff0 0x00012ff0 LOCAL SECT 0 .got.plt
21 0x00002020 0x00013020 LOCAL SECT 0 .sdata
22 ---------- 0x00013028 LOCAL SECT 0 .bss
23 ---------- 0x00000000 LOCAL SECT 0 .comment
24 ---------- 0x00000000 LOCAL SECT 0 .riscv.attributes
25 ---------- 0x00000000 LOCAL FILE 0 start.o
26 0x000004f0 0x000104f0 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
27 0x00000514 0x00010514 LOCAL NOTYPE 0 load_gp
28 0x00000512 0x00010512 LOCAL NOTYPE 0 __wrap_main
29 ---------- 0x00000000 LOCAL FILE 0 abi-note.c
30 0x00001044 0x00011044 LOCAL OBJ 32 __abi_tag
31 ---------- 0x00000000 LOCAL FILE 0 init.c
32 ---------- 0x00000000 LOCAL FILE 0 static-reloc.c
33 0x00000520 0x00010520 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
34 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
35 0x00000522 0x00010522 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
36 0x00000522 0x00010522 LOCAL FUNC 0 deregister_tm_clones
37 0x0000053c 0x0001053c LOCAL FUNC 0 register_tm_clones
38 0x00000560 0x00010560 LOCAL FUNC 0 __do_global_dtors_aux
39 ---------- 0x00013028 LOCAL OBJ 1 completed.0
40 0x00001e00 0x00012e00 LOCAL OBJ 0 __do_global_dtors_aux_fini_array_entry
41 0x00000580 0x00010580 LOCAL FUNC 0 frame_dummy
42 0x00001df8 0x00012df8 LOCAL OBJ 0 __frame_dummy_init_array_entry
43 ---------- 0x00000000 LOCAL FILE 0 riscv_crypto_test.c
44 0x00000582 0x00010582 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zknd1p0_zkne1p0_zknh1p0
45 0x00000582 0x00010582 LOCAL FUNC 46 aes64ds
46 0x000005b0 0x000105b0 LOCAL FUNC 46 aes64dsm
47 0x000005de 0x000105de LOCAL FUNC 46 aes64es
48 0x0000060c 0x0001060c LOCAL FUNC 46 aes64esm
49 0x0000063a 0x0001063a LOCAL FUNC 38 aes64im
50 0x00000660 0x00010660 LOCAL FUNC 46 aes64ks2
51 0x0000068e 0x0001068e LOCAL FUNC 38 sha256sig0
52 0x000006b4 0x000106b4 LOCAL FUNC 38 sha256sig1
53 0x000006da 0x000106da LOCAL FUNC 38 sha256sum0
54 0x00000700 0x00010700 LOCAL FUNC 38 sha256sum1
55 0x00000726 0x00010726 LOCAL FUNC 38 sha512sig0
56 0x0000074c 0x0001074c LOCAL FUNC 38 sha512sig1
57 0x00000772 0x00010772 LOCAL FUNC 38 sha512sum0
58 0x00000798 0x00010798 LOCAL FUNC 38 sha512sum1
59 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
60 0x00001040 0x00011040 LOCAL OBJ 0 __FRAME_END__
61 ---------- 0x00000000 LOCAL FILE 0 unknown_61
62 0x00000490 0x00010490 LOCAL OBJ 0 _PROCEDURE_LINKAGE_TABLE_
63 0x00001e08 0x00012e08 LOCAL OBJ 0 _DYNAMIC
64 0x00000c50 0x00010c50 LOCAL NOTYPE 0 __GNU_EH_FRAME_HDR
65 0x00001fe8 0x00012fe8 LOCAL OBJ 0 _GLOBAL_OFFSET_TABLE_
66 0x0000089a 0x0001089a GLOBAL FUNC 144 test_sha256_instructions
68 0x00002020 0x00013020 WEAK NOTYPE 0 data_start
69 ---------- 0x00013030 GLOBAL NOTYPE 0 __BSS_END__
70 ---------- 0x00013028 GLOBAL NOTYPE 0 _edata
71 0x00002020 0x00013020 GLOBAL NOTYPE 0 __SDATA_BEGIN__
72 0x00002020 0x00013020 GLOBAL NOTYPE 0 __DATA_BEGIN__
73 0x000007be 0x000107be GLOBAL FUNC 28 test_aes32_instructions
75 0x00002020 0x00013020 GLOBAL NOTYPE 0 __data_start
76 0x00002020 0x00013020 GLOBAL OBJ 0 __dso_handle
77 0x00000a20 0x00010a20 GLOBAL OBJ 4 _IO_stdin_used
78 0x0000092a 0x0001092a GLOBAL FUNC 142 test_sha512_instructions
79 0x000007da 0x000107da GLOBAL FUNC 192 test_aes64_instructions
80 ---------- 0x00013030 GLOBAL NOTYPE 0 _end
81 0x00000520 0x00010520 GLOBAL FUNC 2 _dl_relocate_static_pie
82 0x000004f0 0x000104f0 GLOBAL FUNC 34 _start
83 ---------- 0x00013820 GLOBAL NOTYPE 0 __global_pointer$
85 ---------- 0x00013028 GLOBAL NOTYPE 0 __bss_start
86 0x000009b8 0x000109b8 GLOBAL FUNC 100 main
88 0x00002020 0x00013020 GLOBAL OBJ 0 __TMC_END__
1 0x000004d0 0x000104d0 GLOBAL FUNC 0 imp.puts
2 0x000004c0 0x000104c0 GLOBAL FUNC 0 imp.putchar
4 0x000004e0 0x000104e0 GLOBAL FUNC 0 imp.printf
5 0x000004b0 0x000104b0 GLOBAL FUNC 0 imp.__libc_start_main
; CALL XREF from sym.test_aes64_instructions @ 0x10812
;-- aes64ds:
/ loc._xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zknd1p0_zkne1p0_zknh1p0(int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; var int64_t var_30h @ stack - 0x30
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x00010582 7971 addi sp, sp, -0x30
| 0x00010584 06f4 sd ra, 0x28(sp)
| 0x00010586 22f0 sd s0, 0x20(sp)
| 0x00010588 0018 addi s0, sp, 0x30
| 0x0001058a 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x0001058e 2338b4fc sd a1, -0x30(s0) ; arg2
| 0x00010592 833784fd ld a5, -0x28(s0)
| 0x00010596 033704fd ld a4, -0x30(s0)
| 0x0001059a b387e73a aes64ds a5, a5, a4
| 0x0001059e 2334f4fe sd a5, -0x18(s0)
| 0x000105a2 833784fe ld a5, -0x18(s0)
| 0x000105a6 3e85 mv a0, a5
| 0x000105a8 a270 ld ra, 0x28(sp)
| 0x000105aa 0274 ld s0, 0x20(sp)
| 0x000105ac 4561 addi sp, sp, 0x30
\ 0x000105ae 8280 ret
; CALL XREF from sym.test_aes64_instructions @ 0x10822
/ sym.aes64dsm(int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; var int64_t var_30h @ stack - 0x30
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x000105b0 7971 addi sp, sp, -0x30
| 0x000105b2 06f4 sd ra, 0x28(sp)
| 0x000105b4 22f0 sd s0, 0x20(sp)
| 0x000105b6 0018 addi s0, sp, 0x30
| 0x000105b8 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x000105bc 2338b4fc sd a1, -0x30(s0) ; arg2
| 0x000105c0 833784fd ld a5, -0x28(s0)
| 0x000105c4 033704fd ld a4, -0x30(s0)
| 0x000105c8 b387e73e aes64dsm a5, a5, a4
| 0x000105cc 2334f4fe sd a5, -0x18(s0)
| 0x000105d0 833784fe ld a5, -0x18(s0)
| 0x000105d4 3e85 mv a0, a5
| 0x000105d6 a270 ld ra, 0x28(sp)
| 0x000105d8 0274 ld s0, 0x20(sp)
| 0x000105da 4561 addi sp, sp, 0x30
\ 0x000105dc 8280 ret
; CALL XREF from sym.test_aes64_instructions @ 0x10832
/ sym.aes64es(int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; var int64_t var_30h @ stack - 0x30
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x000105de 7971 addi sp, sp, -0x30
| 0x000105e0 06f4 sd ra, 0x28(sp)
| 0x000105e2 22f0 sd s0, 0x20(sp)
| 0x000105e4 0018 addi s0, sp, 0x30
| 0x000105e6 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x000105ea 2338b4fc sd a1, -0x30(s0) ; arg2
| 0x000105ee 833784fd ld a5, -0x28(s0)
| 0x000105f2 033704fd ld a4, -0x30(s0)
| 0x000105f6 b387e732 aes64es a5, a5, a4
| 0x000105fa 2334f4fe sd a5, -0x18(s0)
| 0x000105fe 833784fe ld a5, -0x18(s0)
| 0x00010602 3e85 mv a0, a5
| 0x00010604 a270 ld ra, 0x28(sp)
| 0x00010606 0274 ld s0, 0x20(sp)
| 0x00010608 4561 addi sp, sp, 0x30
\ 0x0001060a 8280 ret
; CALL XREF from sym.test_aes64_instructions @ 0x10842
/ sym.aes64esm(int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; var int64_t var_30h @ stack - 0x30
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x0001060c 7971 addi sp, sp, -0x30
| 0x0001060e 06f4 sd ra, 0x28(sp)
| 0x00010610 22f0 sd s0, 0x20(sp)
| 0x00010612 0018 addi s0, sp, 0x30
| 0x00010614 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x00010618 2338b4fc sd a1, -0x30(s0) ; arg2
| 0x0001061c 833784fd ld a5, -0x28(s0)
| 0x00010620 033704fd ld a4, -0x30(s0)
| 0x00010624 b387e736 aes64esm a5, a5, a4
| 0x00010628 2334f4fe sd a5, -0x18(s0)
| 0x0001062c 833784fe ld a5, -0x18(s0)
| 0x00010630 3e85 mv a0, a5
| 0x00010632 a270 ld ra, 0x28(sp)
| 0x00010634 0274 ld s0, 0x20(sp)
| 0x00010636 4561 addi sp, sp, 0x30
\ 0x00010638 8280 ret
; CALL XREF from sym.test_aes64_instructions @ 0x1084e
/ sym.aes64im(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x0001063a 7971 addi sp, sp, -0x30
| 0x0001063c 06f4 sd ra, 0x28(sp)
| 0x0001063e 22f0 sd s0, 0x20(sp)
| 0x00010640 0018 addi s0, sp, 0x30
| 0x00010642 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x00010646 833784fd ld a5, -0x28(s0)
| 0x0001064a 93970730 aes64im a5, a5
| 0x0001064e 2334f4fe sd a5, -0x18(s0)
| 0x00010652 833784fe ld a5, -0x18(s0)
| 0x00010656 3e85 mv a0, a5
| 0x00010658 a270 ld ra, 0x28(sp)
| 0x0001065a 0274 ld s0, 0x20(sp)
| 0x0001065c 4561 addi sp, sp, 0x30
\ 0x0001065e 8280 ret
; CALL XREF from sym.test_aes64_instructions @ 0x1087a
/ sym.aes64ks2(int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; var int64_t var_30h @ stack - 0x30
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x00010660 7971 addi sp, sp, -0x30
| 0x00010662 06f4 sd ra, 0x28(sp)
| 0x00010664 22f0 sd s0, 0x20(sp)
| 0x00010666 0018 addi s0, sp, 0x30
| 0x00010668 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x0001066c 2338b4fc sd a1, -0x30(s0) ; arg2
| 0x00010670 833784fd ld a5, -0x28(s0)
| 0x00010674 033704fd ld a4, -0x30(s0)
| 0x00010678 b387e77e aes64ks2 a5, a5, a4
| 0x0001067c 2334f4fe sd a5, -0x18(s0)
| 0x00010680 833784fe ld a5, -0x18(s0)
| 0x00010684 3e85 mv a0, a5
| 0x00010686 a270 ld ra, 0x28(sp)
| 0x00010688 0274 ld s0, 0x20(sp)
| 0x0001068a 4561 addi sp, sp, 0x30
\ 0x0001068c 8280 ret
; CALL XREF from sym.test_sha256_instructions @ 0x108bc
/ sym.sha256sig0(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x0001068e 7971 addi sp, sp, -0x30
| 0x00010690 06f4 sd ra, 0x28(sp)
| 0x00010692 22f0 sd s0, 0x20(sp)
| 0x00010694 0018 addi s0, sp, 0x30
| 0x00010696 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x0001069a 833784fd ld a5, -0x28(s0)
| 0x0001069e 93972710 sha256sig0 a5, a5
| 0x000106a2 2334f4fe sd a5, -0x18(s0)
| 0x000106a6 833784fe ld a5, -0x18(s0)
| 0x000106aa 3e85 mv a0, a5
| 0x000106ac a270 ld ra, 0x28(sp)
| 0x000106ae 0274 ld s0, 0x20(sp)
| 0x000106b0 4561 addi sp, sp, 0x30
\ 0x000106b2 8280 ret
; CALL XREF from sym.test_sha256_instructions @ 0x108d6
/ sym.sha256sig1(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x000106b4 7971 addi sp, sp, -0x30
| 0x000106b6 06f4 sd ra, 0x28(sp)
| 0x000106b8 22f0 sd s0, 0x20(sp)
| 0x000106ba 0018 addi s0, sp, 0x30
| 0x000106bc 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x000106c0 833784fd ld a5, -0x28(s0)
| 0x000106c4 93973710 sha256sig1 a5, a5
| 0x000106c8 2334f4fe sd a5, -0x18(s0)
| 0x000106cc 833784fe ld a5, -0x18(s0)
| 0x000106d0 3e85 mv a0, a5
| 0x000106d2 a270 ld ra, 0x28(sp)
| 0x000106d4 0274 ld s0, 0x20(sp)
| 0x000106d6 4561 addi sp, sp, 0x30
\ 0x000106d8 8280 ret
; CALL XREF from sym.test_sha256_instructions @ 0x108f0
/ sym.sha256sum0(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x000106da 7971 addi sp, sp, -0x30
| 0x000106dc 06f4 sd ra, 0x28(sp)
| 0x000106de 22f0 sd s0, 0x20(sp)
| 0x000106e0 0018 addi s0, sp, 0x30
| 0x000106e2 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x000106e6 833784fd ld a5, -0x28(s0)
| 0x000106ea 93970710 sha256sum0 a5, a5
| 0x000106ee 2334f4fe sd a5, -0x18(s0)
| 0x000106f2 833784fe ld a5, -0x18(s0)
| 0x000106f6 3e85 mv a0, a5
| 0x000106f8 a270 ld ra, 0x28(sp)
| 0x000106fa 0274 ld s0, 0x20(sp)
| 0x000106fc 4561 addi sp, sp, 0x30
\ 0x000106fe 8280 ret
; CALL XREF from sym.test_sha256_instructions @ 0x1090a
/ sym.sha256sum1(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x00010700 7971 addi sp, sp, -0x30
| 0x00010702 06f4 sd ra, 0x28(sp)
| 0x00010704 22f0 sd s0, 0x20(sp)
| 0x00010706 0018 addi s0, sp, 0x30
| 0x00010708 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x0001070c 833784fd ld a5, -0x28(s0)
| 0x00010710 93971710 sha256sum1 a5, a5
| 0x00010714 2334f4fe sd a5, -0x18(s0)
| 0x00010718 833784fe ld a5, -0x18(s0)
| 0x0001071c 3e85 mv a0, a5
| 0x0001071e a270 ld ra, 0x28(sp)
| 0x00010720 0274 ld s0, 0x20(sp)
| 0x00010722 4561 addi sp, sp, 0x30
\ 0x00010724 8280 ret
; CALL XREF from sym.test_sha512_instructions @ 0x1094a
/ sym.sha512sig0(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x00010726 7971 addi sp, sp, -0x30
| 0x00010728 06f4 sd ra, 0x28(sp)
| 0x0001072a 22f0 sd s0, 0x20(sp)
| 0x0001072c 0018 addi s0, sp, 0x30
| 0x0001072e 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x00010732 833784fd ld a5, -0x28(s0)
| 0x00010736 93976710 sha512sig0 a5, a5
| 0x0001073a 2334f4fe sd a5, -0x18(s0)
| 0x0001073e 833784fe ld a5, -0x18(s0)
| 0x00010742 3e85 mv a0, a5
| 0x00010744 a270 ld ra, 0x28(sp)
| 0x00010746 0274 ld s0, 0x20(sp)
| 0x00010748 4561 addi sp, sp, 0x30
\ 0x0001074a 8280 ret
; CALL XREF from sym.test_sha512_instructions @ 0x10964
/ sym.sha512sig1(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x0001074c 7971 addi sp, sp, -0x30
| 0x0001074e 06f4 sd ra, 0x28(sp)
| 0x00010750 22f0 sd s0, 0x20(sp)
| 0x00010752 0018 addi s0, sp, 0x30
| 0x00010754 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x00010758 833784fd ld a5, -0x28(s0)
| 0x0001075c 93977710 sha512sig1 a5, a5
| 0x00010760 2334f4fe sd a5, -0x18(s0)
| 0x00010764 833784fe ld a5, -0x18(s0)
| 0x00010768 3e85 mv a0, a5
| 0x0001076a a270 ld ra, 0x28(sp)
| 0x0001076c 0274 ld s0, 0x20(sp)
| 0x0001076e 4561 addi sp, sp, 0x30
\ 0x00010770 8280 ret
; CALL XREF from sym.test_sha512_instructions @ 0x1097e
/ sym.sha512sum0(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x00010772 7971 addi sp, sp, -0x30
| 0x00010774 06f4 sd ra, 0x28(sp)
| 0x00010776 22f0 sd s0, 0x20(sp)
| 0x00010778 0018 addi s0, sp, 0x30
| 0x0001077a 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x0001077e 833784fd ld a5, -0x28(s0)
| 0x00010782 93974710 sha512sum0 a5, a5
| 0x00010786 2334f4fe sd a5, -0x18(s0)
| 0x0001078a 833784fe ld a5, -0x18(s0)
| 0x0001078e 3e85 mv a0, a5
| 0x00010790 a270 ld ra, 0x28(sp)
| 0x00010792 0274 ld s0, 0x20(sp)
| 0x00010794 4561 addi sp, sp, 0x30
\ 0x00010796 8280 ret
; CALL XREF from sym.test_sha512_instructions @ 0x10998
/ sym.sha512sum1(int64_t arg1);
| ; arg int64_t arg1 @ a0
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x00010798 7971 addi sp, sp, -0x30
| 0x0001079a 06f4 sd ra, 0x28(sp)
| 0x0001079c 22f0 sd s0, 0x20(sp)
| 0x0001079e 0018 addi s0, sp, 0x30
| 0x000107a0 233ca4fc sd a0, -0x28(s0) ; arg1
| 0x000107a4 833784fd ld a5, -0x28(s0)
| 0x000107a8 93975710 sha512sum1 a5, a5
| 0x000107ac 2334f4fe sd a5, -0x18(s0)
| 0x000107b0 833784fe ld a5, -0x18(s0)
| 0x000107b4 3e85 mv a0, a5
| 0x000107b6 a270 ld ra, 0x28(sp)
| 0x000107b8 0274 ld s0, 0x20(sp)
| 0x000107ba 4561 addi sp, sp, 0x30
\ 0x000107bc 8280 ret
; CALL XREF from main @ 0x109e8
/ sym.test_aes64_instructions(int64_t arg6);
| ; arg int64_t arg6 @ a5
| ; var int64_t var_38h @ stack - 0x38
| ; var int64_t var_30h @ stack - 0x30
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_20h @ stack - 0x20
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| 0x000107da 3971 addi sp, sp, -0x40
| 0x000107dc 06fc sd ra, 0x38(sp)
| 0x000107de 22f8 sd s0, 0x30(sp)
| 0x000107e0 8000 addi s0, sp, 0x40
| 0x000107e2 c567 lui a5, 0x11
| 0x000107e4 83b707c3 ld a5, -0x3d0(a5) ; arg6
| 0x000107e8 2334f4fe sd a5, -0x18(s0) ; arg6
| 0x000107ec c567 lui a5, 0x11
| 0x000107ee 83b787c3 ld a5, -0x3c8(a5) ; arg6
| 0x000107f2 2330f4fe sd a5, -0x20(s0) ; arg6
| 0x000107f6 c567 lui a5, 0x11
| 0x000107f8 83b707c4 ld a5, -0x3c0(a5) ; arg6
| 0x000107fc 233cf4fc sd a5, -0x28(s0) ; arg6
| 0x00010800 c567 lui a5, 0x11
| 0x00010802 138587a5 addi a0, a5, -0x5a8 ; arg6
| 0x00010806 eff0bfcc jal sym.imp.puts ; int puts(const char *s)
| 0x0001080a 833504fe ld a1, -0x20(s0)
| 0x0001080e 033584fe ld a0, -0x18(s0)
| 0x00010812 eff01fd7 jal loc._xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zknd1p0_zkne1p0_zknh1p0
| 0x00010816 2334a4fe sd a0, -0x18(s0)
| 0x0001081a 833504fe ld a1, -0x20(s0)
| 0x0001081e 033584fe ld a0, -0x18(s0)
| 0x00010822 eff0ffd8 jal sym.aes64dsm
| 0x00010826 2334a4fe sd a0, -0x18(s0)
| 0x0001082a 833504fe ld a1, -0x20(s0)
| 0x0001082e 033584fe ld a0, -0x18(s0)
| 0x00010832 eff0dfda jal sym.aes64es
| 0x00010836 2334a4fe sd a0, -0x18(s0)
| 0x0001083a 833504fe ld a1, -0x20(s0)
| 0x0001083e 033584fe ld a0, -0x18(s0)
| 0x00010842 eff0bfdc jal sym.aes64esm
| 0x00010846 2334a4fe sd a0, -0x18(s0)
| 0x0001084a 033584fd ld a0, -0x28(s0)
| 0x0001084e eff0dfde jal sym.aes64im
| 0x00010852 233ca4fc sd a0, -0x28(s0)
| 0x00010856 833784fd ld a5, -0x28(s0)
| 0x0001085a 2338f4fc sd a5, -0x30(s0)
| 0x0001085e 833704fd ld a5, -0x30(s0)
| 0x00010862 93971731 aes64ks1i a5, a5, 1
| 0x00010866 2334f4fc sd a5, -0x38(s0)
| 0x0001086a 833784fc ld a5, -0x38(s0)
| 0x0001086e 233cf4fc sd a5, -0x28(s0)
| 0x00010872 833584fe ld a1, -0x18(s0)
| 0x00010876 033584fd ld a0, -0x28(s0)
| 0x0001087a eff07fde jal sym.aes64ks2
| 0x0001087e 233ca4fc sd a0, -0x28(s0)
| 0x00010882 833584fd ld a1, -0x28(s0)
| 0x00010886 c567 lui a5, 0x11
| 0x00010888 138587a7 addi a0, a5, -0x588
| 0x0001088c eff05fc5 jal sym.imp.printf ; int printf(const char *format)
| 0x00010890 0100 nop
| 0x00010892 e270 ld ra, 0x38(sp)
| 0x00010894 4274 ld s0, 0x30(sp)
| 0x00010896 2161 addi sp, sp, 0x40
\ 0x00010898 8280 ret
EOF
RUN
NAME=Vector instructions
FILE=bins/elf/riscv_vec_arith
CMDS=<<EOF
e asm.bytes=true
aaa
echo --- symbol table
is
echo --- vector reductions
s 0x00010c56
pdf
echo --- vector sign injection
s 0x00011566
pdf
echo --- vector saturating
s 0x00011252
pdf
echo --- vector unsigned operations
s 0x00011900
pdf
echo --- vector minmax
s 0x000118ac
pdf
echo --- vector fused multiply-add
s 0x00011416
pdf
echo --- vector float operations
s 0x00011362
pdf
echo --- floating point operations
s 0x00011362
pdf
echo --- widening operations
s 0x000112e0
pdf
echo --- comparisons
s 0x0001106a
pdf
echo --- clipping
s 0x00011830
pdf
echo --- conversions
s 0x00011524
pdf
echo --- narrowing
s 0x0001133c
pdf
echo --- average
s 0x00011804
pdf
echo --- segment access
s 0x00011742
pdf
echo --- floating point comparisons
s 0x000114b8
pdf
echo --- multi byte
s 0x00011778
pdf
echo --- shifts
s 0x00011102
pdf
echo --- strided access
s 0x000115e2
pdf
echo --- absolute value and negation
s 0x00011862
pdf
echo --- main function
s 0x000105c0
pdf
echo --- madd
s 0x00011954
pdf
echo --- bitwise
s 0x000111ae
pdf
EOF
EXPECT=<<EOF
--- symbol table
nth paddr vaddr bind type size lib name
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5 ---------- 0x00013828 GLOBAL NOTYPE 0 __global_pointer$
1 0x00000270 0x00010270 LOCAL SECT 0 .interp
2 0x00000298 0x00010298 LOCAL SECT 0 .hash
3 0x000002d0 0x000102d0 LOCAL SECT 0 .gnu.hash
4 0x00000310 0x00010310 LOCAL SECT 0 .dynsym
5 0x000003e8 0x000103e8 LOCAL SECT 0 .dynstr
6 0x0000048e 0x0001048e LOCAL SECT 0 .gnu.version
7 0x000004a0 0x000104a0 LOCAL SECT 0 .gnu.version_r
8 0x000004d0 0x000104d0 LOCAL SECT 0 .rela.plt
9 0x00000550 0x00010550 LOCAL SECT 0 .plt
10 0x000005c0 0x000105c0 LOCAL SECT 0 .text
11 0x000019c0 0x000119c0 LOCAL SECT 0 .rodata
12 0x00001a94 0x00011a94 LOCAL SECT 0 .eh_frame_hdr
13 0x00001b70 0x00011b70 LOCAL SECT 0 .eh_frame
14 0x00001e0c 0x00011e0c LOCAL SECT 0 .note.ABI-tag
15 0x00002de0 0x00012de0 LOCAL SECT 0 .preinit_array
16 0x00002de8 0x00012de8 LOCAL SECT 0 .init_array
17 0x00002df0 0x00012df0 LOCAL SECT 0 .fini_array
18 0x00002df8 0x00012df8 LOCAL SECT 0 .dynamic
19 0x00002fe8 0x00012fe8 LOCAL SECT 0 .got
20 0x00002ff0 0x00012ff0 LOCAL SECT 0 .got.plt
21 0x00003028 0x00013028 LOCAL SECT 0 .sdata
22 ---------- 0x00013048 LOCAL SECT 0 .bss
23 ---------- 0x00000000 LOCAL SECT 0 .comment
24 ---------- 0x00000000 LOCAL SECT 0 .riscv.attributes
25 ---------- 0x00000000 LOCAL FILE 0 start.o
26 0x00000ba8 0x00010ba8 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
27 0x00000bcc 0x00010bcc LOCAL NOTYPE 0 load_gp
28 0x00000bca 0x00010bca LOCAL NOTYPE 0 __wrap_main
29 ---------- 0x00000000 LOCAL FILE 0 abi-note.c
30 0x00001e0c 0x00011e0c LOCAL OBJ 32 __abi_tag
31 ---------- 0x00000000 LOCAL FILE 0 init.c
32 ---------- 0x00000000 LOCAL FILE 0 static-reloc.c
33 0x00000bd8 0x00010bd8 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
34 ---------- 0x00000000 LOCAL FILE 0 riscv_vec_arith.c
35 0x00000c36 0x00010c36 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
36 0x000005c0 0x000105c0 LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
37 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
38 0x00000bda 0x00010bda LOCAL NOTYPE 0 $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0
39 0x00000bda 0x00010bda LOCAL FUNC 0 deregister_tm_clones
40 0x00000bf4 0x00010bf4 LOCAL FUNC 0 register_tm_clones
41 0x00000c18 0x00010c18 LOCAL FUNC 0 __do_global_dtors_aux
42 ---------- 0x00013048 LOCAL OBJ 1 completed.0
43 0x00002df0 0x00012df0 LOCAL OBJ 0 __do_global_dtors_aux_fini_array_entry
44 0x00000c34 0x00010c34 LOCAL FUNC 0 frame_dummy
45 0x00002de8 0x00012de8 LOCAL OBJ 0 __frame_dummy_init_array_entry
46 ---------- 0x00000000 LOCAL FILE 0 crtstuff.c
47 0x00001e08 0x00011e08 LOCAL OBJ 0 __FRAME_END__
48 ---------- 0x00000000 LOCAL FILE 0 unknown_48
49 0x00000550 0x00010550 LOCAL OBJ 0 _PROCEDURE_LINKAGE_TABLE_
50 0x00002df8 0x00012df8 LOCAL OBJ 0 _DYNAMIC
51 0x00001a94 0x00011a94 LOCAL NOTYPE 0 __GNU_EH_FRAME_HDR
52 0x00002fe8 0x00012fe8 LOCAL OBJ 0 _GLOBAL_OFFSET_TABLE_
53 0x00000c56 0x00010c56 GLOBAL FUNC 1044 test_reductions
54 0x00001566 0x00011566 GLOBAL FUNC 124 test_sign_injection
57 0x00003028 0x00013028 WEAK NOTYPE 0 data_start
58 0x00001252 0x00011252 GLOBAL FUNC 142 test_saturating
59 ---------- 0x00013050 GLOBAL NOTYPE 0 __BSS_END__
60 0x00001900 0x00011900 GLOBAL FUNC 84 test_unsigned_ops
61 0x000018ac 0x000118ac GLOBAL FUNC 84 test_minmax
62 ---------- 0x00013048 GLOBAL NOTYPE 0 _edata
63 0x00001416 0x00011416 GLOBAL FUNC 162 test_fma
64 0x00003028 0x00013028 GLOBAL NOTYPE 0 __SDATA_BEGIN__
65 0x00001362 0x00011362 GLOBAL FUNC 180 test_float_ops
66 0x00003028 0x00013028 GLOBAL NOTYPE 0 __DATA_BEGIN__
67 0x00000c36 0x00010c36 GLOBAL FUNC 32 aligned_alloc_portable
68 0x000012e0 0x000112e0 GLOBAL FUNC 92 test_widening
69 0x0000106a 0x0001106a GLOBAL FUNC 152 test_comparisons
70 0x00001830 0x00011830 GLOBAL FUNC 50 test_clip
71 0x00001524 0x00011524 GLOBAL FUNC 66 test_conversions
72 0x0000133c 0x0001133c GLOBAL FUNC 38 test_narrowing
73 0x00001804 0x00011804 GLOBAL FUNC 44 test_average
74 0x00001742 0x00011742 GLOBAL FUNC 54 test_segment_access
75 0x00003028 0x00013028 GLOBAL NOTYPE 0 __data_start
76 0x00003040 0x00013040 GLOBAL OBJ 0 __dso_handle
77 0x000019c0 0x000119c0 GLOBAL OBJ 4 _IO_stdin_used
79 0x000014b8 0x000114b8 GLOBAL FUNC 108 test_float_comparisons
80 0x00001778 0x00011778 GLOBAL FUNC 40 test_multi_byte
81 0x00001102 0x00011102 GLOBAL FUNC 172 test_shifts
82 0x000015e2 0x000115e2 GLOBAL FUNC 352 test_strided_access
83 ---------- 0x00013050 GLOBAL NOTYPE 0 _end
84 0x00000bd8 0x00010bd8 GLOBAL FUNC 2 _dl_relocate_static_pie
85 0x00000ba8 0x00010ba8 GLOBAL FUNC 34 _start
86 0x00001862 0x00011862 GLOBAL FUNC 74 test_abs_neg
87 ---------- 0x00013828 GLOBAL NOTYPE 0 __global_pointer$
89 ---------- 0x00013048 GLOBAL NOTYPE 0 __bss_start
90 0x000005c0 0x000105c0 GLOBAL FUNC 1512 main
92 0x00001954 0x00011954 GLOBAL FUNC 106 test_madd
93 0x000011ae 0x000111ae GLOBAL FUNC 164 test_bitwise
94 0x00003028 0x00013028 GLOBAL OBJ 0 __TMC_END__
96 0x000017a0 0x000117a0 GLOBAL FUNC 100 test_mixed_width
1 ---------- ---------- WEAK NOTYPE 0 imp._ITM_deregisterTMCloneTable
2 ---------- ---------- WEAK NOTYPE 0 imp._ITM_registerTMCloneTable
3 0x00000590 0x00010590 GLOBAL FUNC 0 imp.puts
4 0x00000580 0x00010580 GLOBAL FUNC 0 imp.posix_memalign
6 0x000005a0 0x000105a0 GLOBAL FUNC 0 imp.printf
7 0x000005b0 0x000105b0 GLOBAL FUNC 0 imp.free
8 0x00000570 0x00010570 GLOBAL FUNC 0 imp.__libc_start_main
--- vector reductions
: ; CALL XREF from main @ 0x10938
/ sym.test_reductions(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg5, int64_t arg6, int64_t arg_7fffffffffffffcfh, int64_t arg_7fffffffffffffd7h, int64_t arg_7fffffffffffffe7h, int64_t arg_7fffffffffffffefh, int64_t arg_7ffffffffffffff7h);
| : ; arg int64_t arg1 @ a0
| : ; arg int64_t arg2 @ a1
| : ; arg int64_t arg3 @ a2
| : ; arg int64_t arg4 @ a3
| : ; arg int64_t arg5 @ a4
| : ; arg int64_t arg6 @ a5
| : ; var int64_t var_c0h @ stack - 0xc0
| : ; arg int64_t arg_7fffffffffffffcfh @ stack + 0x7fffffffffffffcf
| : ; arg int64_t arg_7fffffffffffffd7h @ stack + 0x7fffffffffffffd7
| : ; arg int64_t arg_7fffffffffffffe7h @ stack + 0x7fffffffffffffe7
| : ; arg int64_t arg_7fffffffffffffefh @ stack + 0x7fffffffffffffef
| : ; arg int64_t arg_7ffffffffffffff7h @ stack + 0x7ffffffffffffff7
| : 0x00010c56 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| : 0x00010c5a d731005e vmv.v.i v3, 0
| : 0x00010c5e 032e0500 lw t3, 0(a0) ; arg1
| : 0x00010c62 87270600 flw fa5, 0(a2) ; arg3
| : 0x00010c66 d730309e vmv1r.v v1, v3
| : 0x00010c6a 3171 addi sp, sp, -0xc0
| : 0x00010c6c f32220c2 csrr t0, vlenb
| : 0x00010c70 856e lui t4, 1
| : 0x00010c72 06fd sd ra, 0xb8(sp)
| : 0x00010c74 22f9 sd s0, 0xb0(sp)
| : 0x00010c76 26f5 sd s1, 0xa8(sp)
| : 0x00010c78 22ad fsd fs0, 0x98(sp)
| : 0x00010c7a 26a9 fsd fs1, 0x90(sp)
| : 0x00010c7c 2a83 mv t1, a0
| : 0x00010c7e 33015140 sub sp, sp, t0
| : 0x00010c82 aa9e add t4, t4, a0 ; arg1
| : 0x00010c84 aa87 mv a5, a0
| .--> 0x00010c86 07e10702 vle32.v v2, (a5) ; arg6
| :: 0x00010c8a c107 addi a5, a5, 0x10 ; arg6
| :: 0x00010c8c d7001102 vadd.vv v1, v1, v2
| `==< 0x00010c90 e39bd7ff bne a5, t4, 0x10c86
| : 0x00010c94 f32620c2 csrr a3, vlenb
| : 0x00010c98 8a96 add a3, a3, sp ; arg4
| : 0x00010c9a a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00010c9e 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010ca2 d730005e vmv.v.i v1, 0
| : 0x00010ca6 1147 li a4, 4
| .--> 0x00010ca8 d7770709 vsetvli a5, a4, e0x20, m1, tu, ma ; arg6
| :: 0x00010cac 07e10602 vle32.v v2, (a3) ; arg4
| :: 0x00010cb0 13982700 slli a6, a5, 2 ; arg6
| :: 0x00010cb4 1d8f sub a4, a4, a5 ; arg6
| :: 0x00010cb6 c296 add a3, a3, a6 ; arg4
| :: 0x00010cb8 d7802002 vadd.vv v1, v2, v1
| `==< 0x00010cbc 75f7 bnez a4, 0x10ca8
| : 0x00010cbe d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| : 0x00010cc2 57610042 vmv.s.x v2, zero
| : 0x00010cc6 f32720c2 csrr a5, vlenb
| : 0x00010cca d7201102 vredsum.vs v1, v1, v2
| : 0x00010cce c107 addi a5, a5, 0x10 ; arg6
| : 0x00010cd0 37070080 lui a4, 0x80000
| : 0x00010cd4 3308f100 add a6, sp, a5 ; arg6
| : 0x00010cd8 5741075e vmv.v.x v2, a4
| : 0x00010cdc c286 mv a3, a6
| : 0x00010cde 1147 li a4, 4
| : 0x00010ce0 d7281042 vmv.x.s a7, v1
| .--> 0x00010ce4 d777670c vsetvli a5, a4, e8, mf4, ta, ma ; arg6
| :: 0x00010ce8 27e10602 vse32.v v2, (a3) ; arg4
| :: 0x00010cec 1d8f sub a4, a4, a5 ; arg6
| :: 0x00010cee 8a07 slli a5, a5, 2
| :: 0x00010cf0 be96 add a3, a3, a5 ; arg6
| `==< 0x00010cf2 6dfb bnez a4, 0x10ce4
| : 0x00010cf4 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| : 0x00010cf8 87600802 vle32.v v1, (a6)
| .--> 0x00010cfc 07610502 vle32.v v2, (a0) ; arg1
| :: 0x00010d00 4105 addi a0, a0, 0x10 ; arg1
| :: 0x00010d02 d700111e vmax.vv v1, v1, v2
| `==< 0x00010d06 e39baefe bne t4, a0, 0x10cfc
| : 0x00010d0a a7600802 vse32.v v1, (a6)
| : 0x00010d0e d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| : 0x00010d12 d7400e5e vmv.v.x v1, t3
| : 0x00010d16 c286 mv a3, a6
| : 0x00010d18 1147 li a4, 4
| : 0x00010d1a 5731109e vmv1r.v v2, v1
| .--> 0x00010d1e d7770709 vsetvli a5, a4, e0x20, m1, tu, ma ; arg6
| :: 0x00010d22 07e20602 vle32.v v4, (a3) ; arg4
| :: 0x00010d26 13952700 slli a0, a5, 2 ; arg6
| :: 0x00010d2a 1d8f sub a4, a4, a5 ; arg6
| :: 0x00010d2c aa96 add a3, a3, a0 ; arg4
| :: 0x00010d2e 5701411e vmax.vv v2, v4, v2
| `==< 0x00010d32 75f7 bnez a4, 0x10d1e
| : 0x00010d34 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010d38 b7070080 lui a5, 0x80000
| : 0x00010d3c 57e20742 vmv.s.x v4, a5
| : 0x00010d40 fd37 addiw a5, a5, -1 ; arg6
| : 0x00010d42 5721221e vredmax.vs v2, v2, v4
| : 0x00010d46 57c2075e vmv.v.x v4, a5
| : 0x00010d4a f32720c2 csrr a5, vlenb
| : 0x00010d4e 93870702 addi a5, a5, 0x20 ; arg6
| : 0x00010d52 3305f100 add a0, sp, a5 ; arg6
| : 0x00010d56 aa86 mv a3, a0
| : 0x00010d58 1147 li a4, 4
| : 0x00010d5a 572e2042 vmv.x.s t3, v2
| .--> 0x00010d5e d777670c vsetvli a5, a4, e8, mf4, ta, ma ; arg6
| :: 0x00010d62 27e20602 vse32.v v4, (a3) ; arg4
| :: 0x00010d66 1d8f sub a4, a4, a5 ; arg6
| :: 0x00010d68 8a07 slli a5, a5, 2
| :: 0x00010d6a be96 add a3, a3, a5 ; arg6
| `==< 0x00010d6c 6dfb bnez a4, 0x10d5e
| : 0x00010d6e 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| : 0x00010d72 07610502 vle32.v v2, (a0)
| .--> 0x00010d76 07620302 vle32.v v4, (t1)
| :: 0x00010d7a 4103 addi t1, t1, 0x10
| :: 0x00010d7c 57012216 vmin.vv v2, v2, v4
| `==< 0x00010d80 e39b6efe bne t4, t1, 0x10d76
| : 0x00010d84 27610502 vse32.v v2, (a0)
| : 0x00010d88 aa86 mv a3, a0
| : 0x00010d8a 1147 li a4, 4
| .--> 0x00010d8c d7770709 vsetvli a5, a4, e0x20, m1, tu, ma ; arg6
| :: 0x00010d90 07e10602 vle32.v v2, (a3) ; arg4
| :: 0x00010d94 13952700 slli a0, a5, 2 ; arg6
| :: 0x00010d98 1d8f sub a4, a4, a5 ; arg6
| :: 0x00010d9a aa96 add a3, a3, a0 ; arg4
| :: 0x00010d9c d7802016 vmin.vv v1, v2, v1
| `==< 0x00010da0 75f7 bnez a4, 0x10d8c
| : 0x00010da2 b7070080 lui a5, 0x80000
| : 0x00010da6 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| : 0x00010daa fd37 addiw a5, a5, -1 ; arg6
| : 0x00010dac 57e20742 vmv.s.x v4, a5
| : 0x00010db0 57b10f5e vmv.v.i v2, -1
| : 0x00010db4 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010db8 d7201216 vredmin.vs v1, v1, v4
| : 0x00010dbc 0563 lui t1, 1
| : 0x00010dbe 2e93 add t1, t1, a1 ; arg2
| : 0x00010dc0 2e85 mv a0, a1
| : 0x00010dc2 ae87 mv a5, a1
| : 0x00010dc4 d7261042 vmv.x.s a3, v1
| : 0x00010dc8 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| .--> 0x00010dcc 87e00702 vle32.v v1, (a5) ; arg6
| :: 0x00010dd0 c107 addi a5, a5, 0x10 ; arg6
| :: 0x00010dd2 57812026 vand.vv v2, v2, v1
| `==< 0x00010dd6 e39b67fe bne a5, t1, 0x10dcc
| : 0x00010dda f32720c2 csrr a5, vlenb
| : 0x00010dde 93870703 addi a5, a5, 0x30 ; arg6
| : 0x00010de2 3308f100 add a6, sp, a5 ; arg6
| : 0x00010de6 27610802 vse32.v v2, (a6)
| : 0x00010dea 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010dee d7b00f5e vmv.v.i v1, -1
| : 0x00010df2 1147 li a4, 4
| .--> 0x00010df4 d7770709 vsetvli a5, a4, e0x20, m1, tu, ma ; arg6
| :: 0x00010df8 07610802 vle32.v v2, (a6)
| :: 0x00010dfc 939e2700 slli t4, a5, 2 ; arg6
| :: 0x00010e00 1d8f sub a4, a4, a5 ; arg6
| :: 0x00010e02 7698 add a6, a6, t4
| :: 0x00010e04 d7802026 vand.vv v1, v2, v1
| `==< 0x00010e08 75f7 bnez a4, 0x10df4
| : 0x00010e0a 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010e0e fd57 li a5, -1
| : 0x00010e10 57e20742 vmv.s.x v4, a5
| : 0x00010e14 5731309e vmv1r.v v2, v3
| : 0x00010e18 d7201206 vredand.vs v1, v1, v4
| : 0x00010e1c 57271042 vmv.x.s a4, v1
| : 0x00010e20 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| .--> 0x00010e24 87e00502 vle32.v v1, (a1) ; arg2
| :: 0x00010e28 c105 addi a1, a1, 0x10 ; arg2
| :: 0x00010e2a 5781202a vor.vv v2, v2, v1
| `==< 0x00010e2e e39b65fe bne a1, t1, 0x10e24
| : 0x00010e32 f32720c2 csrr a5, vlenb
| : 0x00010e36 93870704 addi a5, a5, 0x40 ; arg6
| : 0x00010e3a 3308f100 add a6, sp, a5 ; arg6
| : 0x00010e3e 27610802 vse32.v v2, (a6)
| : 0x00010e42 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010e46 d730005e vmv.v.i v1, 0
| : 0x00010e4a 9145 li a1, 4
| .--> 0x00010e4c d7f70509 vsetvli a5, a1, e0x20, m1, tu, ma ; arg6
| :: 0x00010e50 07610802 vle32.v v2, (a6)
| :: 0x00010e54 939e2700 slli t4, a5, 2 ; arg6
| :: 0x00010e58 9d8d sub a1, a1, a5 ; arg6
| :: 0x00010e5a 7698 add a6, a6, t4
| :: 0x00010e5c d780202a vor.vv v1, v2, v1
| `==< 0x00010e60 f5f5 bnez a1, 0x10e4c
| : 0x00010e62 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010e66 57620042 vmv.s.x v4, zero
| : 0x00010e6a 5731309e vmv1r.v v2, v3
| : 0x00010e6e d720120a vredor.vs v1, v1, v4
| : 0x00010e72 d7271042 vmv.x.s a5, v1
| : 0x00010e76 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| .--> 0x00010e7a 87600502 vle32.v v1, (a0)
| :: 0x00010e7e 4105 addi a0, a0, 0x10
| :: 0x00010e80 5781202e vxor.vv v2, v2, v1
| `==< 0x00010e84 e31b65fe bne a0, t1, 0x10e7a
| : 0x00010e88 f32520c2 csrr a1, vlenb
| : 0x00010e8c 93850505 addi a1, a1, 0x50 ; arg2
| : 0x00010e90 3308b100 add a6, sp, a1 ; arg2
| : 0x00010e94 27610802 vse32.v v2, (a6)
| : 0x00010e98 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010e9c d730005e vmv.v.i v1, 0
| : 0x00010ea0 9145 li a1, 4
| .--> 0x00010ea2 57f50509 vsetvli a0, a1, e0x20, m1, tu, ma ; arg2
| :: 0x00010ea6 07610802 vle32.v v2, (a6)
| :: 0x00010eaa 13132500 slli t1, a0, 2
| :: 0x00010eae 898d sub a1, a1, a0 ; arg2
| :: 0x00010eb0 1a98 add a6, a6, t1
| :: 0x00010eb2 d780202e vxor.vv v1, v2, v1
| `==< 0x00010eb6 f5f5 bnez a1, 0x10ea2
| : 0x00010eb8 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| : 0x00010ebc d7610042 vmv.s.x v3, zero
| : 0x00010ec0 5731005e vmv.v.i v2, 0
| : 0x00010ec4 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010ec8 d7a0110e vredxor.vs v1, v1, v3
| : 0x00010ecc 856f lui t6, 1
| : 0x00010ece b29f add t6, t6, a2 ; arg3
| : 0x00010ed0 328f mv t5, a2
| : 0x00010ed2 b285 mv a1, a2
| : 0x00010ed4 57281042 vmv.x.s a6, v1
| : 0x00010ed8 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| .--> 0x00010edc 87e00502 vle32.v v1, (a1) ; arg2
| :: 0x00010ee0 c105 addi a1, a1, 0x10 ; arg2
| :: 0x00010ee2 57912002 vfadd.vv v2, v2, v1
| `==< 0x00010ee6 e39bbffe bne t6, a1, 0x10edc
| : 0x00010eea f32520c2 csrr a1, vlenb
| : 0x00010eee 93850506 addi a1, a1, 0x60 ; arg2
| : 0x00010ef2 3303b100 add t1, sp, a1 ; arg2
| : 0x00010ef6 27610302 vse32.v v2, (t1)
| : 0x00010efa 530400f0 fmv.w.x fs0, zero
| : 0x00010efe 9145 li a1, 4
| .--> 0x00010f00 57f5650c vsetvli a0, a1, e8, mf4, ta, ma ; arg2
| :: 0x00010f04 07610302 vle32.v v2, (t1)
| :: 0x00010f08 57f000cd vsetivli zero, 1, e0x20, m1, ta, ma
| :: 0x00010f0c d7500442 vfmv.s.f v1, fs0
| :: 0x00010f10 5770050d vsetvli zero, a0, e0x20, m1, ta, ma
| :: 0x00010f14 931e2500 slli t4, a0, 2
| :: 0x00010f18 898d sub a1, a1, a0 ; arg2
| :: 0x00010f1a d790200e vfredosum.vs v1, v2, v1
| :: 0x00010f1e 7693 add t1, t1, t4
| :: 0x00010f20 57141042 vfmv.f.s fs0, v1
| `==< 0x00010f24 f1fd bnez a1, 0x10f00
| : 0x00010f26 cd62 lui t0, 0x13 ; 0x13000 ; "P\U00000005\U00000001"
| : 0x00010f28 07a78202 flw fa4, 0x28(t0)
| : 0x00010f2c d775000d vsetvli a1, zero, e0x20, m1, ta, ma ; arg2
| : 0x00010f30 732520c2 csrr a0, vlenb
| : 0x00010f34 13050507 addi a0, a0, 0x70
| : 0x00010f38 d750075e vfmv.v.f v1, fa4
| : 0x00010f3c b30ea100 add t4, sp, a0
| : 0x00010f40 7683 mv t1, t4
| : 0x00010f42 9145 li a1, 4
| .--> 0x00010f44 57f5650c vsetvli a0, a1, e8, mf4, ta, ma ; arg2
| :: 0x00010f48 a7600302 vse32.v v1, (t1)
| :: 0x00010f4c 898d sub a1, a1, a0 ; arg2
| :: 0x00010f4e 0a05 slli a0, a0, 2
| :: 0x00010f50 2a93 add t1, t1, a0
| `==< 0x00010f52 edf9 bnez a1, 0x10f44
| : 0x00010f54 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| : 0x00010f58 87e00e02 vle32.v v1, (t4)
| : 0x00010f5c 3285 mv a0, a2
| .--> 0x00010f5e 07610502 vle32.v v2, (a0)
| :: 0x00010f62 4105 addi a0, a0, 0x10
| :: 0x00010f64 5710116e vmflt.vv v0, v1, v2
| :: 0x00010f68 d700115c vmerge.vvm v1, v1, v2, v0
| `==< 0x00010f6c e399affe bne t6, a0, 0x10f5e
| : 0x00010f70 a7e00e02 vse32.v v1, (t4)
| : 0x00010f74 5776000d vsetvli a2, zero, e0x20, m1, ta, ma ; arg3
| : 0x00010f78 d7d0075e vfmv.v.f v1, fa5
| : 0x00010f7c f685 mv a1, t4
| : 0x00010f7e 1146 li a2, 4
| : 0x00010f80 5731109e vmv1r.v v2, v1
| .--> 0x00010f84 57750609 vsetvli a0, a2, e0x20, m1, tu, ma ; arg3
| :: 0x00010f88 87e10502 vle32.v v3, (a1) ; arg2
| :: 0x00010f8c 13132500 slli t1, a0, 2
| :: 0x00010f90 098e sub a2, a2, a0 ; arg3
| :: 0x00010f92 9a95 add a1, a1, t1 ; arg2
| :: 0x00010f94 5711311a vfmax.vv v2, v3, v2
| `==< 0x00010f98 75f6 bnez a2, 0x10f84
| : 0x00010f9a 07a78202 flw fa4, 0x28(t0)
| : 0x00010f9e 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x00010fa2 cd64 lui s1, 0x13 ; 0x13000 ; "P\U00000005\U00000001"
| : 0x00010fa4 57520742 vfmv.s.f v4, fa4
| : 0x00010fa8 87a7c402 flw fa5, 0x2c(s1)
| : 0x00010fac 5711221e vfredmax.vs v2, v2, v4
| : 0x00010fb0 732620c2 csrr a2, vlenb
| : 0x00010fb4 13060608 addi a2, a2, 0x80 ; arg3
| : 0x00010fb8 d7d1075e vfmv.v.f v3, fa5
| : 0x00010fbc 0a96 add a2, a2, sp ; arg3
| : 0x00010fbe 3283 mv t1, a2
| : 0x00010fc0 9145 li a1, 4
| : 0x00010fc2 d7142042 vfmv.f.s fs1, v2
| .--> 0x00010fc6 57f5650c vsetvli a0, a1, e8, mf4, ta, ma ; arg2
| :: 0x00010fca a7610302 vse32.v v3, (t1)
| :: 0x00010fce 898d sub a1, a1, a0 ; arg2
| :: 0x00010fd0 0a05 slli a0, a0, 2
| :: 0x00010fd2 2a93 add t1, t1, a0
| `==< 0x00010fd4 edf9 bnez a1, 0x10fc6
| : 0x00010fd6 577002cd vsetivli zero, 4, e0x20, m1, ta, ma
| : 0x00010fda 07610602 vle32.v v2, (a2) ; arg3
| .--> 0x00010fde 87610f02 vle32.v v3, (t5)
| :: 0x00010fe2 410f addi t5, t5, 0x10
| :: 0x00010fe4 5710316e vmflt.vv v0, v3, v2
| :: 0x00010fe8 5781215c vmerge.vvm v2, v2, v3, v0
| `==< 0x00010fec e319ffff bne t5, t6, 0x10fde
| : 0x00010ff0 27610602 vse32.v v2, (a2) ; arg3
| : 0x00010ff4 9145 li a1, 4
| .--> 0x00010ff6 57f50509 vsetvli a0, a1, e0x20, m1, tu, ma ; arg2
| :: 0x00010ffa 07610602 vle32.v v2, (a2) ; arg3
| :: 0x00010ffe 13132500 slli t1, a0, 2
| :: 0x00011002 898d sub a1, a1, a0 ; arg2
| :: 0x00011004 1a96 add a2, a2, t1 ; arg3
| :: 0x00011006 d7101112 vfmin.vv v1, v1, v2
| `==< 0x0001100a f5f5 bnez a1, 0x10ff6
| : 0x0001100c 4965 lui a0, 0x12
| : 0x0001100e 7286 mv a2, t3
| : 0x00011010 c685 mv a1, a7
| : 0x00011012 1305859c addi a0, a0, -0x638
| : 0x00011016 a7008102 vs1r.v v1, (sp)
| : 0x0001101a eff06fd8 jal sym.imp.printf ; int printf(const char *format)
| : 0x0001101e 87608102 vl1re32.v v1, (sp)
| : 0x00011022 87a7c402 flw fa5, 0x2c(s1)
| : 0x00011026 5774000d vsetvli s0, zero, e0x20, m1, ta, ma
| : 0x0001102a 53870442 fcvt.d.s fa4, fs1
| : 0x0001102e 57d10742 vfmv.s.f v2, fa5
| : 0x00011032 f32220c2 csrr t0, vlenb
| : 0x00011036 d7101116 vfredmin.vs v1, v1, v2
| : 0x0001103a 530607e2 fmv.x.d a2, fa4
| : 0x0001103e 53070442 fcvt.d.s fa4, fs0
| : 0x00011042 1691 add sp, sp, t0
| : 0x00011044 ea70 ld ra, 0xb8(sp)
| : 0x00011046 4a74 ld s0, 0xb0(sp)
| : 0x00011048 aa74 ld s1, 0xa8(sp)
| : 0x0001104a d7171042 vfmv.f.s fa5, v1
| : 0x0001104e 6a24 fld fs0, 0x98(sp)
| : 0x00011050 d3870742 fcvt.d.s fa5, fa5
| : 0x00011054 ca24 fld fs1, 0x90(sp)
| : 0x00011056 d30507e2 fmv.x.d a1, fa4
| : 0x0001105a d38607e2 fmv.x.d a3, fa5
| : 0x0001105e 4965 lui a0, 0x12
| : 0x00011060 130505a0 addi a0, a0, -0x600
| : 0x00011064 2961 addi sp, sp, 0xc0
\ `=< 0x00011066 6ff0afd3 j sym.imp.printf
--- vector sign injection
; CALL XREF from main @ 0x10a04
/ sym.test_sign_injection(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x00011566 b286 mv a3, a2
| 0x00011568 aa88 mv a7, a0
| 0x0001156a 13070040 li a4, 0x400
| .-> 0x0001156e d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011572 87e00802 vle32.v v1, (a7) ; arg8
| : 0x00011576 07e10502 vle32.v v2, (a1) ; arg2
| : 0x0001157a 13982700 slli a6, a5, 2 ; arg6
| : 0x0001157e 1d8f sub a4, a4, a5 ; arg6
| : 0x00011580 c298 add a7, a7, a6 ; arg8
| : 0x00011582 c295 add a1, a1, a6 ; arg2
| : 0x00011584 d7101122 vfsgnj.vv v1, v1, v2
| : 0x00011588 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x0001158c c296 add a3, a3, a6 ; arg4
| `=< 0x0001158e 65f3 bnez a4, 0x1156e
| 0x00011590 b286 mv a3, a2
| 0x00011592 aa85 mv a1, a0
| 0x00011594 13070040 li a4, 0x400
| .-> 0x00011598 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001159c 87e00502 vle32.v v1, (a1) ; arg2
| : 0x000115a0 13982700 slli a6, a5, 2 ; arg6
| : 0x000115a4 1d8f sub a4, a4, a5 ; arg6
| : 0x000115a6 c295 add a1, a1, a6 ; arg2
| : 0x000115a8 d790102a vfabs.v v1, v1
| : 0x000115ac a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000115b0 c296 add a3, a3, a6 ; arg4
| `=< 0x000115b2 7df3 bnez a4, 0x11598
| 0x000115b4 87a7c180 flw fa5, -0x7f4(gp)
| 0x000115b8 d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| 0x000115bc 13070040 li a4, 0x400
| 0x000115c0 57d1075e vfmv.v.f v2, fa5
| .-> 0x000115c4 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000115c8 87600502 vle32.v v1, (a0) ; arg1
| : 0x000115cc 93962700 slli a3, a5, 2 ; arg6
| : 0x000115d0 1d8f sub a4, a4, a5 ; arg6
| : 0x000115d2 3695 add a0, a0, a3 ; arg1
| : 0x000115d4 d7101122 vfsgnj.vv v1, v1, v2
| : 0x000115d8 a7600602 vse32.v v1, (a2) ; arg3
| : 0x000115dc 3696 add a2, a2, a3 ; arg3
| `=< 0x000115de 7df3 bnez a4, 0x115c4
\ 0x000115e0 8280 ret
--- vector saturating
; CALL XREF from main @ 0x10960
/ sym.test_saturating(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg5, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg5 @ a4
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x00011252 d776000d vsetvli a3, zero, e0x20, m1, ta, ma ; arg4
| 0x00011256 6178 lui a6, 0xffff8
| 0x00011258 2167 lui a4, 8
| 0x0001125a d741085e vmv.v.x v3, a6
| 0x0001125e 7d37 addiw a4, a4, -1 ; arg5
| 0x00011260 5741075e vmv.v.x v2, a4
| 0x00011264 b286 mv a3, a2
| 0x00011266 2e83 mv t1, a1
| 0x00011268 aa88 mv a7, a0
| 0x0001126a 13070040 li a4, 0x400
| .-> 0x0001126e d777f70c vsetvli a5, a4, e0x10, mf2, ta, ma ; arg6
| : 0x00011272 87520302 vle16.v v5, (t1)
| : 0x00011276 07d20802 vle16.v v4, (a7) ; arg8
| : 0x0001127a 13981700 slli a6, a5, 1 ; arg6
| : 0x0001127e 1d8f sub a4, a4, a5 ; arg6
| : 0x00011280 c298 add a7, a7, a6 ; arg8
| : 0x00011282 4293 add t1, t1, a6
| : 0x00011284 d72052c6 vwadd.vv v1, v5, v4
| : 0x00011288 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| : 0x0001128c d780111e vmax.vv v1, v1, v3
| : 0x00011290 d7001116 vmin.vv v1, v1, v2
| : 0x00011294 5770f00c vsetvli zero, zero, e0x10, mf2, ta, ma
| : 0x00011298 d73010b2 vnsrl.wi v1, v1, 0
| : 0x0001129c a7d00602 vse16.v v1, (a3) ; arg4
| : 0x000112a0 c296 add a3, a3, a6 ; arg4
| `=< 0x000112a2 71f7 bnez a4, 0x1126e
| 0x000112a4 13070040 li a4, 0x400
| .-> 0x000112a8 d777f70c vsetvli a5, a4, e0x10, mf2, ta, ma ; arg6
| : 0x000112ac 87520502 vle16.v v5, (a0) ; arg1
| : 0x000112b0 07d20502 vle16.v v4, (a1) ; arg2
| : 0x000112b4 93961700 slli a3, a5, 1 ; arg6
| : 0x000112b8 1d8f sub a4, a4, a5 ; arg6
| : 0x000112ba 3695 add a0, a0, a3 ; arg1
| : 0x000112bc b695 add a1, a1, a3 ; arg2
| : 0x000112be d72052ce vwsub.vv v1, v5, v4
| : 0x000112c2 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| : 0x000112c6 d780111e vmax.vv v1, v1, v3
| : 0x000112ca d7001116 vmin.vv v1, v1, v2
| : 0x000112ce 5770f00c vsetvli zero, zero, e0x10, mf2, ta, ma
| : 0x000112d2 d73010b2 vnsrl.wi v1, v1, 0
| : 0x000112d6 a7500602 vse16.v v1, (a2) ; arg3
| : 0x000112da 3696 add a2, a2, a3 ; arg3
| `=< 0x000112dc 71f7 bnez a4, 0x112a8
\ 0x000112de 8280 ret
--- vector unsigned operations
; CALL XREF from main @ 0x10b02
/ sym.test_unsigned_ops(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x00011900 b286 mv a3, a2
| 0x00011902 2a83 mv t1, a0
| 0x00011904 ae88 mv a7, a1
| 0x00011906 13070040 li a4, 0x400
| .-> 0x0001190a d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001190e 07e10802 vle32.v v2, (a7) ; arg8
| : 0x00011912 87600302 vle32.v v1, (t1)
| : 0x00011916 13982700 slli a6, a5, 2 ; arg6
| : 0x0001191a 1d8f sub a4, a4, a5 ; arg6
| : 0x0001191c c298 add a7, a7, a6 ; arg8
| : 0x0001191e 4293 add t1, t1, a6
| : 0x00011920 d700111a vmaxu.vv v1, v1, v2
| : 0x00011924 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011928 c296 add a3, a3, a6 ; arg4
| `=< 0x0001192a 65f3 bnez a4, 0x1190a
| 0x0001192c 13070040 li a4, 0x400
| .-> 0x00011930 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011934 07e10502 vle32.v v2, (a1) ; arg2
| : 0x00011938 87600502 vle32.v v1, (a0) ; arg1
| : 0x0001193c 93962700 slli a3, a5, 2 ; arg6
| : 0x00011940 1d8f sub a4, a4, a5 ; arg6
| : 0x00011942 b695 add a1, a1, a3 ; arg2
| : 0x00011944 3695 add a0, a0, a3 ; arg1
| : 0x00011946 d7001112 vminu.vv v1, v1, v2
| : 0x0001194a a7600602 vse32.v v1, (a2) ; arg3
| : 0x0001194e 3696 add a2, a2, a3 ; arg3
| `=< 0x00011950 65f3 bnez a4, 0x11930
\ 0x00011952 8280 ret
--- vector minmax
; CALL XREF from main @ 0x10af8
/ sym.test_minmax(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x000118ac b286 mv a3, a2
| 0x000118ae 2a83 mv t1, a0
| 0x000118b0 ae88 mv a7, a1
| 0x000118b2 13070040 li a4, 0x400
| .-> 0x000118b6 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000118ba 07e10802 vle32.v v2, (a7) ; arg8
| : 0x000118be 87600302 vle32.v v1, (t1)
| : 0x000118c2 13982700 slli a6, a5, 2 ; arg6
| : 0x000118c6 1d8f sub a4, a4, a5 ; arg6
| : 0x000118c8 c298 add a7, a7, a6 ; arg8
| : 0x000118ca 4293 add t1, t1, a6
| : 0x000118cc d700111e vmax.vv v1, v1, v2
| : 0x000118d0 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000118d4 c296 add a3, a3, a6 ; arg4
| `=< 0x000118d6 65f3 bnez a4, 0x118b6
| 0x000118d8 13070040 li a4, 0x400
| .-> 0x000118dc d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000118e0 07e10502 vle32.v v2, (a1) ; arg2
| : 0x000118e4 87600502 vle32.v v1, (a0) ; arg1
| : 0x000118e8 93962700 slli a3, a5, 2 ; arg6
| : 0x000118ec 1d8f sub a4, a4, a5 ; arg6
| : 0x000118ee b695 add a1, a1, a3 ; arg2
| : 0x000118f0 3695 add a0, a0, a3 ; arg1
| : 0x000118f2 d7001116 vmin.vv v1, v1, v2
| : 0x000118f6 a7600602 vse32.v v1, (a2) ; arg3
| : 0x000118fa 3696 add a2, a2, a3 ; arg3
| `=< 0x000118fc 65f3 bnez a4, 0x118dc
\ 0x000118fe 8280 ret
--- vector fused multiply-add
; CALL XREF from main @ 0x109a8
/ sym.test_fma(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x00011416 b688 mv a7, a3
| 0x00011418 b28e mv t4, a2
| 0x0001141a 2e8e mv t3, a1
| 0x0001141c 2a83 mv t1, a0
| 0x0001141e 13080040 li a6, 0x400
| .-> 0x00011422 d777080d vsetvli a5, a6, e0x20, m1, ta, ma ; arg6
| : 0x00011426 87600302 vle32.v v1, (t1)
| : 0x0001142a 87610e02 vle32.v v3, (t3)
| : 0x0001142e 07e10e02 vle32.v v2, (t4)
| : 0x00011432 13972700 slli a4, a5, 2 ; arg6
| : 0x00011436 3308f840 sub a6, a6, a5 ; arg6
| : 0x0001143a 3a93 add t1, t1, a4
| : 0x0001143c 3a9e add t3, t3, a4
| : 0x0001143e ba9e add t4, t4, a4
| : 0x00011440 d79021a2 vfmadd.vv v1, v3, v2
| : 0x00011444 a7e00802 vse32.v v1, (a7) ; arg8
| : 0x00011448 ba98 add a7, a7, a4 ; arg8
| `=< 0x0001144a e31c08fc bnez a6, 0x11422
| 0x0001144e b688 mv a7, a3
| 0x00011450 b28e mv t4, a2
| 0x00011452 2e8e mv t3, a1
| 0x00011454 2a83 mv t1, a0
| 0x00011456 13080040 li a6, 0x400
| .-> 0x0001145a d777080d vsetvli a5, a6, e0x20, m1, ta, ma ; arg6
| : 0x0001145e 87610302 vle32.v v3, (t1)
| : 0x00011462 87600e02 vle32.v v1, (t3)
| : 0x00011466 07e10e02 vle32.v v2, (t4)
| : 0x0001146a 13972700 slli a4, a5, 2 ; arg6
| : 0x0001146e 3308f840 sub a6, a6, a5 ; arg6
| : 0x00011472 3a93 add t1, t1, a4
| : 0x00011474 3a9e add t3, t3, a4
| : 0x00011476 ba9e add t4, t4, a4
| : 0x00011478 d79021aa vfmsub.vv v1, v3, v2
| : 0x0001147c a7e00802 vse32.v v1, (a7) ; arg8
| : 0x00011480 ba98 add a7, a7, a4 ; arg8
| `=< 0x00011482 e31c08fc bnez a6, 0x1145a
| 0x00011486 13080040 li a6, 0x400
| .-> 0x0001148a d777080d vsetvli a5, a6, e0x20, m1, ta, ma ; arg6
| : 0x0001148e 07610602 vle32.v v2, (a2) ; arg3
| : 0x00011492 87610502 vle32.v v3, (a0) ; arg1
| : 0x00011496 87e00502 vle32.v v1, (a1) ; arg2
| : 0x0001149a 13972700 slli a4, a5, 2 ; arg6
| : 0x0001149e 3308f840 sub a6, a6, a5 ; arg6
| : 0x000114a2 3a96 add a2, a2, a4 ; arg3
| : 0x000114a4 3a95 add a0, a0, a4 ; arg1
| : 0x000114a6 ba95 add a1, a1, a4 ; arg2
| : 0x000114a8 d79021ae vfnmsub.vv v1, v3, v2
| : 0x000114ac a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000114b0 ba96 add a3, a3, a4 ; arg4
| `=< 0x000114b2 e31c08fc bnez a6, 0x1148a
\ 0x000114b6 8280 ret
--- vector float operations
; CALL XREF from main @ 0x1099c
/ sym.test_float_ops(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x00011362 b286 mv a3, a2
| 0x00011364 2e83 mv t1, a1
| 0x00011366 aa88 mv a7, a0
| 0x00011368 13070040 li a4, 0x400
| .-> 0x0001136c d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011370 87e00802 vle32.v v1, (a7) ; arg8
| : 0x00011374 07610302 vle32.v v2, (t1)
| : 0x00011378 13982700 slli a6, a5, 2 ; arg6
| : 0x0001137c 1d8f sub a4, a4, a5 ; arg6
| : 0x0001137e c298 add a7, a7, a6 ; arg8
| : 0x00011380 4293 add t1, t1, a6
| : 0x00011382 d7101102 vfadd.vv v1, v1, v2
| : 0x00011386 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x0001138a c296 add a3, a3, a6 ; arg4
| `=< 0x0001138c 65f3 bnez a4, 0x1136c
| 0x0001138e b286 mv a3, a2
| 0x00011390 2e83 mv t1, a1
| 0x00011392 aa88 mv a7, a0
| 0x00011394 13070040 li a4, 0x400
| .-> 0x00011398 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001139c 87e00802 vle32.v v1, (a7) ; arg8
| : 0x000113a0 07610302 vle32.v v2, (t1)
| : 0x000113a4 13982700 slli a6, a5, 2 ; arg6
| : 0x000113a8 1d8f sub a4, a4, a5 ; arg6
| : 0x000113aa c298 add a7, a7, a6 ; arg8
| : 0x000113ac 4293 add t1, t1, a6
| : 0x000113ae d710110a vfsub.vv v1, v1, v2
| : 0x000113b2 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000113b6 c296 add a3, a3, a6 ; arg4
| `=< 0x000113b8 65f3 bnez a4, 0x11398
| 0x000113ba b286 mv a3, a2
| 0x000113bc aa88 mv a7, a0
| 0x000113be 13070040 li a4, 0x400
| .-> 0x000113c2 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000113c6 87e00802 vle32.v v1, (a7) ; arg8
| : 0x000113ca 07e10502 vle32.v v2, (a1) ; arg2
| : 0x000113ce 13982700 slli a6, a5, 2 ; arg6
| : 0x000113d2 1d8f sub a4, a4, a5 ; arg6
| : 0x000113d4 c298 add a7, a7, a6 ; arg8
| : 0x000113d6 c295 add a1, a1, a6 ; arg2
| : 0x000113d8 d7101182 vfdiv.vv v1, v1, v2
| : 0x000113dc a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000113e0 c296 add a3, a3, a6 ; arg4
| `=< 0x000113e2 65f3 bnez a4, 0x113c2
| 0x000113e4 d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| 0x000113e8 5731005e vmv.v.i v2, 0
| 0x000113ec 13070040 li a4, 0x400
| .-> 0x000113f0 d7770705 vsetvli a5, a4, e0x20, m1, ta, mu ; arg6
| : 0x000113f4 87600502 vle32.v v1, (a0) ; arg1
| : 0x000113f8 d731209e vmv1r.v v3, v2
| : 0x000113fc 93962700 slli a3, a5, 2 ; arg6
| : 0x00011400 1d8f sub a4, a4, a5 ; arg6
| : 0x00011402 3695 add a0, a0, a3 ; arg1
| : 0x00011404 5790206e vmflt.vv v0, v2, v1
| : 0x00011408 d711104c vfsqrt.v v3, v1, v0.t
| : 0x0001140c a7610602 vse32.v v3, (a2) ; arg3
| : 0x00011410 3696 add a2, a2, a3 ; arg3
| `=< 0x00011412 79ff bnez a4, 0x113f0
\ 0x00011414 8280 ret
--- floating point operations
; CALL XREF from main @ 0x1099c
/ sym.test_float_ops(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x00011362 b286 mv a3, a2
| 0x00011364 2e83 mv t1, a1
| 0x00011366 aa88 mv a7, a0
| 0x00011368 13070040 li a4, 0x400
| .-> 0x0001136c d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011370 87e00802 vle32.v v1, (a7) ; arg8
| : 0x00011374 07610302 vle32.v v2, (t1)
| : 0x00011378 13982700 slli a6, a5, 2 ; arg6
| : 0x0001137c 1d8f sub a4, a4, a5 ; arg6
| : 0x0001137e c298 add a7, a7, a6 ; arg8
| : 0x00011380 4293 add t1, t1, a6
| : 0x00011382 d7101102 vfadd.vv v1, v1, v2
| : 0x00011386 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x0001138a c296 add a3, a3, a6 ; arg4
| `=< 0x0001138c 65f3 bnez a4, 0x1136c
| 0x0001138e b286 mv a3, a2
| 0x00011390 2e83 mv t1, a1
| 0x00011392 aa88 mv a7, a0
| 0x00011394 13070040 li a4, 0x400
| .-> 0x00011398 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001139c 87e00802 vle32.v v1, (a7) ; arg8
| : 0x000113a0 07610302 vle32.v v2, (t1)
| : 0x000113a4 13982700 slli a6, a5, 2 ; arg6
| : 0x000113a8 1d8f sub a4, a4, a5 ; arg6
| : 0x000113aa c298 add a7, a7, a6 ; arg8
| : 0x000113ac 4293 add t1, t1, a6
| : 0x000113ae d710110a vfsub.vv v1, v1, v2
| : 0x000113b2 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000113b6 c296 add a3, a3, a6 ; arg4
| `=< 0x000113b8 65f3 bnez a4, 0x11398
| 0x000113ba b286 mv a3, a2
| 0x000113bc aa88 mv a7, a0
| 0x000113be 13070040 li a4, 0x400
| .-> 0x000113c2 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000113c6 87e00802 vle32.v v1, (a7) ; arg8
| : 0x000113ca 07e10502 vle32.v v2, (a1) ; arg2
| : 0x000113ce 13982700 slli a6, a5, 2 ; arg6
| : 0x000113d2 1d8f sub a4, a4, a5 ; arg6
| : 0x000113d4 c298 add a7, a7, a6 ; arg8
| : 0x000113d6 c295 add a1, a1, a6 ; arg2
| : 0x000113d8 d7101182 vfdiv.vv v1, v1, v2
| : 0x000113dc a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000113e0 c296 add a3, a3, a6 ; arg4
| `=< 0x000113e2 65f3 bnez a4, 0x113c2
| 0x000113e4 d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| 0x000113e8 5731005e vmv.v.i v2, 0
| 0x000113ec 13070040 li a4, 0x400
| .-> 0x000113f0 d7770705 vsetvli a5, a4, e0x20, m1, ta, mu ; arg6
| : 0x000113f4 87600502 vle32.v v1, (a0) ; arg1
| : 0x000113f8 d731209e vmv1r.v v3, v2
| : 0x000113fc 93962700 slli a3, a5, 2 ; arg6
| : 0x00011400 1d8f sub a4, a4, a5 ; arg6
| : 0x00011402 3695 add a0, a0, a3 ; arg1
| : 0x00011404 5790206e vmflt.vv v0, v2, v1
| : 0x00011408 d711104c vfsqrt.v v3, v1, v0.t
| : 0x0001140c a7610602 vse32.v v3, (a2) ; arg3
| : 0x00011410 3696 add a2, a2, a3 ; arg3
| `=< 0x00011412 79ff bnez a4, 0x113f0
\ 0x00011414 8280 ret
--- widening operations
; CALL XREF from main @ 0x1096a
/ sym.test_widening(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg7, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg7 @ a6
| ; arg int64_t arg8 @ a7
| 0x000112e0 b286 mv a3, a2
| 0x000112e2 ae88 mv a7, a1
| 0x000112e4 2a88 mv a6, a0
| 0x000112e6 13070040 li a4, 0x400
| .-> 0x000112ea d777f70c vsetvli a5, a4, e0x10, mf2, ta, ma ; arg6
| : 0x000112ee 87d10802 vle16.v v3, (a7) ; arg8
| : 0x000112f2 07510802 vle16.v v2, (a6) ; arg7
| : 0x000112f6 13931700 slli t1, a5, 1 ; arg6
| : 0x000112fa 139e2700 slli t3, a5, 2 ; arg6
| : 0x000112fe 1d8f sub a4, a4, a5 ; arg6
| : 0x00011300 1a98 add a6, a6, t1 ; arg7
| : 0x00011302 9a98 add a7, a7, t1 ; arg8
| : 0x00011304 d72031c6 vwadd.vv v1, v3, v2
| : 0x00011308 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x0001130c f296 add a3, a3, t3 ; arg4
| `=< 0x0001130e 71ff bnez a4, 0x112ea
| 0x00011310 13070040 li a4, 0x400
| .-> 0x00011314 d777f70c vsetvli a5, a4, e0x10, mf2, ta, ma ; arg6
| : 0x00011318 87d10502 vle16.v v3, (a1) ; arg2
| : 0x0001131c 07510502 vle16.v v2, (a0) ; arg1
| : 0x00011320 93961700 slli a3, a5, 1 ; arg6
| : 0x00011324 13982700 slli a6, a5, 2 ; arg6
| : 0x00011328 1d8f sub a4, a4, a5 ; arg6
| : 0x0001132a 3695 add a0, a0, a3 ; arg1
| : 0x0001132c b695 add a1, a1, a3 ; arg2
| : 0x0001132e d72031ee vwmul.vv v1, v3, v2
| : 0x00011332 a7600602 vse32.v v1, (a2) ; arg3
| : 0x00011336 4296 add a2, a2, a6 ; arg3
| `=< 0x00011338 71ff bnez a4, 0x11314
\ 0x0001133a 8280 ret
--- comparisons
; CALL XREF from main @ 0x10942
/ sym.test_comparisons(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x0001106a b286 mv a3, a2
| 0x0001106c 2a83 mv t1, a0
| 0x0001106e ae88 mv a7, a1
| 0x00011070 13070040 li a4, 0x400
| .-> 0x00011074 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011078 07e10802 vle32.v v2, (a7) ; arg8
| : 0x0001107c 87600302 vle32.v v1, (t1)
| : 0x00011080 13982700 slli a6, a5, 2 ; arg6
| : 0x00011084 1d8f sub a4, a4, a5 ; arg6
| : 0x00011086 c298 add a7, a7, a6 ; arg8
| : 0x00011088 4293 add t1, t1, a6
| : 0x0001108a d7001116 vmin.vv v1, v1, v2
| : 0x0001108e a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011092 c296 add a3, a3, a6 ; arg4
| `=< 0x00011094 65f3 bnez a4, 0x11074
| 0x00011096 5773000d vsetvli t1, zero, e0x20, m1, ta, ma
| 0x0001109a 5731005e vmv.v.i v2, 0
| 0x0001109e b286 mv a3, a2
| 0x000110a0 aa88 mv a7, a0
| 0x000110a2 13070040 li a4, 0x400
| .-> 0x000110a6 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000110aa 87e00802 vle32.v v1, (a7) ; arg8
| : 0x000110ae 07e00502 vle32.v v0, (a1) ; arg2
| : 0x000110b2 13982700 slli a6, a5, 2 ; arg6
| : 0x000110b6 1d8f sub a4, a4, a5 ; arg6
| : 0x000110b8 c295 add a1, a1, a6 ; arg2
| : 0x000110ba c298 add a7, a7, a6 ; arg8
| : 0x000110bc 57800062 vmseq.vv v0, v0, v1
| : 0x000110c0 d7b0205c vmerge.vim v1, v2, 1, v0
| : 0x000110c4 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000110c8 c296 add a3, a3, a6 ; arg4
| `=< 0x000110ca 71ff bnez a4, 0x110a6
| 0x000110cc d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| 0x000110d0 5731005e vmv.v.i v2, 0
| 0x000110d4 13073006 li a4, 0x63
| 0x000110d8 d741075e vmv.v.x v3, a4
| 0x000110dc 13070040 li a4, 0x400
| .-> 0x000110e0 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000110e4 87600502 vle32.v v1, (a0) ; arg1
| : 0x000110e8 93962700 slli a3, a5, 2 ; arg6
| : 0x000110ec 1d8f sub a4, a4, a5 ; arg6
| : 0x000110ee 3695 add a0, a0, a3 ; arg1
| : 0x000110f0 5780306e vmslt.vv v0, v3, v1
| : 0x000110f4 d780205c vmerge.vvm v1, v2, v1, v0
| : 0x000110f8 a7600602 vse32.v v1, (a2) ; arg3
| : 0x000110fc 3696 add a2, a2, a3 ; arg3
| `=< 0x000110fe 6df3 bnez a4, 0x110e0
\ 0x00011100 8280 ret
--- clipping
/ sym.test_clip(int64_t arg1, int64_t arg2, int64_t arg5, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg5 @ a4
| ; arg int64_t arg6 @ a5
| 0x00011830 5777000d vsetvli a4, zero, e0x20, m1, ta, ma ; arg5
| 0x00011834 d741065e vmv.v.x v3, a2
| 0x00011838 57c1065e vmv.v.x v2, a3
| 0x0001183c 13070040 li a4, 0x400
| .-> 0x00011840 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011844 87600502 vle32.v v1, (a0) ; arg1
| : 0x00011848 93962700 slli a3, a5, 2 ; arg6
| : 0x0001184c 1d8f sub a4, a4, a5 ; arg6
| : 0x0001184e 3695 add a0, a0, a3 ; arg1
| : 0x00011850 d780111e vmax.vv v1, v1, v3
| : 0x00011854 d7001116 vmin.vv v1, v1, v2
| : 0x00011858 a7e00502 vse32.v v1, (a1) ; arg2
| : 0x0001185c b695 add a1, a1, a3 ; arg2
| `=< 0x0001185e 6df3 bnez a4, 0x11840
\ 0x00011860 8280 ret
--- conversions
/ sym.test_conversions(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| 0x00011524 13070040 li a4, 0x400
| .-> 0x00011528 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001152c 87600502 vle32.v v1, (a0) ; arg1
| : 0x00011530 13982700 slli a6, a5, 2 ; arg6
| : 0x00011534 1d8f sub a4, a4, a5 ; arg6
| : 0x00011536 4295 add a0, a0, a6 ; arg1
| : 0x00011538 d790114a vfcvt.f.x.v v1, v1
| : 0x0001153c a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011540 c296 add a3, a3, a6 ; arg4
| `=< 0x00011542 7df3 bnez a4, 0x11528
| 0x00011544 13070040 li a4, 0x400
| .-> 0x00011548 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001154c 87e00502 vle32.v v1, (a1) ; arg2
| : 0x00011550 93962700 slli a3, a5, 2 ; arg6
| : 0x00011554 1d8f sub a4, a4, a5 ; arg6
| : 0x00011556 b695 add a1, a1, a3 ; arg2
| : 0x00011558 d790134a vfcvt.rtz.x.f.v v1, v1
| : 0x0001155c a7600602 vse32.v v1, (a2) ; arg3
| : 0x00011560 3696 add a2, a2, a3 ; arg3
| `=< 0x00011562 7df3 bnez a4, 0x11548
\ 0x00011564 8280 ret
--- narrowing
/ sym.test_narrowing(int64_t arg1, int64_t arg2, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg6 @ a5
| 0x0001133c 13070040 li a4, 0x400
| .-> 0x00011340 d777f70c vsetvli a5, a4, e0x10, mf2, ta, ma ; arg6
| : 0x00011344 87600502 vle32.v v1, (a0) ; arg1
| : 0x00011348 13962700 slli a2, a5, 2 ; arg6
| : 0x0001134c 93961700 slli a3, a5, 1 ; arg6
| : 0x00011350 1d8f sub a4, a4, a5 ; arg6
| : 0x00011352 3295 add a0, a0, a2 ; arg1
| : 0x00011354 d73014b6 vnsra.wi v1, v1, 8
| : 0x00011358 a7d00502 vse16.v v1, (a1) ; arg2
| : 0x0001135c b695 add a1, a1, a3 ; arg2
| `=< 0x0001135e 6df3 bnez a4, 0x11340
\ 0x00011360 8280 ret
--- average
/ sym.test_average(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg6 @ a5
| 0x00011804 7350a100 csrwi vxrm, 2
| 0x00011808 13070040 li a4, 0x400
| .-> 0x0001180c d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011810 07610502 vle32.v v2, (a0) ; arg1
| : 0x00011814 87e00502 vle32.v v1, (a1) ; arg2
| : 0x00011818 93962700 slli a3, a5, 2 ; arg6
| : 0x0001181c 1d8f sub a4, a4, a5 ; arg6
| : 0x0001181e 3695 add a0, a0, a3 ; arg1
| : 0x00011820 b695 add a1, a1, a3 ; arg2
| : 0x00011822 d7201122 vaaddu.vv v1, v1, v2
| : 0x00011826 a7600602 vse32.v v1, (a2) ; arg3
| : 0x0001182a 3696 add a2, a2, a3 ; arg3
| `=< 0x0001182c 65f3 bnez a4, 0x1180c
\ 0x0001182e 8280 ret
--- segment access
/ sym.test_segment_access(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| 0x00011742 13080040 li a6, 0x400
| .-> 0x00011746 d777080d vsetvli a5, a6, e0x20, m1, ta, ma ; arg6
| : 0x0001174a 87610502 vle32.v v3, (a0) ; arg1
| : 0x0001174e 07e10502 vle32.v v2, (a1) ; arg2
| : 0x00011752 87600602 vle32.v v1, (a2) ; arg3
| : 0x00011756 13972700 slli a4, a5, 2 ; arg6
| : 0x0001175a 3308f840 sub a6, a6, a5 ; arg6
| : 0x0001175e 3a95 add a0, a0, a4 ; arg1
| : 0x00011760 ba95 add a1, a1, a4 ; arg2
| : 0x00011762 57912102 vfadd.vv v2, v2, v3
| : 0x00011766 3a96 add a2, a2, a4 ; arg3
| : 0x00011768 d7101102 vfadd.vv v1, v1, v2
| : 0x0001176c a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011770 ba96 add a3, a3, a4 ; arg4
| `=< 0x00011772 e31a08fc bnez a6, 0x11746
\ 0x00011776 8280 ret
--- floating point comparisons
; CALL XREF from main @ 0x109b2
/ sym.test_float_comparisons(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x000114b8 b286 mv a3, a2
| 0x000114ba 2e83 mv t1, a1
| 0x000114bc aa88 mv a7, a0
| 0x000114be 13070040 li a4, 0x400
| .-> 0x000114c2 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000114c6 07e10802 vle32.v v2, (a7) ; arg8
| : 0x000114ca 87600302 vle32.v v1, (t1)
| : 0x000114ce 13982700 slli a6, a5, 2 ; arg6
| : 0x000114d2 1d8f sub a4, a4, a5 ; arg6
| : 0x000114d4 c298 add a7, a7, a6 ; arg8
| : 0x000114d6 4293 add t1, t1, a6
| : 0x000114d8 5790206e vmflt.vv v0, v2, v1
| : 0x000114dc d700115c vmerge.vvm v1, v1, v2, v0
| : 0x000114e0 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000114e4 c296 add a3, a3, a6 ; arg4
| `=< 0x000114e6 71ff bnez a4, 0x114c2
| 0x000114e8 577e000d vsetvli t3, zero, e0x20, m1, ta, ma
| 0x000114ec d731005e vmv.v.i v3, 0
| 0x000114f0 13070040 li a4, 0x400
| .-> 0x000114f4 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000114f8 07610502 vle32.v v2, (a0) ; arg1
| : 0x000114fc 07e00502 vle32.v v0, (a1) ; arg2
| : 0x00011500 87a78180 flw fa5, -0x7f8(gp)
| : 0x00011504 1d8f sub a4, a4, a5 ; arg6
| : 0x00011506 93962700 slli a3, a5, 2 ; arg6
| : 0x0001150a d7d0075e vfmv.v.f v1, fa5
| : 0x0001150e 57100162 vmfeq.vv v0, v0, v2
| : 0x00011512 b695 add a1, a1, a3 ; arg2
| : 0x00011514 3695 add a0, a0, a3 ; arg1
| : 0x00011516 d780305c vmerge.vvm v1, v3, v1, v0
| : 0x0001151a a7600602 vse32.v v1, (a2) ; arg3
| : 0x0001151e 3696 add a2, a2, a3 ; arg3
| `=< 0x00011520 71fb bnez a4, 0x114f4
\ 0x00011522 8280 ret
--- multi byte
/ sym.test_multi_byte(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg6 @ a5
| 0x00011778 13070020 li a4, 0x200
| .-> 0x0001177c d777870d vsetvli a5, a4, e0x40, m1, ta, ma ; arg6
| : 0x00011780 07710502 vle64.v v2, (a0) ; arg1
| : 0x00011784 87f00502 vle64.v v1, (a1) ; arg2
| : 0x00011788 93963700 slli a3, a5, 3 ; arg6
| : 0x0001178c 1d8f sub a4, a4, a5 ; arg6
| : 0x0001178e 3695 add a0, a0, a3 ; arg1
| : 0x00011790 b695 add a1, a1, a3 ; arg2
| : 0x00011792 d7001102 vadd.vv v1, v1, v2
| : 0x00011796 a7700602 vse64.v v1, (a2) ; arg3
| : 0x0001179a 3696 add a2, a2, a3 ; arg3
| `=< 0x0001179c 65f3 bnez a4, 0x1177c
\ 0x0001179e 8280 ret
--- shifts
; CALL XREF from main @ 0x1094c
/ sym.test_shifts(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg7);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg7 @ a6
| 0x00011102 b286 mv a3, a2
| 0x00011104 2a88 mv a6, a0
| 0x00011106 13070040 li a4, 0x400
| .-> 0x0001110a d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001110e 87600802 vle32.v v1, (a6) ; arg7
| : 0x00011112 93982700 slli a7, a5, 2 ; arg6
| : 0x00011116 1d8f sub a4, a4, a5 ; arg6
| : 0x00011118 4698 add a6, a6, a7 ; arg7
| : 0x0001111a d7b01196 vsll.vi v1, v1, 3
| : 0x0001111e a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011122 c696 add a3, a3, a7 ; arg4
| `=< 0x00011124 7df3 bnez a4, 0x1110a
| 0x00011126 b286 mv a3, a2
| 0x00011128 2a88 mv a6, a0
| 0x0001112a 13070040 li a4, 0x400
| .-> 0x0001112e d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011132 87600802 vle32.v v1, (a6) ; arg7
| : 0x00011136 93982700 slli a7, a5, 2 ; arg6
| : 0x0001113a 1d8f sub a4, a4, a5 ; arg6
| : 0x0001113c 4698 add a6, a6, a7 ; arg7
| : 0x0001113e d73011a2 vsrl.vi v1, v1, 2
| : 0x00011142 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011146 c696 add a3, a3, a7 ; arg4
| `=< 0x00011148 7df3 bnez a4, 0x1112e
| 0x0001114a b286 mv a3, a2
| 0x0001114c 13070040 li a4, 0x400
| .-> 0x00011150 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011154 87e00502 vle32.v v1, (a1) ; arg2
| : 0x00011158 13982700 slli a6, a5, 2 ; arg6
| : 0x0001115c 1d8f sub a4, a4, a5 ; arg6
| : 0x0001115e c295 add a1, a1, a6 ; arg2
| : 0x00011160 d73012a6 vsra.vi v1, v1, 4
| : 0x00011164 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011168 c296 add a3, a3, a6 ; arg4
| `=< 0x0001116a 7df3 bnez a4, 0x11150
| 0x0001116c d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| 0x00011170 57a10852 vid.v v2
| 0x00011174 13070040 li a4, 0x400
| .-> 0x00011178 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001117c 87600502 vle32.v v1, (a0) ; arg1
| : 0x00011180 57b22326 vand.vi v4, v2, 7
| : 0x00011184 d775000d vsetvli a1, zero, e0x20, m1, ta, ma ; arg2
| : 0x00011188 d7c1075e vmv.v.x v3, a5
| : 0x0001118c 57f0070d vsetvli zero, a5, e0x20, m1, ta, ma ; arg6
| : 0x00011190 93952700 slli a1, a5, 2 ; arg6
| : 0x00011194 d7001296 vsll.vv v1, v1, v4
| : 0x00011198 1d8f sub a4, a4, a5 ; arg6
| : 0x0001119a 2e95 add a0, a0, a1 ; arg1
| : 0x0001119c a7600602 vse32.v v1, (a2) ; arg3
| : 0x000111a0 d777000d vsetvli a5, zero, e0x20, m1, ta, ma ; arg6
| : 0x000111a4 57812102 vadd.vv v2, v2, v3
| : 0x000111a8 2e96 add a2, a2, a1 ; arg3
| `=< 0x000111aa 79f7 bnez a4, 0x11178
\ 0x000111ac 8280 ret
--- strided access
; CALL XREF from main @ 0x10a0c
/ sym.test_strided_access(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| 0x000115e2 ae86 mv a3, a1
| 0x000115e4 2a86 mv a2, a0
| 0x000115e6 1307f01f li a4, 0x1ff
| .-> 0x000115ea d777670c vsetvli a5, a4, e8, mf4, ta, ma ; arg6
| : 0x000115ee 07610622 vlseg2e32.v v2, (a2) ; arg3
| : 0x000115f2 93983700 slli a7, a5, 3 ; arg6
| : 0x000115f6 13982700 slli a6, a5, 2 ; arg6
| : 0x000115fa 1d8f sub a4, a4, a5 ; arg6
| : 0x000115fc 4696 add a2, a2, a7 ; arg3
| : 0x000115fe 27e10602 vse32.v v2, (a3) ; arg4
| : 0x00011602 c296 add a3, a3, a6 ; arg4
| `=< 0x00011604 7df3 bnez a4, 0x115ea
| 0x00011606 0567 lui a4, 1
| 0x00011608 b307e500 add a5, a0, a4 ; arg1
| 0x0001160c 87a787ff flw fa5, -8(a5)
| 0x00011610 732620c2 csrr a2, vlenb
| 0x00011614 93582600 srli a7, a2, 2 ; arg3
| 0x00011618 9387f8ff addi a5, a7, -1
| 0x0001161c 27aef57e fsw fa5, 0x7fc(a1) ; arg2
| 0x00011620 1b880700 sext.w a6, a5
| 0x00011624 9306f03f li a3, 0x3ff
| ,=< 0x00011628 63e80611 bltu a3, a6, 0x11738
| | 0x0001162c 5773000d vsetvli t1, zero, e0x20, m1, ta, ma
| | 0x00011630 d7a10852 vid.v v3
| | 0x00011634 118f sub a4, a4, a2 ; arg3
| | 0x00011636 33081041 neg a6, a7
| | 0x0001163a d7c1370e vrsub.vx v3, v3, a5
| | 0x0001163e 2e97 add a4, a4, a1 ; arg2
| | 0x00011640 1b080840 addiw a6, a6, 0x400
| | 0x00011644 aa86 mv a3, a0
| | 0x00011646 8147 li a5, 0
| .--> 0x00011648 07e18602 vl1re32.v v2, (a3)
| :| 0x0001164c bb871701 addw a5, a5, a7
| :| 0x00011650 b296 add a3, a3, a2 ; arg3
| :| 0x00011652 d7802132 vrgather.vv v1, v2, v3
| :| 0x00011656 a7008702 vs1r.v v1, (a4)
| :| 0x0001165a 118f sub a4, a4, a2 ; arg3
| `==< 0x0001165c e376f8fe bgeu a6, a5, 0x11648
| | 0x00011660 93060040 li a3, 0x400
| ,==< 0x00011664 6389d70c beq a5, a3, 0x11736
| || 0x00011668 bb8ef640 subw t4, a3, a5
| || 0x0001166c 3e88 mv a6, a5
| || ; CODE XREF from sym.test_strided_access @ 0x11740
| .---> 0x0001166e 732320c2 csrr t1, vlenb
| :|| 0x00011672 93563300 srli a3, t1, 3
| :|| 0x00011676 9388f6ff addi a7, a3, -1
| :|| 0x0001167a 1307f03f li a4, 0x3ff
| :|| 0x0001167e 1b860800 sext.w a2, a7
| :|| 0x00011682 1d9f subw a4, a4, a5
| ,====< 0x00011684 636cc706 bltu a4, a2, 0x116fc
| |:|| 0x00011688 13970702 slli a4, a5, 0x20
| |:|| 0x0001168c 135ee701 srli t3, a4, 0x1e
| |:|| 0x00011690 5776700d vsetvli a2, zero, e0x20, mf2, ta, ma
| |:|| 0x00011694 330fc501 add t5, a0, t3 ; arg1
| |:|| 0x00011698 87610f02 vle32.v v3, (t5)
| |:|| 0x0001169c d7a00852 vid.v v1
| |:|| 0x000116a0 935f1300 srli t6, t1, 1
| |:|| 0x000116a4 d7c0180e vrsub.vx v1, v1, a7
| |:|| 0x000116a8 0567 lui a4, 1
| |:|| 0x000116aa 3307f741 sub a4, a4, t6
| |:|| 0x000116ae 57813032 vrgather.vv v2, v3, v1
| |:|| 0x000116b2 3307c741 sub a4, a4, t3
| |:|| 0x000116b6 2e97 add a4, a4, a1 ; arg2
| |:|| 0x000116b8 27610702 vse32.v v2, (a4)
| |:|| 0x000116bc b308d040 neg a7, a3
| |:|| 0x000116c0 93880840 addi a7, a7, 0x400
| |:|| 0x000116c4 bb88f840 subw a7, a7, a5
| |:|| 0x000116c8 130e0040 li t3, 0x400
| |:|| 0x000116cc 8126 sext.w a3, a3
| |:|| 0x000116ce bb07fe40 subw a5, t3, a5
| ,=====< 0x000116d2 63efd800 bltu a7, a3, 0x116f0
| ||:|| 0x000116d6 7e9f add t5, t5, t6
| ||:|| 0x000116d8 87610f02 vle32.v v3, (t5)
| ||:|| 0x000116dc 3307f741 sub a4, a4, t6
| ||:|| 0x000116e0 13532300 srli t1, t1, 2
| ||:|| 0x000116e4 9b060300 sext.w a3, t1
| ||:|| 0x000116e8 57813032 vrgather.vv v2, v3, v1
| ||:|| 0x000116ec 27610702 vse32.v v2, (a4)
| ,`-----> 0x000116f0 6383d704 beq a5, a3, 0x11736
| | |:|| 0x000116f4 3b880601 addw a6, a3, a6
| | |:|| 0x000116f8 bb8ede40 subw t4, t4, a3
| | `----> 0x000116fc 9b86feff addiw a3, t4, -1
| | :|| 0x00011700 1387f57f addi a4, a1, 0x7ff ; arg2
| | :|| 0x00011704 0a08 slli a6, a6, 2
| | :|| 0x00011706 1307977f addi a4, a4, 0x7f9
| | :|| 0x0001170a 13960602 slli a2, a3, 0x20
| | :|| 0x0001170e 9387f57f addi a5, a1, 0x7ff ; arg2
| | :|| 0x00011712 9356e601 srli a3, a2, 0x1e
| | :|| 0x00011716 33070741 sub a4, a4, a6
| | :|| 0x0001171a 9387d77f addi a5, a5, 0x7fd
| | :|| 0x0001171e 4295 add a0, a0, a6 ; arg1
| | :|| 0x00011720 158f sub a4, a4, a3
| | :|| 0x00011722 b3870741 sub a5, a5, a6
| | .----> 0x00011726 87270500 flw fa5, 0(a0) ; arg1
| | ::|| 0x0001172a f117 addi a5, a5, -4
| | ::|| 0x0001172c 1105 addi a0, a0, 4 ; arg1
| | ::|| 0x0001172e 27a2f700 fsw fa5, 4(a5)
| | `====< 0x00011732 e31af7fe bne a4, a5, 0x11726
| `---`--> 0x00011736 8280 ret
| : `-> 0x00011738 8147 li a5, 0
| : 0x0001173a 930e0040 li t4, 0x400
| : 0x0001173e 0148 li a6, 0
\ `===< 0x00011740 3db7 j 0x1166e
--- absolute value and negation
; CALL XREF from main @ 0x10aee
/ sym.test_abs_neg(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| 0x00011862 ae86 mv a3, a1
| 0x00011864 2a86 mv a2, a0
| 0x00011866 13070040 li a4, 0x400
| .-> 0x0001186a d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x0001186e 87600602 vle32.v v1, (a2) ; arg3
| : 0x00011872 13982700 slli a6, a5, 2 ; arg6
| : 0x00011876 1d8f sub a4, a4, a5 ; arg6
| : 0x00011878 4296 add a2, a2, a6 ; arg3
| : 0x0001187a 5731100e vrsub.vi v2, v1, 0
| : 0x0001187e d700111e vmax.vv v1, v1, v2
| : 0x00011882 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011886 c296 add a3, a3, a6 ; arg4
| `=< 0x00011888 6df3 bnez a4, 0x1186a
| 0x0001188a 13070040 li a4, 0x400
| .-> 0x0001188e d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011892 87600502 vle32.v v1, (a0) ; arg1
| : 0x00011896 93962700 slli a3, a5, 2 ; arg6
| : 0x0001189a 1d8f sub a4, a4, a5 ; arg6
| : 0x0001189c 3695 add a0, a0, a3 ; arg1
| : 0x0001189e d730100e vrsub.vi v1, v1, 0
| : 0x000118a2 a7e00502 vse32.v v1, (a1) ; arg2
| : 0x000118a6 b695 add a1, a1, a3 ; arg2
| `=< 0x000118a8 7df3 bnez a4, 0x1188e
\ 0x000118aa 8280 ret
--- main function
; CODE XREF from loc.__wrap_main @
;-- section..text:
;-- .text:
;-- $xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zve32f1p0_zve32x1p0_zve64d1p0_zve64f1p0_zve64x1p0_zvl128b1p0_zvl32b1p0_zvl64b1p0:
/ int main(int argc, char **argv, char **envp);
| ; var int64_t var_130h @ stack - 0x130
| ; var int64_t var_128h @ stack - 0x128
| ; var int64_t var_120h @ stack - 0x120
| ; var int64_t var_118h @ stack - 0x118
| ; var int64_t var_110h @ stack - 0x110
| ; var int64_t var_108h @ stack - 0x108
| ; var int64_t var_f8h @ stack - 0xf8
| ; var int64_t var_f0h @ stack - 0xf0
| ; var int64_t var_e8h @ stack - 0xe8
| ; var int64_t var_e0h @ stack - 0xe0
| ; var int64_t var_d8h @ stack - 0xd8
| ; var int64_t var_d0h @ stack - 0xd0
| ; var int64_t var_c8h @ stack - 0xc8
| ; var int64_t var_c0h @ stack - 0xc0
| ; var int64_t var_b8h @ stack - 0xb8
| ; var int64_t var_b0h @ stack - 0xb0
| ; var int64_t var_a8h @ stack - 0xa8
| ; var int64_t var_a0h @ stack - 0xa0
| ; var int64_t var_98h @ stack - 0x98
| ; var int64_t var_90h @ stack - 0x90
| ; var int64_t var_88h @ stack - 0x88
| ; var int64_t var_80h @ stack - 0x80
| ; var int64_t var_78h @ stack - 0x78
| ; var int64_t var_68h @ stack - 0x68
| ; var int64_t var_60h @ stack - 0x60
| ; var int64_t var_58h @ stack - 0x58
| ; var int64_t var_50h @ stack - 0x50
| ; var int64_t var_48h @ stack - 0x48
| ; var int64_t var_40h @ stack - 0x40
| ; var int64_t var_38h @ stack - 0x38
| ; var int64_t var_30h @ stack - 0x30
| ; var int64_t var_28h @ stack - 0x28
| ; var int64_t var_20h @ stack - 0x20
| ; var int64_t var_18h @ stack - 0x18
| ; var int64_t var_10h @ stack - 0x10
| ; var int64_t var_8h @ stack - 0x8
| ; arg int64_t arg_30h @ stack + 0x30
| 0x000105c0 7350a100 csrwi vxrm, 2 ; [09] -r-x section size 5118 named .text
| 0x000105c4 6971 addi sp, sp, -0x130
| 0x000105c6 0566 lui a2, 1
| 0x000105c8 93050004 li a1, 0x40
| 0x000105cc 2819 addi a0, sp, 0xb8
| 0x000105ce 22f2 sd s0, 0x120(sp)
| 0x000105d0 06f6 sd ra, 0x128(sp)
| 0x000105d2 26ee sd s1, 0x118(sp)
| 0x000105d4 4aea sd s2, 0x110(sp)
| 0x000105d6 4ee6 sd s3, 0x108(sp)
| 0x000105d8 52e2 sd s4, 0x100(sp)
| 0x000105da d6fd sd s5, 0xf8(sp)
| 0x000105dc daf9 sd s6, 0xf0(sp)
| 0x000105de def5 sd s7, 0xe8(sp)
| 0x000105e0 e2f1 sd s8, 0xe0(sp)
| 0x000105e2 e6ed sd s9, 0xd8(sp)
| 0x000105e4 eae9 sd s10, 0xd0(sp)
| 0x000105e6 eee5 sd s11, 0xc8(sp)
| 0x000105e8 0144 li s0, 0
| 0x000105ea eff07ff9 jal sym.imp.posix_memalign
| ,=< 0x000105ee 11e1 bnez a0, 0x105f2
| | 0x000105f0 6a74 ld s0, 0xb8(sp)
| `-> 0x000105f2 0566 lui a2, 1
| 0x000105f4 93050004 li a1, 0x40
| 0x000105f8 0819 addi a0, sp, 0xb0
| 0x000105fa eff07ff8 jal sym.imp.posix_memalign
| 0x000105fe 014b li s6, 0
| ,=< 0x00010600 11e1 bnez a0, 0x10604
| | 0x00010602 4a7b ld s6, 0xb0(sp)
| `-> 0x00010604 0566 lui a2, 1
| 0x00010606 93050004 li a1, 0x40
| 0x0001060a 2811 addi a0, sp, 0xa8
| 0x0001060c eff05ff7 jal sym.imp.posix_memalign
| 0x00010610 02f0 sd zero, 0x20(sp)
| ,=< 0x00010612 19e1 bnez a0, 0x10618
| | 0x00010614 aa77 ld a5, 0xa8(sp)
| | 0x00010616 3ef0 sd a5, 0x20(sp)
| `-> 0x00010618 0566 lui a2, 1
| 0x0001061a 93050004 li a1, 0x40
| 0x0001061e 0811 addi a0, sp, 0xa0
| 0x00010620 eff01ff6 jal sym.imp.posix_memalign
| 0x00010624 014a li s4, 0
| ,=< 0x00010626 11e1 bnez a0, 0x1062a
| | 0x00010628 0a7a ld s4, 0xa0(sp)
| `-> 0x0001062a 0566 lui a2, 1
| 0x0001062c 13060680 addi a2, a2, -0x800
| 0x00010630 93050004 li a1, 0x40
| 0x00010634 2809 addi a0, sp, 0x98
| 0x00010636 eff0bff4 jal sym.imp.posix_memalign
| 0x0001063a 814c li s9, 0
| ,=< 0x0001063c 11e1 bnez a0, 0x10640
| | 0x0001063e ea6c ld s9, 0x98(sp)
| `-> 0x00010640 0566 lui a2, 1
| 0x00010642 13060680 addi a2, a2, -0x800
| 0x00010646 93050004 li a1, 0x40
| 0x0001064a 0809 addi a0, sp, 0x90
| 0x0001064c eff05ff3 jal sym.imp.posix_memalign
| 0x00010650 814d li s11, 0
| ,=< 0x00010652 11e1 bnez a0, 0x10656
| | 0x00010654 ca6d ld s11, 0x90(sp)
| `-> 0x00010656 0566 lui a2, 1
| 0x00010658 13060680 addi a2, a2, -0x800
| 0x0001065c 93050004 li a1, 0x40
| 0x00010660 2801 addi a0, sp, 0x88
| 0x00010662 eff0fff1 jal sym.imp.posix_memalign
| 0x00010666 02ec sd zero, 0x18(sp)
| ,=< 0x00010668 19e1 bnez a0, 0x1066e
| | 0x0001066a aa67 ld a5, 0x88(sp)
| | 0x0001066c 3eec sd a5, 0x18(sp)
| `-> 0x0001066e 13060040 li a2, 0x400
| 0x00010672 93050004 li a1, 0x40
| 0x00010676 0801 addi a0, sp, 0x80
| 0x00010678 eff09ff0 jal sym.imp.posix_memalign
| 0x0001067c 02e8 sd zero, 0x10(sp)
| ,=< 0x0001067e 19e1 bnez a0, 0x10684
| | 0x00010680 8a67 ld a5, 0x80(sp)
| | 0x00010682 3ee8 sd a5, 0x10(sp)
| `-> 0x00010684 0966 lui a2, 2
| 0x00010686 93050004 li a1, 0x40
| 0x0001068a a818 addi a0, sp, 0x78
| 0x0001068c eff05fef jal sym.imp.posix_memalign
| 0x00010690 02e4 sd zero, 8(sp)
| ,=< 0x00010692 19e1 bnez a0, 0x10698
| | 0x00010694 e677 ld a5, 0x78(sp)
| | 0x00010696 3ee4 sd a5, 8(sp)
| `-> 0x00010698 0966 lui a2, 2
| 0x0001069a 93050004 li a1, 0x40
| 0x0001069e 8818 addi a0, sp, 0x70
| 0x000106a0 eff01fee jal sym.imp.posix_memalign
| 0x000106a4 02e0 sd zero, 0(sp)
| ,=< 0x000106a6 19e1 bnez a0, 0x106ac
| | 0x000106a8 c677 ld a5, 0x70(sp)
| | 0x000106aa 3ee0 sd a5, 0(sp)
| `-> 0x000106ac 0966 lui a2, 2
| 0x000106ae 93050004 li a1, 0x40
| 0x000106b2 a810 addi a0, sp, 0x68
| 0x000106b4 eff0dfec jal sym.imp.posix_memalign
| 0x000106b8 02f4 sd zero, 0x28(sp)
| ,=< 0x000106ba 19e1 bnez a0, 0x106c0
| | 0x000106bc a677 ld a5, 0x68(sp)
| | 0x000106be 3ef4 sd a5, 0x28(sp)
| `-> 0x000106c0 0566 lui a2, 1
| 0x000106c2 93050004 li a1, 0x40
| 0x000106c6 8810 addi a0, sp, 0x60
| 0x000106c8 eff09feb jal sym.imp.posix_memalign
| 0x000106cc 8144 li s1, 0
| ,=< 0x000106ce 11e1 bnez a0, 0x106d2
| | 0x000106d0 8674 ld s1, 0x60(sp)
| `-> 0x000106d2 0566 lui a2, 1
| 0x000106d4 93050004 li a1, 0x40
| 0x000106d8 a808 addi a0, sp, 0x58
| 0x000106da eff07fea jal sym.imp.posix_memalign
| 0x000106de 8149 li s3, 0
| ,=< 0x000106e0 11e1 bnez a0, 0x106e4
| | 0x000106e2 e669 ld s3, 0x58(sp)
| `-> 0x000106e4 0566 lui a2, 1
| 0x000106e6 93050004 li a1, 0x40
| 0x000106ea 8808 addi a0, sp, 0x50
| 0x000106ec eff05fe9 jal sym.imp.posix_memalign
| 0x000106f0 014d li s10, 0
| ,=< 0x000106f2 11e1 bnez a0, 0x106f6
| | 0x000106f4 466d ld s10, 0x50(sp)
| `-> 0x000106f6 0566 lui a2, 1
| 0x000106f8 93050004 li a1, 0x40
| 0x000106fc a800 addi a0, sp, 0x48
| 0x000106fe eff03fe8 jal sym.imp.posix_memalign
| 0x00010702 0149 li s2, 0
| ,=< 0x00010704 11e1 bnez a0, 0x10708
| | 0x00010706 2669 ld s2, 0x48(sp)
| `-> 0x00010708 93050004 li a1, 0x40
| 0x0001070c 0566 lui a2, 1
| 0x0001070e 3305b100 add a0, sp, a1
| 0x00010712 eff0ffe6 jal sym.imp.posix_memalign
| 0x00010716 814a li s5, 0
| ,=< 0x00010718 11e1 bnez a0, 0x1071c
| | 0x0001071a 866a ld s5, 0x40(sp)
| `-> 0x0001071c 0566 lui a2, 1
| 0x0001071e 93050004 li a1, 0x40
| 0x00010722 2818 addi a0, sp, 0x38
| 0x00010724 eff0dfe5 jal sym.imp.posix_memalign
| 0x00010728 014c li s8, 0
| ,=< 0x0001072a 11e1 bnez a0, 0x1072e
| | 0x0001072c 627c ld s8, 0x38(sp)
| `-> 0x0001072e 0566 lui a2, 1
| 0x00010730 93050004 li a1, 0x40
| 0x00010734 0818 addi a0, sp, 0x30
| 0x00010736 eff0bfe4 jal sym.imp.posix_memalign
| 0x0001073a 814b li s7, 0
| ,=< 0x0001073c 11e1 bnez a0, 0x10740
| | 0x0001073e c27b ld s7, 0x30(sp)
| `-> 0x00010740 5777000d vsetvli a4, zero, e0x20, m1, ta, ma
| 0x00010744 93064006 li a3, 0x64
| 0x00010748 57c4065e vmv.v.x v8, a3
| 0x0001074c 93060040 li a3, 0x400
| 0x00010750 57c9065e vmv.v.x v18, a3
| 0x00010754 9306f007 li a3, 0x7f
| 0x00010758 d7c8065e vmv.v.x v17, a3
| 0x0001075c b787eb51 lui a5, 0x51eb8
| 0x00010760 930600e0 li a3, -0x200
| 0x00010764 57c8065e vmv.v.x v16, a3
| 0x00010768 9b87f751 addiw a5, a5, 0x51f
| 0x0001076c 9306f00f li a3, 0xff
| 0x00010770 d7c7065e vmv.v.x v15, a3
| 0x00010774 d7c9075e vmv.v.x v19, a5
| 0x00010778 930600e0 li a3, -0x200
| 0x0001077c 5770f00c vsetvli zero, zero, e0x10, mf2, ta, ma
| 0x00010780 57c7065e vmv.v.x v14, a3
| 0x00010784 9306f007 li a3, 0x7f
| 0x00010788 5770600c vsetvli zero, zero, e8, mf4, ta, ma
| 0x0001078c d7c6065e vmv.v.x v13, a3
| 0x00010790 87a70181 flw fa5, -0x7f0(gp)
| 0x00010794 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| 0x00010798 07a78180 flw fa4, -0x7f8(gp)
| 0x0001079c d7b5015e vmv.v.i v11, 3
| 0x000107a0 57b5035e vmv.v.i v10, 7
| 0x000107a4 d7b4065e vmv.v.i v9, 0xd
| 0x000107a8 4263 ld t1, 0x10(sp)
| 0x000107aa 0275 ld a0, 0x20(sp)
| 0x000107ac c546 li a3, 0x11
| 0x000107ae d7a00852 vid.v v1
| 0x000107b2 57c6065e vmv.v.x v12, a3
| 0x000107b6 e282 mv t0, s8
| 0x000107b8 d68f mv t6, s5
| 0x000107ba 6a8f mv t5, s10
| 0x000107bc ce8e mv t4, s3
| 0x000107be 268e mv t3, s1
| 0x000107c0 ee88 mv a7, s11
| 0x000107c2 6688 mv a6, s9
| 0x000107c4 da85 mv a1, s6
| 0x000107c6 2286 mv a2, s0
| 0x000107c8 93060040 li a3, 0x400
| .-> 0x000107cc d7f7060d vsetvli a5, a3, e0x20, m1, ta, ma
| : 0x000107d0 d7011802 vadd.vv v3, v1, v16
| : 0x000107d4 57211596 vmul.vv v2, v1, v10
| : 0x000107d8 d7a31596 vmul.vv v7, v1, v11
| : 0x000107dc a7610602 vse32.v v3, (a2)
| : 0x000107e0 5770f00c vsetvli zero, zero, e0x10, mf2, ta, ma
| : 0x000107e4 d73110b2 vnsrl.wi v3, v1, 0
| : 0x000107e8 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| : 0x000107ec 57812726 vand.vv v2, v2, v15
| : 0x000107f0 d7837826 vand.vv v7, v7, v17
| : 0x000107f4 d792114a vfcvt.f.x.v v5, v1
| : 0x000107f8 5770f00c vsetvli zero, zero, e0x10, mf2, ta, ma
| : 0x000107fc 27e10502 vse32.v v2, (a1)
| : 0x00010800 d70a3702 vadd.vv v21, v3, v14
| : 0x00010804 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| : 0x00010808 5783200b vsub.vv v6, v18, v1
| : 0x0001080c 57a1199e vmulh.vv v2, v1, v19
| : 0x00010810 d7d25782 vfdiv.vf v5, v5, fa5
| : 0x00010814 5770f00c vsetvli zero, zero, e0x10, mf2, ta, ma
| : 0x00010818 573a70b2 vnsrl.wi v20, v7, 0
| : 0x0001081c 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| : 0x00010820 a7630502 vse32.v v7, (a0)
| : 0x00010824 a75a0802 vse16.v v21, (a6)
| : 0x00010828 5792614a vfcvt.f.x.v v4, v6
| : 0x0001082c 57b122a6 vsra.vi v2, v2, 5
| : 0x00010830 13972700 slli a4, a5, 2
| : 0x00010834 57d24782 vfdiv.vf v4, v4, fa5
| : 0x00010838 5770600c vsetvli zero, zero, e8, mf4, ta, ma
| : 0x0001083c d73130b2 vnsrl.wi v3, v3, 0
| : 0x00010840 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| : 0x00010844 27da0802 vse16.v v20, (a7)
| : 0x00010848 572114ae vnmsub.vv v2, v8, v1
| : 0x0001084c d7a31496 vmul.vv v7, v1, v9
| : 0x00010850 5770600c vsetvli zero, zero, e8, mf4, ta, ma
| : 0x00010854 d7813626 vand.vv v3, v3, v13
| : 0x00010858 5770000d vsetvli zero, zero, e0x20, m1, ta, ma
| : 0x0001085c 5791214a vfcvt.f.x.v v2, v2
| : 0x00010860 a7010302 vse8.v v3, (t1)
| : 0x00010864 d7525702 vfadd.vf v5, v5, fa4
| : 0x00010868 57d12782 vfdiv.vf v2, v2, fa5
| : 0x0001086c 57236696 vmul.vv v6, v6, v12
| : 0x00010870 d773000d vsetvli t2, zero, e0x20, m1, ta, ma
| : 0x00010874 57ca075e vmv.v.x v20, a5
| : 0x00010878 57f0070d vsetvli zero, a5, e0x20, m1, ta, ma
| : 0x0001087c a7620e02 vse32.v v5, (t3)
| : 0x00010880 d7514702 vfadd.vf v3, v4, fa4
| : 0x00010884 d773000d vsetvli t2, zero, e0x20, m1, ta, ma
| : 0x00010888 d7001a02 vadd.vv v1, v1, v20
| : 0x0001088c 57f0070d vsetvli zero, a5, e0x20, m1, ta, ma
| : 0x00010890 93931700 slli t2, a5, 1
| : 0x00010894 a7e10e02 vse32.v v3, (t4)
| : 0x00010898 9d8e sub a3, a3, a5
| : 0x0001089a 3e93 add t1, t1, a5
| : 0x0001089c 3a96 add a2, a2, a4
| : 0x0001089e ba95 add a1, a1, a4
| : 0x000108a0 3a95 add a0, a0, a4
| : 0x000108a2 27610f02 vse32.v v2, (t5)
| : 0x000108a6 a7e30f02 vse32.v v7, (t6)
| : 0x000108aa 3a9e add t3, t3, a4
| : 0x000108ac ba9e add t4, t4, a4
| : 0x000108ae 3a9f add t5, t5, a4
| : 0x000108b0 ba9f add t6, t6, a4
| : 0x000108b2 1e98 add a6, a6, t2
| : 0x000108b4 27e30202 vse32.v v6, (t0)
| : 0x000108b8 9e98 add a7, a7, t2
| : 0x000108ba ba92 add t0, t0, a4
| `=< 0x000108bc 81fa bnez a3, 0x107cc
| 0x000108be d777700d vsetvli a5, zero, e0x20, mf2, ta, ma
| 0x000108c2 1307803e li a4, 0x3e8
| 0x000108c6 0266 ld a2, 0(sp)
| 0x000108c8 a266 ld a3, 8(sp)
| 0x000108ca d741075e vmv.v.x v3, a4
| 0x000108ce d7a00852 vid.v v1
| 0x000108d2 13070040 li a4, 0x400
| 0x000108d6 5743075e vmv.v.x v6, a4
| 0x000108da 13070020 li a4, 0x200
| .-> 0x000108de d777770d vsetvli a5, a4, e0x20, mf2, ta, ma
| : 0x000108e2 57a21196 vmul.vv v4, v1, v3
| : 0x000108e6 5781600a vsub.vv v2, v6, v1
| : 0x000108ea 5770800d vsetvli zero, zero, e0x40, m1, ta, ma
| : 0x000108ee 13953700 slli a0, a5, 3
| : 0x000108f2 d7a2434a vsext.vf2 v5, v4
| : 0x000108f6 5770700d vsetvli zero, zero, e0x20, mf2, ta, ma
| : 0x000108fa 57a12196 vmul.vv v2, v2, v3
| : 0x000108fe d775700d vsetvli a1, zero, e0x20, mf2, ta, ma
| : 0x00010902 57c2075e vmv.v.x v4, a5
| : 0x00010906 57f0870d vsetvli zero, a5, e0x40, m1, ta, ma
| : 0x0001090a a7f20602 vse64.v v5, (a3)
| : 0x0001090e d7a2234a vsext.vf2 v5, v2
| : 0x00010912 1d8f sub a4, a4, a5
| : 0x00010914 aa96 add a3, a3, a0
| : 0x00010916 a7720602 vse64.v v5, (a2)
| : 0x0001091a d775700d vsetvli a1, zero, e0x20, mf2, ta, ma
| : 0x0001091e d7001202 vadd.vv v1, v1, v4
| : 0x00010922 2a96 add a2, a2, a0
| `=< 0x00010924 4dff bnez a4, 0x108de
| 0x00010926 4965 lui a0, 0x12
| 0x00010928 130585a2 addi a0, a0, -0x5d8
| 0x0001092c eff05fc6 jal sym.imp.puts ; int puts(const char *s)
| 0x00010930 ce86 mv a3, s3
| 0x00010932 2686 mv a2, s1
| 0x00010934 da85 mv a1, s6
| 0x00010936 2285 mv a0, s0
| 0x00010938 ef00e031 jal sym.test_reductions
| 0x0001093c 5286 mv a2, s4
| 0x0001093e da85 mv a1, s6
| 0x00010940 2285 mv a0, s0
| 0x00010942 ef008072 jal sym.test_comparisons
| 0x00010946 5e86 mv a2, s7
| 0x00010948 a285 mv a1, s0
| 0x0001094a 5685 mv a0, s5
| 0x0001094c ef00607b jal sym.test_shifts
| 0x00010950 5e86 mv a2, s7
| 0x00010952 e285 mv a1, s8
| 0x00010954 5685 mv a0, s5
| 0x00010956 ef009005 jal sym.test_bitwise
| 0x0001095a 6266 ld a2, 0x18(sp)
| 0x0001095c ee85 mv a1, s11
| 0x0001095e 6685 mv a0, s9
| 0x00010960 ef00300f jal sym.test_saturating
| 0x00010964 5286 mv a2, s4
| 0x00010966 ee85 mv a1, s11
| 0x00010968 6685 mv a0, s9
| 0x0001096a ef007017 jal sym.test_widening
| 0x0001096e e266 ld a3, 0x18(sp)
| 0x00010970 2286 mv a2, s0
| 0x00010972 13070040 li a4, 0x400
| .-> 0x00010976 d777f70c vsetvli a5, a4, e0x10, mf2, ta, ma
| : 0x0001097a 87600602 vle32.v v1, (a2)
| : 0x0001097e 13952700 slli a0, a5, 2
| : 0x00010982 93951700 slli a1, a5, 1
| : 0x00010986 1d8f sub a4, a4, a5
| : 0x00010988 2a96 add a2, a2, a0
| : 0x0001098a d73014b6 vnsra.wi v1, v1, 8
| : 0x0001098e a7d00602 vse16.v v1, (a3)
| : 0x00010992 ae96 add a3, a3, a1
| `=< 0x00010994 6df3 bnez a4, 0x10976
| 0x00010996 4a86 mv a2, s2
| 0x00010998 ce85 mv a1, s3
| 0x0001099a 2685 mv a0, s1
| 0x0001099c ef00701c jal sym.test_float_ops
| 0x000109a0 ca86 mv a3, s2
| 0x000109a2 6a86 mv a2, s10
| 0x000109a4 ce85 mv a1, s3
| 0x000109a6 2685 mv a0, s1
| 0x000109a8 ef00f026 jal sym.test_fma
| 0x000109ac 4a86 mv a2, s2
| 0x000109ae ce85 mv a1, s3
| 0x000109b0 2685 mv a0, s1
| 0x000109b2 ef007030 jal sym.test_float_comparisons
| 0x000109b6 ca86 mv a3, s2
| 0x000109b8 2286 mv a2, s0
| 0x000109ba 13070040 li a4, 0x400
| .-> 0x000109be d777070d vsetvli a5, a4, e0x20, m1, ta, ma
| : 0x000109c2 87600602 vle32.v v1, (a2)
| : 0x000109c6 93952700 slli a1, a5, 2
| : 0x000109ca 1d8f sub a4, a4, a5
| : 0x000109cc 2e96 add a2, a2, a1
| : 0x000109ce d790114a vfcvt.f.x.v v1, v1
| : 0x000109d2 a7e00602 vse32.v v1, (a3)
| : 0x000109d6 ae96 add a3, a3, a1
| `=< 0x000109d8 7df3 bnez a4, 0x109be
| 0x000109da d286 mv a3, s4
| 0x000109dc 2686 mv a2, s1
| 0x000109de 13070040 li a4, 0x400
| .-> 0x000109e2 d777070d vsetvli a5, a4, e0x20, m1, ta, ma
| : 0x000109e6 87600602 vle32.v v1, (a2)
| : 0x000109ea 93952700 slli a1, a5, 2
| : 0x000109ee 1d8f sub a4, a4, a5
| : 0x000109f0 2e96 add a2, a2, a1
| : 0x000109f2 d790134a vfcvt.rtz.x.f.v v1, v1
| : 0x000109f6 a7e00602 vse32.v v1, (a3)
| : 0x000109fa ae96 add a3, a3, a1
| `=< 0x000109fc 7df3 bnez a4, 0x109e2
| 0x000109fe 4a86 mv a2, s2
| 0x00010a00 ce85 mv a1, s3
| 0x00010a02 2685 mv a0, s1
| 0x00010a04 ef003036 jal sym.test_sign_injection
| 0x00010a08 ca85 mv a1, s2
| 0x00010a0a 2685 mv a0, s1
| 0x00010a0c ef00703d jal sym.test_strided_access
| 0x00010a10 4a86 mv a2, s2
| 0x00010a12 6a88 mv a6, s10
| 0x00010a14 4e85 mv a0, s3
| 0x00010a16 a685 mv a1, s1
| 0x00010a18 93060040 li a3, 0x400
| .-> 0x00010a1c d7f7060d vsetvli a5, a3, e0x20, m1, ta, ma
| : 0x00010a20 87e10502 vle32.v v3, (a1)
| : 0x00010a24 07610502 vle32.v v2, (a0)
| : 0x00010a28 87600802 vle32.v v1, (a6)
| : 0x00010a2c 13972700 slli a4, a5, 2
| : 0x00010a30 9d8e sub a3, a3, a5
| : 0x00010a32 ba95 add a1, a1, a4
| : 0x00010a34 3a95 add a0, a0, a4
| : 0x00010a36 57912102 vfadd.vv v2, v2, v3
| : 0x00010a3a 3a98 add a6, a6, a4
| : 0x00010a3c d7101102 vfadd.vv v1, v1, v2
| : 0x00010a40 a7600602 vse32.v v1, (a2)
| : 0x00010a44 3a96 add a2, a2, a4
| `=< 0x00010a46 f9fa bnez a3, 0x10a1c
| 0x00010a48 a276 ld a3, 0x28(sp)
| 0x00010a4a 0265 ld a0, 0(sp)
| 0x00010a4c a265 ld a1, 8(sp)
| 0x00010a4e 13070020 li a4, 0x200
| .-> 0x00010a52 d777870d vsetvli a5, a4, e0x40, m1, ta, ma
| : 0x00010a56 07f10502 vle64.v v2, (a1)
| : 0x00010a5a 87700502 vle64.v v1, (a0)
| : 0x00010a5e 13963700 slli a2, a5, 3
| : 0x00010a62 1d8f sub a4, a4, a5
| : 0x00010a64 b295 add a1, a1, a2
| : 0x00010a66 3295 add a0, a0, a2
| : 0x00010a68 d7001102 vadd.vv v1, v1, v2
| : 0x00010a6c a7f00602 vse64.v v1, (a3)
| : 0x00010a70 b296 add a3, a3, a2
| `=< 0x00010a72 65f3 bnez a4, 0x10a52
| 0x00010a74 4265 ld a0, 0x10(sp)
| 0x00010a76 2286 mv a2, s0
| 0x00010a78 e685 mv a1, s9
| 0x00010a7a ef007052 jal sym.test_mixed_width
| 0x00010a7e 13064006 li a2, 0x64
| 0x00010a82 d777000d vsetvli a5, zero, e0x20, m1, ta, ma
| 0x00010a86 5744065e vmv.v.x v8, a2
| 0x00010a8a de86 mv a3, s7
| 0x00010a8c 6285 mv a0, s8
| 0x00010a8e d685 mv a1, s5
| 0x00010a90 13070040 li a4, 0x400
| .-> 0x00010a94 d777070d vsetvli a5, a4, e0x20, m1, ta, ma
| : 0x00010a98 07e10502 vle32.v v2, (a1)
| : 0x00010a9c 87600502 vle32.v v1, (a0)
| : 0x00010aa0 13962700 slli a2, a5, 2
| : 0x00010aa4 1d8f sub a4, a4, a5
| : 0x00010aa6 b295 add a1, a1, a2
| : 0x00010aa8 3295 add a0, a0, a2
| : 0x00010aaa d7201122 vaaddu.vv v1, v1, v2
| : 0x00010aae a7e00602 vse32.v v1, (a3)
| : 0x00010ab2 b296 add a3, a3, a2
| `=< 0x00010ab4 65f3 bnez a4, 0x10a94
| 0x00010ab6 1307c0f9 li a4, -0x64
| 0x00010aba d777000d vsetvli a5, zero, e0x20, m1, ta, ma
| 0x00010abe 5741075e vmv.v.x v2, a4
| 0x00010ac2 d286 mv a3, s4
| 0x00010ac4 2286 mv a2, s0
| 0x00010ac6 13070040 li a4, 0x400
| .-> 0x00010aca d777070d vsetvli a5, a4, e0x20, m1, ta, ma
| : 0x00010ace 87600602 vle32.v v1, (a2)
| : 0x00010ad2 93952700 slli a1, a5, 2
| : 0x00010ad6 1d8f sub a4, a4, a5
| : 0x00010ad8 2e96 add a2, a2, a1
| : 0x00010ada d700111e vmax.vv v1, v1, v2
| : 0x00010ade d7001416 vmin.vv v1, v1, v8
| : 0x00010ae2 a7e00602 vse32.v v1, (a3)
| : 0x00010ae6 ae96 add a3, a3, a1
| `=< 0x00010ae8 6df3 bnez a4, 0x10aca
| 0x00010aea d285 mv a1, s4
| 0x00010aec 2285 mv a0, s0
| 0x00010aee ef005057 jal sym.test_abs_neg
| 0x00010af2 5286 mv a2, s4
| 0x00010af4 da85 mv a1, s6
| 0x00010af6 2285 mv a0, s0
| 0x00010af8 ef00505b jal sym.test_minmax
| 0x00010afc 5e86 mv a2, s7
| 0x00010afe e285 mv a1, s8
| 0x00010b00 5685 mv a0, s5
| 0x00010b02 ef00f05f jal sym.test_unsigned_ops
| 0x00010b06 0276 ld a2, 0x20(sp)
| 0x00010b08 d286 mv a3, s4
| 0x00010b0a da85 mv a1, s6
| 0x00010b0c 2285 mv a0, s0
| 0x00010b0e ef007064 jal sym.test_madd
| 0x00010b12 4965 lui a0, 0x12
| 0x00010b14 130505a7 addi a0, a0, -0x590
| 0x00010b18 eff09fa7 jal sym.imp.puts ; int puts(const char *s)
| 0x00010b1c 2285 mv a0, s0
| 0x00010b1e eff03fa9 jal sym.imp.free ; void free(void *ptr)
| 0x00010b22 5a85 mv a0, s6
| 0x00010b24 eff0dfa8 jal sym.imp.free ; void free(void *ptr)
| 0x00010b28 0275 ld a0, 0x20(sp)
| 0x00010b2a eff07fa8 jal sym.imp.free ; void free(void *ptr)
| 0x00010b2e 5285 mv a0, s4
| 0x00010b30 eff01fa8 jal sym.imp.free ; void free(void *ptr)
| 0x00010b34 6685 mv a0, s9
| 0x00010b36 eff0bfa7 jal sym.imp.free ; void free(void *ptr)
| 0x00010b3a 6e85 mv a0, s11
| 0x00010b3c eff05fa7 jal sym.imp.free ; void free(void *ptr)
| 0x00010b40 6265 ld a0, 0x18(sp)
| 0x00010b42 eff0ffa6 jal sym.imp.free ; void free(void *ptr)
| 0x00010b46 4265 ld a0, 0x10(sp)
| 0x00010b48 eff09fa6 jal sym.imp.free ; void free(void *ptr)
| 0x00010b4c 2265 ld a0, 8(sp)
| 0x00010b4e eff03fa6 jal sym.imp.free ; void free(void *ptr)
| 0x00010b52 0265 ld a0, 0(sp)
| 0x00010b54 eff0dfa5 jal sym.imp.free ; void free(void *ptr)
| 0x00010b58 2275 ld a0, 0x28(sp)
| 0x00010b5a eff07fa5 jal sym.imp.free ; void free(void *ptr)
| 0x00010b5e 2685 mv a0, s1
| 0x00010b60 eff01fa5 jal sym.imp.free ; void free(void *ptr)
| 0x00010b64 4e85 mv a0, s3
| 0x00010b66 eff0bfa4 jal sym.imp.free ; void free(void *ptr)
| 0x00010b6a 6a85 mv a0, s10
| 0x00010b6c eff05fa4 jal sym.imp.free ; void free(void *ptr)
| 0x00010b70 4a85 mv a0, s2
| 0x00010b72 eff0ffa3 jal sym.imp.free ; void free(void *ptr)
| 0x00010b76 5685 mv a0, s5
| 0x00010b78 eff09fa3 jal sym.imp.free ; void free(void *ptr)
| 0x00010b7c 6285 mv a0, s8
| 0x00010b7e eff03fa3 jal sym.imp.free ; void free(void *ptr)
| 0x00010b82 5e85 mv a0, s7
| 0x00010b84 eff0dfa2 jal sym.imp.free ; void free(void *ptr)
| 0x00010b88 b270 ld ra, 0x128(sp)
| 0x00010b8a 1274 ld s0, 0x120(sp)
| 0x00010b8c f264 ld s1, 0x118(sp)
| 0x00010b8e 5269 ld s2, 0x110(sp)
| 0x00010b90 b269 ld s3, 0x108(sp)
| 0x00010b92 126a ld s4, 0x100(sp)
| 0x00010b94 ee7a ld s5, 0xf8(sp)
| 0x00010b96 4e7b ld s6, 0xf0(sp)
| 0x00010b98 ae7b ld s7, 0xe8(sp)
| 0x00010b9a 0e7c ld s8, 0xe0(sp)
| 0x00010b9c ee6c ld s9, 0xd8(sp)
| 0x00010b9e 4e6d ld s10, 0xd0(sp)
| 0x00010ba0 ae6d ld s11, 0xc8(sp)
| 0x00010ba2 0145 li a0, 0
| 0x00010ba4 5561 addi sp, sp, 0x130
\ 0x00010ba6 8280 ret
--- madd
; CALL XREF from main @ 0x10b0e
/ sym.test_madd(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x00011954 b688 mv a7, a3
| 0x00011956 b28e mv t4, a2
| 0x00011958 2e8e mv t3, a1
| 0x0001195a 2a83 mv t1, a0
| 0x0001195c 13080040 li a6, 0x400
| .-> 0x00011960 d777080d vsetvli a5, a6, e0x20, m1, ta, ma ; arg6
| : 0x00011964 87610302 vle32.v v3, (t1)
| : 0x00011968 87600e02 vle32.v v1, (t3)
| : 0x0001196c 07e10e02 vle32.v v2, (t4)
| : 0x00011970 13972700 slli a4, a5, 2 ; arg6
| : 0x00011974 3308f840 sub a6, a6, a5 ; arg6
| : 0x00011978 3a93 add t1, t1, a4
| : 0x0001197a 3a9e add t3, t3, a4
| : 0x0001197c ba9e add t4, t4, a4
| : 0x0001197e d7a021a6 vmadd.vv v1, v3, v2
| : 0x00011982 a7e00802 vse32.v v1, (a7) ; arg8
| : 0x00011986 ba98 add a7, a7, a4 ; arg8
| `=< 0x00011988 e31c08fc bnez a6, 0x11960
| 0x0001198c 13080040 li a6, 0x400
| .-> 0x00011990 d777080d vsetvli a5, a6, e0x20, m1, ta, ma ; arg6
| : 0x00011994 87610602 vle32.v v3, (a2) ; arg3
| : 0x00011998 07610502 vle32.v v2, (a0) ; arg1
| : 0x0001199c 87e00502 vle32.v v1, (a1) ; arg2
| : 0x000119a0 13972700 slli a4, a5, 2 ; arg6
| : 0x000119a4 3308f840 sub a6, a6, a5 ; arg6
| : 0x000119a8 3a96 add a2, a2, a4 ; arg3
| : 0x000119aa 3a95 add a0, a0, a4 ; arg1
| : 0x000119ac ba95 add a1, a1, a4 ; arg2
| : 0x000119ae d72031ae vnmsub.vv v1, v2, v3
| : 0x000119b2 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000119b6 ba96 add a3, a3, a4 ; arg4
| `=< 0x000119b8 e31c08fc bnez a6, 0x11990
\ 0x000119bc 8280 ret
--- bitwise
; CALL XREF from main @ 0x10956
/ sym.test_bitwise(int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4, int64_t arg6, int64_t arg8);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg3 @ a2
| ; arg int64_t arg4 @ a3
| ; arg int64_t arg6 @ a5
| ; arg int64_t arg8 @ a7
| 0x000111ae b286 mv a3, a2
| 0x000111b0 2e83 mv t1, a1
| 0x000111b2 aa88 mv a7, a0
| 0x000111b4 13070040 li a4, 0x400
| .-> 0x000111b8 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000111bc 07e10802 vle32.v v2, (a7) ; arg8
| : 0x000111c0 87600302 vle32.v v1, (t1)
| : 0x000111c4 13982700 slli a6, a5, 2 ; arg6
| : 0x000111c8 1d8f sub a4, a4, a5 ; arg6
| : 0x000111ca c298 add a7, a7, a6 ; arg8
| : 0x000111cc 4293 add t1, t1, a6
| : 0x000111ce d7001126 vand.vv v1, v1, v2
| : 0x000111d2 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x000111d6 c296 add a3, a3, a6 ; arg4
| `=< 0x000111d8 65f3 bnez a4, 0x111b8
| 0x000111da b286 mv a3, a2
| 0x000111dc 2e83 mv t1, a1
| 0x000111de aa88 mv a7, a0
| 0x000111e0 13070040 li a4, 0x400
| .-> 0x000111e4 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x000111e8 07e10802 vle32.v v2, (a7) ; arg8
| : 0x000111ec 87600302 vle32.v v1, (t1)
| : 0x000111f0 13982700 slli a6, a5, 2 ; arg6
| : 0x000111f4 1d8f sub a4, a4, a5 ; arg6
| : 0x000111f6 c298 add a7, a7, a6 ; arg8
| : 0x000111f8 4293 add t1, t1, a6
| : 0x000111fa d700112a vor.vv v1, v1, v2
| : 0x000111fe a7e00602 vse32.v v1, (a3) ; arg4
| : 0x00011202 c296 add a3, a3, a6 ; arg4
| `=< 0x00011204 65f3 bnez a4, 0x111e4
| 0x00011206 b286 mv a3, a2
| 0x00011208 aa88 mv a7, a0
| 0x0001120a 13070040 li a4, 0x400
| .-> 0x0001120e d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011212 07e10802 vle32.v v2, (a7) ; arg8
| : 0x00011216 87e00502 vle32.v v1, (a1) ; arg2
| : 0x0001121a 13982700 slli a6, a5, 2 ; arg6
| : 0x0001121e 1d8f sub a4, a4, a5 ; arg6
| : 0x00011220 c298 add a7, a7, a6 ; arg8
| : 0x00011222 c295 add a1, a1, a6 ; arg2
| : 0x00011224 d700112e vxor.vv v1, v1, v2
| : 0x00011228 a7e00602 vse32.v v1, (a3) ; arg4
| : 0x0001122c c296 add a3, a3, a6 ; arg4
| `=< 0x0001122e 65f3 bnez a4, 0x1120e
| 0x00011230 13070040 li a4, 0x400
| .-> 0x00011234 d777070d vsetvli a5, a4, e0x20, m1, ta, ma ; arg6
| : 0x00011238 87600502 vle32.v v1, (a0) ; arg1
| : 0x0001123c 93962700 slli a3, a5, 2 ; arg6
| : 0x00011240 1d8f sub a4, a4, a5 ; arg6
| : 0x00011242 3695 add a0, a0, a3 ; arg1
| : 0x00011244 d7b01f2e vnot.v v1, v1
| : 0x00011248 a7600602 vse32.v v1, (a2) ; arg3
| : 0x0001124c 3696 add a2, a2, a3 ; arg3
| `=< 0x0001124e 7df3 bnez a4, 0x11234
\ 0x00011250 8280 ret
EOF
RUN
NAME=rotate_right_var
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010504
pdf
EOF
EXPECT=<<EOF
/ sym.rotate_right_var();
| 0x00010504 3b55b560 rorw a0, a0, a1
\ 0x00010508 8280 ret
EOF
RUN
NAME=set_multiple_known_bits
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001058e
pdf
EOF
EXPECT=<<EOF
/ sym.set_multiple_known_bits(int64_t arg1);
| ; arg int64_t arg1 @ a0
| 0x0001058e 13654508 ori a0, a0, 0x84 ; arg1
| 0x00010592 1315f528 bseti a0, a0, 0xf ; arg1
\ 0x00010596 8280 ret
EOF
RUN
NAME=clear_bit_50
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001054a
pdf
EOF
EXPECT=<<EOF
/ sym.clear_bit_50(int64_t arg1);
| ; arg int64_t arg1 @ a0
| 0x0001054a 1315254b bclri a0, a0, 0x32 ; arg1
\ 0x0001054e 8280 ret
EOF
RUN
NAME=set_bit_40
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010532
pdf
EOF
EXPECT=<<EOF
/ sym.set_bit_40(int64_t arg1);
| ; arg int64_t arg1 @ a0
| 0x00010532 1315852a bseti a0, a0, 0x28 ; arg1
\ 0x00010536 8280 ret
EOF
RUN
NAME=swap_endian_32
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010578
pdf
EOF
EXPECT=<<EOF
/ sym.swap_endian_32();
| 0x00010578 1355856b rev8 a0, a0
| 0x0001057c 0195 srai a0, a0, 0x20
\ 0x0001057e 8280 ret
EOF
RUN
NAME=is_flag_set
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000105c2
pdf
EOF
EXPECT=<<EOF
/ sym.is_flag_set(int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| 0x000105c2 0841 lw a0, 0(a0) ; arg1
| 0x000105c4 3355b548 bext a0, a0, a1 ; arg2
\ 0x000105c8 8280 ret
EOF
RUN
NAME=extract_bit_var
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001056c
pdf
EOF
EXPECT=<<EOF
/ sym.extract_bit_var(int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| 0x0001056c 3355b548 bext a0, a0, a1 ; arg2
\ 0x00010570 8280 ret
EOF
RUN
NAME=rotate_left_16_32bit
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001051c
pdf
EOF
EXPECT=<<EOF
/ sym.rotate_left_16_32bit();
| 0x0001051c 1b550561 roriw a0, a0, 0x10
\ 0x00010520 8280 ret
EOF
RUN
NAME=rotate_right_12
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000104f8
pdf
EOF
EXPECT=<<EOF
/ sym.rotate_right_12();
| 0x000104f8 1b55c560 roriw a0, a0, 0xc
\ 0x000104fc 8280 ret
EOF
RUN
NAME=extract_bit_9
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010566
pdf
EOF
EXPECT=<<EOF
/ sym.extract_bit_9(int64_t arg1);
| ; arg int64_t arg1 @ a0
| 0x00010566 13559548 bexti a0, a0, 9 ; arg1
\ 0x0001056a 8280 ret
EOF
RUN
NAME=disable_device_flag
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000105b2
pdf
EOF
EXPECT=<<EOF
/ sym.disable_device_flag(int64_t arg1, int64_t arg2, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg6 @ a5
| 0x000105b2 1841 lw a4, 0(a0) ; arg1
| 0x000105b4 8547 li a5, 1
| 0x000105b6 bb97b700 sllw a5, a5, a1 ; arg6
| 0x000105ba b377f740 andn a5, a4, a5
| 0x000105be 1cc1 sw a5, 0(a0) ; arg6
\ 0x000105c0 8280 ret
EOF
RUN
NAME=host_to_network
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000105d2
pdf
EOF
EXPECT=<<EOF
/ sym.host_to_network();
| 0x000105d2 1355856b rev8 a0, a0
| 0x000105d6 0195 srai a0, a0, 0x20
\ 0x000105d8 8280 ret
EOF
RUN
NAME=rotate_left_64
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001050a
pdf
EOF
EXPECT=<<EOF
/ sym.rotate_left_64();
| 0x0001050a 3315b560 rol a0, a0, a1
\ 0x0001050e 8280 ret
EOF
RUN
NAME=toggle_bit_var
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010556
pdf
EOF
EXPECT=<<EOF
/ sym.toggle_bit_var(int64_t arg2, int64_t arg6);
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg6 @ a5
| 0x00010556 8547 li a5, 1
| 0x00010558 bb97b700 sllw a5, a5, a1 ; arg6
| 0x0001055c 3d8d xor a0, a0, a5
\ 0x0001055e 8280 ret
EOF
RUN
NAME=clear_bit_7
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010538
pdf
EOF
EXPECT=<<EOF
/ sym.clear_bit_7(int64_t arg1);
| ; arg int64_t arg1 @ a0
| 0x00010538 1375f5f7 andi a0, a0, -0x81 ; arg1
\ 0x0001053c 8280 ret
EOF
RUN
NAME=bswap32_alt
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010586
pdf
EOF
EXPECT=<<EOF
/ sym.bswap32_alt();
| 0x00010586 1355856b rev8 a0, a0
| 0x0001058a 0195 srai a0, a0, 0x20
\ 0x0001058c 8280 ret
EOF
RUN
NAME=extract_bit_45
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010572
pdf
EOF
EXPECT=<<EOF
/ sym.extract_bit_45(int64_t arg1);
| ; arg int64_t arg1 @ a0
| 0x00010572 1355d54a bexti a0, a0, 0x2d ; arg1
\ 0x00010576 8280 ret
EOF
RUN
NAME=network_to_host
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000105ca
pdf
EOF
EXPECT=<<EOF
/ sym.network_to_host();
| 0x000105ca 1355856b rev8 a0, a0
| 0x000105ce 0195 srai a0, a0, 0x20
\ 0x000105d0 8280 ret
EOF
RUN
NAME=toggle_bit_3
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010550
pdf
EOF
EXPECT=<<EOF
/ sym.toggle_bit_3();
| 0x00010550 13458500 xori a0, a0, 8
\ 0x00010554 8280 ret
EOF
RUN
NAME=clear_bit_var
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001053e
pdf
EOF
EXPECT=<<EOF
/ sym.clear_bit_var(int64_t arg2, int64_t arg6);
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg6 @ a5
| 0x0001053e 8547 li a5, 1
| 0x00010540 bb97b700 sllw a5, a5, a1 ; arg6
| 0x00010544 3375f540 andn a0, a0, a5
\ 0x00010548 8280 ret
EOF
RUN
NAME=swap_endian_64
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010580
pdf
EOF
EXPECT=<<EOF
/ sym.swap_endian_64();
| 0x00010580 1355856b rev8 a0, a0
\ 0x00010584 8280 ret
EOF
RUN
NAME=set_bit_5
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010522
pdf
EOF
EXPECT=<<EOF
/ sym.set_bit_5(int64_t arg1);
| ; arg int64_t arg1 @ a0
| 0x00010522 13650502 ori a0, a0, 0x20 ; arg1
\ 0x00010526 8280 ret
EOF
RUN
NAME=toggle_bit_35
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010560
pdf
EOF
EXPECT=<<EOF
/ sym.toggle_bit_35();
| 0x00010560 1315356a binvi a0, a0, 0x23
\ 0x00010564 8280 ret
EOF
RUN
NAME=hash_rotate
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000105da
pdf
EOF
EXPECT=<<EOF
/ sym.hash_rotate();
| 0x000105da 1b553561 roriw a0, a0, 0x13
| 0x000105de 2d8d xor a0, a0, a1
| 0x000105e0 0125 sext.w a0, a0
\ 0x000105e2 8280 ret
EOF
RUN
NAME=rotate_right_32on64
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010516
pdf
EOF
EXPECT=<<EOF
/ sym.rotate_right_32on64();
| 0x00010516 3b55b560 rorw a0, a0, a1
\ 0x0001051a 8280 ret
EOF
RUN
NAME=rotate_left_8
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000104f2
pdf
EOF
EXPECT=<<EOF
;-- rotate_left_8:
/ loc._xrv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0_zcd1p0_zbb1p0_zbs1p0();
| 0x000104f2 1b558561 roriw a0, a0, 0x18
\ 0x000104f6 8280 ret
EOF
RUN
NAME=enable_device_flag
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000105a4
pdf
EOF
EXPECT=<<EOF
/ sym.enable_device_flag(int64_t arg1, int64_t arg2, int64_t arg6);
| ; arg int64_t arg1 @ a0
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg6 @ a5
| 0x000105a4 1841 lw a4, 0(a0) ; arg1
| 0x000105a6 8547 li a5, 1
| 0x000105a8 bb97b700 sllw a5, a5, a1 ; arg6
| 0x000105ac d98f or a5, a5, a4
| 0x000105ae 1cc1 sw a5, 0(a0) ; arg6
\ 0x000105b0 8280 ret
EOF
RUN
NAME=rotate_right_64
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010510
pdf
EOF
EXPECT=<<EOF
/ sym.rotate_right_64();
| 0x00010510 3355b560 ror a0, a0, a1
\ 0x00010514 8280 ret
EOF
RUN
NAME=rotate_left_var
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000104fe
pdf
EOF
EXPECT=<<EOF
/ sym.rotate_left_var();
| 0x000104fe 3b15b560 rolw a0, a0, a1
\ 0x00010502 8280 ret
EOF
RUN
NAME=clear_multiple_known_bits
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010598
pdf
EOF
EXPECT=<<EOF
/ sym.clear_multiple_known_bits(int64_t arg6);
| ; arg int64_t arg6 @ a5
| 0x00010598 b7f7efff lui a5, 0xffeff
| 0x0001059c 9387f77e addi a5, a5, 0x7ef ; arg6
| 0x000105a0 7d8d and a0, a0, a5
\ 0x000105a2 8280 ret
EOF
RUN
NAME=set_bit_var
FILE=bins/elf/riscv_bitmanip
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010528
pdf
EOF
EXPECT=<<EOF
/ sym.set_bit_var(int64_t arg2, int64_t arg6);
| ; arg int64_t arg2 @ a1
| ; arg int64_t arg6 @ a5
| 0x00010528 8547 li a5, 1
| 0x0001052a bb97b700 sllw a5, a5, a1 ; arg6
| 0x0001052e 5d8d or a0, a0, a5
\ 0x00010530 8280 ret
EOF
RUN
NAME=explicit_cm_push_pop
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00011190
pdf
EOF
EXPECT=<<EOF
;-- section..text:
;-- segment.LOAD1:
;-- explicit_cm_push_pop:
/ loc._x.0();
| 0x00011190 62b8 cm.push {ra, s0-s1}, -0x20 ; [00] -r-x section size 390 named .text
| ;-- $d.1:
| 0x00011192 a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $x.2:
| 0x00011194 2a84 mv s0, a0
| 0x00011196 ae84 mv s1, a1
| 0x00011198 2694 add s0, s0, s1
| 0x0001119a 2285 mv a0, s0
| ;-- $d.3:
| 0x0001119c a2ba cm.pop {ra, s0-s5}, 0x40
| ;-- $x.4:
| 0x0001119e 0125 sext.w a0, a0
\ 0x000111a0 62be cm.popret {ra, s0-s1}, 0x20
EOF
RUN
NAME=cm_push_pop_many_regs
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000111a2
pdf
EOF
EXPECT=<<EOF
/ sym.cm_push_pop_many_regs();
| 0x000111a2 a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $d.5:
| 0x000111a4 b2b8 cm.push {ra, s0-s6}, -0x40
| ;-- $x.6:
| 0x000111a6 2a84 mv s0, a0
| 0x000111a8 ae84 mv s1, a1
| 0x000111aa 3289 mv s2, a2
| 0x000111ac b3099400 add s3, s0, s1
| 0x000111b0 338a2401 add s4, s1, s2
| 0x000111b4 b38a4901 add s5, s3, s4
| 0x000111b8 5685 mv a0, s5
| ;-- $d.7:
| 0x000111ba b2ba cm.pop {ra, s0-s6}, 0x40
| ;-- $x.8:
| 0x000111bc 0125 sext.w a0, a0
\ 0x000111be a2be cm.popret {ra, s0-s5}, 0x40
EOF
RUN
NAME=cm_push_pop_all_saved
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x000111c0
pdf
EOF
EXPECT=<<EOF
/ sym.cm_push_pop_all_saved();
| 0x000111c0 f2b8 cm.push {ra, s0-s11}, -0x70
| ;-- $d.9:
| 0x000111c2 beb8 cm.push {ra, s0-s6}, -0x70
| ;-- $x.10:
| 0x000111c4 2a84 mv s0, a0
| 0x000111c6 93041400 addi s1, s0, 1
| 0x000111ca 13092400 addi s2, s0, 2
| 0x000111ce 93093400 addi s3, s0, 3
| 0x000111d2 130a4400 addi s4, s0, 4
| 0x000111d6 930a5400 addi s5, s0, 5
| 0x000111da 130b6400 addi s6, s0, 6
| 0x000111de 930b7400 addi s7, s0, 7
| 0x000111e2 130c8400 addi s8, s0, 8
| 0x000111e6 930c9400 addi s9, s0, 9
| 0x000111ea 130da400 addi s10, s0, 0xa
| 0x000111ee 930db400 addi s11, s0, 0xb
| 0x000111f2 2694 add s0, s0, s1
| 0x000111f4 4a94 add s0, s0, s2
| 0x000111f6 4e94 add s0, s0, s3
| 0x000111f8 5294 add s0, s0, s4
| 0x000111fa 5694 add s0, s0, s5
| 0x000111fc 5a94 add s0, s0, s6
| 0x000111fe 5e94 add s0, s0, s7
| 0x00011200 6294 add s0, s0, s8
| 0x00011202 6694 add s0, s0, s9
| 0x00011204 6a94 add s0, s0, s10
| 0x00011206 6e94 add s0, s0, s11
| 0x00011208 2285 mv a0, s0
| ;-- $d.11:
| 0x0001120a beba cm.pop {ra, s0-s6}, 0x70
| ;-- $x.12:
| 0x0001120c 0125 sext.w a0, a0
\ 0x0001120e f2be cm.popret {ra, s0-s11}, 0x70
EOF
RUN
NAME=cm_popret_example
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00011210
pdf
EOF
EXPECT=<<EOF
/ sym.cm_popret_example();
| 0x00011210 62b8 cm.push {ra, s0-s1}, -0x20
| 0x00011212 2a86 mv a2, a0
| ;-- $d.13:
| 0x00011214 a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $x.14:
| 0x00011216 3284 mv s0, a2
| 0x00011218 ae84 mv s1, a1
| 0x0001121a 33049402 mul s0, s0, s1
| 0x0001121e 2285 mv a0, s0
| ;-- $d.15:
\ 0x00011220 a2be cm.popret {ra, s0-s5}, 0x40
EOF
RUN
NAME=cm_popretz_example
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00011228
pdf
EOF
EXPECT=<<EOF
/ sym.cm_popretz_example();
| 0x00011228 62b8 cm.push {ra, s0-s1}, -0x20
| ;-- $d.17:
| 0x0001122a a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $x.18:
| 0x0001122c 2a84 mv s0, a0
| 0x0001122e ae84 mv s1, a1
| 0x00011230 04c0 sw s1, 0(s0)
| ;-- $d.19:
\ 0x00011232 a2bc cm.popretz {ra, s0-s5}, 0x40
EOF
RUN
NAME=cm_push_ra_only
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00011236
pdf
EOF
EXPECT=<<EOF
/ sym.cm_push_ra_only(int64_t arg2);
| ; arg int64_t arg2 @ a1
| 0x00011236 aa85 mv a1, a0
| ;-- $d.21:
| 0x00011238 82b8 cm.push {ra, s0-s3}, -0x30
| ;-- $x.22:
| 0x0001123a 13952500 slli a0, a1, 2 ; arg2
| 0x0001123e 2905 addi a0, a0, 0xa
| 0x00011240 aa85 mv a1, a0
| ;-- $d.23:
| 0x00011242 82ba cm.pop {ra, s0-s3}, 0x30
| ;-- $x.24:
| 0x00011244 1b850500 sext.w a0, a1 ; arg2
\ 0x00011248 8280 ret
EOF
RUN
NAME=_start
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001124a
pdf
EOF
EXPECT=<<EOF
;-- _start:
/ entry0();
| 0x0001124a f6b8 cm.push {ra, s0-s11}, -0x80
| 0x0001124c 02c6 sw zero, 0xc(sp)
| 0x0001124e 2945 li a0, 0xa
| 0x00011250 d145 li a1, 0x14
| ;-- $d.25:
| 0x00011252 a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $x.26:
| 0x00011254 2a84 mv s0, a0
| 0x00011256 ae84 mv s1, a1
| 0x00011258 2694 add s0, s0, s1
| 0x0001125a a285 mv a1, s0
| ;-- $d.27:
| 0x0001125c a2ba cm.pop {ra, s0-s5}, 0x40
| ;-- $x.28:
| 0x0001125e 1546 li a2, 5
| 0x00011260 bd46 li a3, 0xf
| ;-- $d.29:
| 0x00011262 b2b8 cm.push {ra, s0-s6}, -0x40
| ;-- $x.30:
| 0x00011264 3284 mv s0, a2
| 0x00011266 aa84 mv s1, a0
| 0x00011268 3689 mv s2, a3
| 0x0001126a b3099400 add s3, s0, s1
| 0x0001126e 338a2401 add s4, s1, s2
| 0x00011272 b38a4901 add s5, s3, s4
| 0x00011276 5686 mv a2, s5
| ;-- $d.31:
| 0x00011278 b2ba cm.pop {ra, s0-s6}, 0x40
| ;-- $x.32:
| 0x0001127a 13054006 li a0, 0x64
| ;-- $d.33:
| 0x0001127e beb8 cm.push {ra, s0-s6}, -0x70
| ;-- $x.34:
| 0x00011280 2a84 mv s0, a0
| 0x00011282 93041400 addi s1, s0, 1
| 0x00011286 13092400 addi s2, s0, 2
| 0x0001128a 93093400 addi s3, s0, 3
| 0x0001128e 130a4400 addi s4, s0, 4
| 0x00011292 930a5400 addi s5, s0, 5
| 0x00011296 130b6400 addi s6, s0, 6
| 0x0001129a 930b7400 addi s7, s0, 7
| 0x0001129e 130c8400 addi s8, s0, 8
| 0x000112a2 930c9400 addi s9, s0, 9
| 0x000112a6 130da400 addi s10, s0, 0xa
| 0x000112aa 930db400 addi s11, s0, 0xb
| 0x000112ae 2694 add s0, s0, s1
| 0x000112b0 4a94 add s0, s0, s2
| 0x000112b2 4e94 add s0, s0, s3
| 0x000112b4 5294 add s0, s0, s4
| 0x000112b6 5694 add s0, s0, s5
| 0x000112b8 5a94 add s0, s0, s6
| 0x000112ba 5e94 add s0, s0, s7
| 0x000112bc 6294 add s0, s0, s8
| 0x000112be 6694 add s0, s0, s9
| 0x000112c0 6a94 add s0, s0, s10
| 0x000112c2 6e94 add s0, s0, s11
| 0x000112c4 a286 mv a3, s0
| ;-- $d.35:
| 0x000112c6 beba cm.pop {ra, s0-s6}, 0x70
| ;-- $x.36:
| 0x000112c8 0d47 li a4, 3
| 0x000112ca 9147 li a5, 4
| ;-- $d.37:
| 0x000112cc a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $x.38:
| 0x000112ce 3a84 mv s0, a4
| 0x000112d0 be84 mv s1, a5
| 0x000112d2 33049402 mul s0, s0, s1
| 0x000112d6 2285 mv a0, s0
| ;-- $d.39:
\ 0x000112d8 a2be cm.popret {ra, s0-s5}, 0x40
EOF
RUN
NAME=_start
FILE=bins/elf/riscv_compressed_push_pop
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001124a
pdf
EOF
EXPECT=<<EOF
;-- _start:
/ entry0();
| 0x0001124a f6b8 cm.push {ra, s0-s11}, -0x80
| 0x0001124c 02c6 sw zero, 0xc(sp)
| 0x0001124e 2945 li a0, 0xa
| 0x00011250 d145 li a1, 0x14
| ;-- $d.25:
| 0x00011252 a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $x.26:
| 0x00011254 2a84 mv s0, a0
| 0x00011256 ae84 mv s1, a1
| 0x00011258 2694 add s0, s0, s1
| 0x0001125a a285 mv a1, s0
| ;-- $d.27:
| 0x0001125c a2ba cm.pop {ra, s0-s5}, 0x40
| ;-- $x.28:
| 0x0001125e 1546 li a2, 5
| 0x00011260 bd46 li a3, 0xf
| ;-- $d.29:
| 0x00011262 b2b8 cm.push {ra, s0-s6}, -0x40
| ;-- $x.30:
| 0x00011264 3284 mv s0, a2
| 0x00011266 aa84 mv s1, a0
| 0x00011268 3689 mv s2, a3
| 0x0001126a b3099400 add s3, s0, s1
| 0x0001126e 338a2401 add s4, s1, s2
| 0x00011272 b38a4901 add s5, s3, s4
| 0x00011276 5686 mv a2, s5
| ;-- $d.31:
| 0x00011278 b2ba cm.pop {ra, s0-s6}, 0x40
| ;-- $x.32:
| 0x0001127a 13054006 li a0, 0x64
| ;-- $d.33:
| 0x0001127e beb8 cm.push {ra, s0-s6}, -0x70
| ;-- $x.34:
| 0x00011280 2a84 mv s0, a0
| 0x00011282 93041400 addi s1, s0, 1
| 0x00011286 13092400 addi s2, s0, 2
| 0x0001128a 93093400 addi s3, s0, 3
| 0x0001128e 130a4400 addi s4, s0, 4
| 0x00011292 930a5400 addi s5, s0, 5
| 0x00011296 130b6400 addi s6, s0, 6
| 0x0001129a 930b7400 addi s7, s0, 7
| 0x0001129e 130c8400 addi s8, s0, 8
| 0x000112a2 930c9400 addi s9, s0, 9
| 0x000112a6 130da400 addi s10, s0, 0xa
| 0x000112aa 930db400 addi s11, s0, 0xb
| 0x000112ae 2694 add s0, s0, s1
| 0x000112b0 4a94 add s0, s0, s2
| 0x000112b2 4e94 add s0, s0, s3
| 0x000112b4 5294 add s0, s0, s4
| 0x000112b6 5694 add s0, s0, s5
| 0x000112b8 5a94 add s0, s0, s6
| 0x000112ba 5e94 add s0, s0, s7
| 0x000112bc 6294 add s0, s0, s8
| 0x000112be 6694 add s0, s0, s9
| 0x000112c0 6a94 add s0, s0, s10
| 0x000112c2 6e94 add s0, s0, s11
| 0x000112c4 a286 mv a3, s0
| ;-- $d.35:
| 0x000112c6 beba cm.pop {ra, s0-s6}, 0x70
| ;-- $x.36:
| 0x000112c8 0d47 li a4, 3
| 0x000112ca 9147 li a5, 4
| ;-- $d.37:
| 0x000112cc a2b8 cm.push {ra, s0-s5}, -0x40
| ;-- $x.38:
| 0x000112ce 3a84 mv s0, a4
| 0x000112d0 be84 mv s1, a5
| 0x000112d2 33049402 mul s0, s0, s1
| 0x000112d6 2285 mv a0, s0
| ;-- $d.39:
\ 0x000112d8 a2be cm.popret {ra, s0-s5}, 0x40
EOF
RUN
NAME=fround_h
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010630
pdf
EOF
EXPECT=<<EOF
/ sym.fround_h();
| 0x00010630 53754544 fround.h fa0, fa0
\ 0x00010634 67800000 ret
EOF
RUN
NAME=fround_h_attr
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010630
pdf
EOF
EXPECT=<<EOF
/ sym.fround_h();
| 0x00010630 53754544 fround.h fa0, fa0
\ 0x00010634 67800000 ret
EOF
RUN
NAME=fclass_d
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010508
pdf
EOF
EXPECT=<<EOF
/ sym.fclass_d(int64_t arg5, int64_t arg6);
| ; arg int64_t arg5 @ a4
| ; arg int64_t arg6 @ a5
| 0x00010508 d327a522 fabs.d fa5, fa0
| 0x0001050c d30705e2 fmv.x.d a5, fa0
| 0x00010510 53a7f7a2 feq.d a4, fa5, fa5
| ,=< 0x00010514 630a0706 beqz a4, 0x10588
| | 0x00010518 37270100 lui a4, 0x12 ; 0x12000
| | ; reloc.__libc_start_main
| | 0x0001051c 07378700 fld fa4, 8(a4) ; arg5
| | 0x00010520 93d6f703 srli a3, a5, 0x3f ; arg6
| | 0x00010524 5357f7a2 fltq.d a4, fa4, fa5
| ,==< 0x00010528 63160702 bnez a4, 0x10554
| || 0x0001052c 538710f2 fli.d fa4, min
| || 0x00010530 5307f7a2 fle.d a4, fa4, fa5
| ,===< 0x00010534 63180702 bnez a4, 0x10564
| ||| 0x00010538 d30700f2 fmv.d.x fa5, zero
| ||| 0x0001053c d327f5a2 feq.d a5, fa0, fa5
| ,====< 0x00010540 638c0702 beqz a5, 0x10578
| |||| 0x00010544 13050001 li a0, 0x10
| ,=====< 0x00010548 63820602 beqz a3, 0x1056c
| ||||| 0x0001054c 13058000 li a0, 8
| ||||| 0x00010550 67800000 ret
| |||`--> 0x00010554 13050008 li a0, 0x80
| |||,==< 0x00010558 638a0600 beqz a3, 0x1056c
| ||||| 0x0001055c 13051000 li a0, 1
| ||||| 0x00010560 67800000 ret
| ||`---> 0x00010564 13050004 li a0, 0x40
| ||,===< 0x00010568 63940600 bnez a3, 0x10570
| .`--`--> 0x0001056c 67800000 ret
| : |`---> 0x00010570 13052000 li a0, 2
| : | | 0x00010574 67800000 ret
| : `----> 0x00010578 13050002 li a0, 0x20
| `======< 0x0001057c e38806fe beqz a3, 0x1056c
| | 0x00010580 13054000 li a0, 4
| | 0x00010584 67800000 ret
| `-> 0x00010588 13050030 li a0, 0x300
\ 0x0001058c 67800000 ret
EOF
RUN
NAME=fclass_h
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010590
pdf
EOF
EXPECT=<<EOF
/ sym.fclass_h(int64_t arg5, int64_t arg6);
| ; arg int64_t arg5 @ a4
| ; arg int64_t arg6 @ a5
| 0x00010590 d3072540 fcvt.s.h fa5, fa0
| 0x00010594 538707e0 fmv.x.w a4, fa5
| 0x00010598 d3a7f720 fabs.s fa5, fa5
| 0x0001059c d3a7f7a0 feq.s a5, fa5, fa5
| ,=< 0x000105a0 63840704 beqz a5, 0x105e8
| | 0x000105a4 07a70181 flw fa4, -0x7f0(gp)
| | 0x000105a8 b7070080 lui a5, 0x80000
| | 0x000105ac b3f7e700 and a5, a5, a4 ; arg6
| | 0x000105b0 d356f7a0 fltq.s a3, fa4, fa5
| | 0x000105b4 9b870700 sext.w a5, a5 ; arg6
| ,==< 0x000105b8 63900602 bnez a3, 0x105d8
| || 0x000105bc 538710f0 fli.s fa4, min
| || 0x000105c0 d306f7a0 fle.s a3, fa4, fa5
| ,===< 0x000105c4 63860602 beqz a3, 0x105f0
| ||| 0x000105c8 13050004 li a0, 0x40
| ,====< 0x000105cc 63800702 beqz a5, 0x105ec
| |||| 0x000105d0 13052000 li a0, 2
| |||| 0x000105d4 67800000 ret
| ||`--> 0x000105d8 13050008 li a0, 0x80
| ||,==< 0x000105dc 63880700 beqz a5, 0x105ec
| |||| 0x000105e0 13051000 li a0, 1
| |||| 0x000105e4 67800000 ret
| |||`-> 0x000105e8 13050030 li a0, 0x300
| .`-`.-> 0x000105ec 67800000 ret
| : `---> 0x000105f0 d30700f0 fmv.w.x fa5, zero
| : : 0x000105f4 530707f0 fmv.w.x fa4, a4
| : : 0x000105f8 5327f7a0 feq.s a4, fa4, fa5
| : ,==< 0x000105fc 630a0700 beqz a4, 0x10610
| : |: 0x00010600 13050001 li a0, 0x10
| `=====< 0x00010604 e38407fe beqz a5, 0x105ec
| |: 0x00010608 13058000 li a0, 8
| |: 0x0001060c 67800000 ret
| `--> 0x00010610 13050002 li a0, 0x20
| `=< 0x00010614 e38c07fc beqz a5, 0x105ec
| 0x00010618 13054000 li a0, 4
\ 0x0001061c 67800000 ret
EOF
RUN
NAME=fround_d_attr
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010658
pdf
EOF
EXPECT=<<EOF
/ sym.fround_d_attr();
| 0x00010658 53754542 fround.d fa0, fa0
\ 0x0001065c 67800000 ret
EOF
RUN
NAME=froundnx_s
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010638
pdf
EOF
EXPECT=<<EOF
/ sym.froundnx_s();
| 0x00010638 53755540 froundnx.s fa0, fa0
\ 0x0001063c 67800000 ret
EOF
RUN
NAME=froundnx_s_attr
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010660
pdf
EOF
EXPECT=<<EOF
/ sym.froundnx_s_attr();
| 0x00010660 53755540 froundnx.s fa0, fa0
\ 0x00010664 67800000 ret
EOF
RUN
NAME=fclass_s
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x0001047c
pdf
EOF
EXPECT=<<EOF
;-- fclass_s:
/ loc._xrv64i2p1_m2p0_a2p1_f2p2_d2p2_zicsr2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zfa1p0_zfh1p0_zfhmin1p0(int64_t arg5, int64_t arg6);
| ; arg int64_t arg5 @ a4
| ; arg int64_t arg6 @ a5
| 0x0001047c d327a520 fabs.s fa5, fa0
| 0x00010480 530705e0 fmv.x.w a4, fa0
| 0x00010484 d3a7f7a0 feq.s a5, fa5, fa5
| ,=< 0x00010488 638c0706 beqz a5, 0x10500
| | 0x0001048c 07a70181 flw fa4, -0x7f0(gp)
| | 0x00010490 b7070080 lui a5, 0x80000
| | 0x00010494 b3f7e700 and a5, a5, a4 ; arg6
| | 0x00010498 d356f7a0 fltq.s a3, fa4, fa5
| | 0x0001049c 9b870700 sext.w a5, a5 ; arg6
| ,==< 0x000104a0 63960602 bnez a3, 0x104cc
| || 0x000104a4 538710f0 fli.s fa4, min
| || 0x000104a8 d306f7a0 fle.s a3, fa4, fa5
| ,===< 0x000104ac 63980602 bnez a3, 0x104dc
| ||| 0x000104b0 d30700f0 fmv.w.x fa5, zero
| ||| 0x000104b4 5327f5a0 feq.s a4, fa0, fa5
| ,====< 0x000104b8 630c0702 beqz a4, 0x104f0
| |||| 0x000104bc 13050001 li a0, 0x10
| ,=====< 0x000104c0 63820702 beqz a5, 0x104e4
| ||||| 0x000104c4 13058000 li a0, 8
| ||||| 0x000104c8 67800000 ret
| |||`--> 0x000104cc 13050008 li a0, 0x80
| |||,==< 0x000104d0 638a0700 beqz a5, 0x104e4
| ||||| 0x000104d4 13051000 li a0, 1
| ||||| 0x000104d8 67800000 ret
| ||`---> 0x000104dc 13050004 li a0, 0x40
| ||,===< 0x000104e0 63940700 bnez a5, 0x104e8
| .`--`--> 0x000104e4 67800000 ret
| : |`---> 0x000104e8 13052000 li a0, 2
| : | | 0x000104ec 67800000 ret
| : `----> 0x000104f0 13050002 li a0, 0x20
| `======< 0x000104f4 e38807fe beqz a5, 0x104e4
| | 0x000104f8 13054000 li a0, 4
| | 0x000104fc 67800000 ret
| `-> 0x00010500 13050030 li a0, 0x300
\ 0x00010504 67800000 ret
EOF
RUN
NAME=fround_s
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010620
pdf
EOF
EXPECT=<<EOF
/ sym.fround_s();
| 0x00010620 53754540 fround.s fa0, fa0
\ 0x00010624 67800000 ret
EOF
RUN
NAME=fround_s_attr
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010650
pdf
EOF
EXPECT=<<EOF
/ sym.fround_s_attr();
| 0x00010650 53754540 fround.s fa0, fa0
\ 0x00010654 67800000 ret
EOF
RUN
NAME=test instrs
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010670
pdf
EOF
EXPECT=<<EOF
; CALL XREF from main @ 0x103d8
/ sym.test_all_instructions();
| 0x00010670 07a74181 flw fa4, -0x7ec(gp)
| 0x00010674 87b78180 fld fa5, -0x7f8(gp)
| 0x00010678 130101fb addi sp, sp, -0x50
| 0x0001067c 87968181 flh fa3, -0x7e8(gp)
| 0x00010680 93070004 li a5, 0x40
| 0x00010684 233cf100 sd a5, 0x18(sp)
| 0x00010688 d3754740 fround.s fa1, fa4
| 0x0001068c 2330f102 sd a5, 0x20(sp)
| 0x00010690 53f64742 fround.d fa2, fa5
| 0x00010694 2334f102 sd a5, 0x28(sp)
| 0x00010698 53f54644 fround.h fa0, fa3
| 0x0001069c 2724b100 fsw fa1, 8(sp)
| 0x000106a0 53775740 froundnx.s fa4, fa4
| 0x000106a4 2738c102 fsd fa2, 0x30(sp)
| 0x000106a8 d3f75742 froundnx.d fa5, fa5
| 0x000106ac 2712a100 fsh fa0, 4(sp)
| 0x000106b0 d3f65644 froundnx.h fa3, fa3
| 0x000106b4 2726e100 fsw fa4, 0xc(sp)
| 0x000106b8 273cf102 fsd fa5, 0x38(sp)
| 0x000106bc 2713d100 fsh fa3, 6(sp)
| 0x000106c0 2728b100 fsw fa1, 0x10(sp)
| 0x000106c4 2730c104 fsd fa2, 0x40(sp)
| 0x000106c8 272ae100 fsw fa4, 0x14(sp)
| 0x000106cc 2734f104 fsd fa5, 0x48(sp)
| 0x000106d0 13010105 addi sp, sp, 0x50
\ 0x000106d4 67800000 ret
EOF
RUN
NAME=froundnx_h
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010648
pdf
EOF
EXPECT=<<EOF
/ sym.froundnx_h();
| 0x00010648 53755544 froundnx.h fa0, fa0
\ 0x0001064c 67800000 ret
EOF
RUN
NAME=froundnx_d
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010640
pdf
EOF
EXPECT=<<EOF
/ sym.froundnx_d();
| 0x00010640 53755542 froundnx.d fa0, fa0
\ 0x00010644 67800000 ret
EOF
RUN
NAME=froundnx_d_attr
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010668
pdf
EOF
EXPECT=<<EOF
/ sym.froundnx_d_attr();
| 0x00010668 53755542 froundnx.d fa0, fa0
\ 0x0001066c 67800000 ret
EOF
RUN
NAME=fround_d
FILE=bins/elf/riscv_float_rounding
CMDS=<<EOF
e asm.bytes=true
aaa
s 0x00010628
pdf
EOF
EXPECT=<<EOF
/ sym.fround_d();
| 0x00010628 53754542 fround.d fa0, fa0
\ 0x0001062c 67800000 ret
EOF
RUN
NAME=COP Search by substring
FILE=bins/elf/riscv_crypto_64
CMDS=<<EOF
aaa
e asm.bytes=true
/C/ jal
EOF
EXPECT=<<EOF
0x000104a8 83b28200 ld t0, 8(t0)
0x000104ac 67000e00 jr t3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 20
0x000104aa 8200 c.slli64 ra
0x000104ac 67000e00 jr t3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 18
0x000104ac 67000e00 jr t3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 16
0x000104ae 0e00 c.slli zero, 3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 14
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 12
0x000104b2 0000 unimp
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 10
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 8
0x000104b6 0eb5 fsd ft3, 0xa8(sp)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 6
0x000104b8 67030e00 jalr t1, t3
Gadget size: 4
0x000104be 0000 unimp
0x000104c0 173e0000 auipc t3, 3
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 14
0x000104c0 173e0000 auipc t3, 3
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 12
0x000104c2 0000 unimp
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 10
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 8
0x000104c6 8eb4 fsd ft3, 0x68(sp)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 6
0x000104ce 0000 unimp
0x000104d0 173e0000 auipc t3, 3
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 14
0x000104d0 173e0000 auipc t3, 3
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 12
0x000104d2 0000 unimp
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 10
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 8
0x000104d6 0eb4 fsd ft3, 0x28(sp)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 6
0x000104de 0000 unimp
0x000104e0 173e0000 auipc t3, 3
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 14
0x000104e0 173e0000 auipc t3, 3
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 12
0x000104e2 0000 unimp
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 10
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 8
0x000104e6 8eb3 fsd ft3, 0x1e0(sp)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 6
0x00010578 e7024101 jalr t0, 0x14(sp)
Gadget size: 4
EOF
RUN
NAME=COP Search by regex
FILE=bins/elf/riscv_crypto_64
CMDS=<<EOF
aaa
e asm.bytes=true
/C/ "jalr.*t1.*"
echo ----------------------------
/C/ "jalr.*sp.*"
EOF
EXPECT=<<EOF
0x000104a8 83b28200 ld t0, 8(t0)
0x000104ac 67000e00 jr t3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 20
0x000104aa 8200 c.slli64 ra
0x000104ac 67000e00 jr t3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 18
0x000104ac 67000e00 jr t3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 16
0x000104ae 0e00 c.slli zero, 3
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 14
0x000104b0 173e0000 auipc t3, 3
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 12
0x000104b2 0000 unimp
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 10
0x000104b4 033e0eb5 ld t3, -0x4b0(t3)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 8
0x000104b6 0eb5 fsd ft3, 0xa8(sp)
0x000104b8 67030e00 jalr t1, t3
Gadget size: 6
0x000104b8 67030e00 jalr t1, t3
Gadget size: 4
0x000104be 0000 unimp
0x000104c0 173e0000 auipc t3, 3
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 14
0x000104c0 173e0000 auipc t3, 3
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 12
0x000104c2 0000 unimp
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 10
0x000104c4 033e8eb4 ld t3, -0x4b8(t3)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 8
0x000104c6 8eb4 fsd ft3, 0x68(sp)
0x000104c8 67030e00 jalr t1, t3
Gadget size: 6
0x000104ce 0000 unimp
0x000104d0 173e0000 auipc t3, 3
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 14
0x000104d0 173e0000 auipc t3, 3
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 12
0x000104d2 0000 unimp
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 10
0x000104d4 033e0eb4 ld t3, -0x4c0(t3)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 8
0x000104d6 0eb4 fsd ft3, 0x28(sp)
0x000104d8 67030e00 jalr t1, t3
Gadget size: 6
0x000104de 0000 unimp
0x000104e0 173e0000 auipc t3, 3
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 14
0x000104e0 173e0000 auipc t3, 3
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 12
0x000104e2 0000 unimp
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 10
0x000104e4 033e8eb3 ld t3, -0x4c8(t3)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 8
0x000104e6 8eb3 fsd ft3, 0x1e0(sp)
0x000104e8 67030e00 jalr t1, t3
Gadget size: 6
----------------------------
0x00010578 e7024101 jalr t0, 0x14(sp)
Gadget size: 4
EOF
RUN
NAME=data xrefs outside functions marked as data
FILE=bins/elf/analysis/guess-number-riscv64
CMDS=<<EOF
aaa
s 0x22000
pd 1
EOF
EXPECT=<<EOF
; XREFS(112)
0x00022000 hex length=256 delta=0
0x00022000 24ae 0100 24ae 0100 b8a6 0100 0000 0000 $...$...........
0x00022010 2020 2020 2020 2020 2020 2020 2020 2020
0x00022020 3030 3030 3030 3030 3030 3030 3030 3030 0000000000000000
0x00022030 fcc9 0100 7ccb 0100 7ccb 0100 10ca 0100 ....|...|.......
0x00022040 7ccb 0100 7ccb 0100 7ccb 0100 7ccb 0100 |...|...|...|...
0x00022050 7ccb 0100 7ccb 0100 9cc5 0100 50c8 0100 |...|.......P...
0x00022060 7ccb 0100 b4c5 0100 38cb 0100 7ccb 0100 |.......8...|...
0x00022070 60c8 0100 6cc8 0100 6cc8 0100 6cc8 0100 `...l...l...l...
0x00022080 6cc8 0100 6cc8 0100 6cc8 0100 6cc8 0100 l...l...l...l...
0x00022090 6cc8 0100 6cc8 0100 7ccb 0100 7ccb 0100 l...l...|...|...
0x000220a0 7ccb 0100 7ccb 0100 7ccb 0100 7ccb 0100 |...|...|...|...
0x000220b0 7ccb 0100 7ccb 0100 7ccb 0100 7ccb 0100 |...|...|...|...
0x000220c0 98c8 0100 7ccb 0100 7ccb 0100 7ccb 0100 ....|...|...|...
0x000220d0 7ccb 0100 7ccb 0100 7ccb 0100 7ccb 0100 |...|...|...|...
0x000220e0 7ccb 0100 7ccb 0100 7ccb 0100 fcc8 0100 |...|...|.......
0x000220f0 7ccb 0100 7ccb 0100 7ccb 0100 7ccb 0100 |...|...|...|...
EOF
RUN