* 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
4201 lines
203 KiB
Text
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
|