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
