qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

test_rem.S (2900B)


      1 #include "macros.inc"
      2 
      3 test_suite rem
      4 
      5 #if XCHAL_HAVE_DIV32
      6 
      7 test remu_pp
      8     movi    a2, 0x5a5a137f
      9     mov     a3, a2
     10     movi    a4, 0x137f5a5a
     11     movi    a6, 0x0c5caa17
     12     remu    a5, a2, a4
     13     assert  eq, a5, a6
     14     remu    a2, a2, a4
     15     assert  eq, a2, a6
     16     remu    a4, a3, a4
     17     assert  eq, a4, a6
     18 test_end
     19 
     20 test remu_np
     21     movi    a2, 0xa5a5137f
     22     mov     a3, a2
     23     movi    a4, 0x137f5a5a
     24     movi    a6, 0x9aa40af
     25     remu    a5, a2, a4
     26     assert  eq, a5, a6
     27     remu    a2, a2, a4
     28     assert  eq, a2, a6
     29     remu    a4, a3, a4
     30     assert  eq, a4, a6
     31 test_end
     32 
     33 test remu_pn
     34     movi    a2, 0x5a5a137f
     35     mov     a3, a2
     36     movi    a4, 0xf7315a5a
     37     movi    a6, 0x5a5a137f
     38     remu    a5, a2, a4
     39     assert  eq, a5, a6
     40     remu    a2, a2, a4
     41     assert  eq, a2, a6
     42     remu    a4, a3, a4
     43     assert  eq, a4, a6
     44 test_end
     45 
     46 test remu_nn
     47     movi    a2, 0xf7315a5a
     48     mov     a3, a2
     49     movi    a4, 0xa5a5137f
     50     movi    a6, 0x518c46db
     51     remu    a5, a2, a4
     52     assert  eq, a5, a6
     53     remu    a2, a2, a4
     54     assert  eq, a2, a6
     55     remu    a4, a3, a4
     56     assert  eq, a4, a6
     57 test_end
     58 
     59 test remu_exc
     60     set_vector kernel, 2f
     61     movi    a2, 0xf7315a5a
     62     movi    a4, 0x00000000
     63 1:
     64     remu    a5, a2, a4
     65     test_fail
     66 2:
     67     rsr     a2, exccause
     68     assert  eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
     69     rsr     a2, epc1
     70     movi    a3, 1b
     71     assert  eq, a2, a3
     72 test_end
     73 
     74 test rems_pp
     75     movi    a2, 0x5a5a137f
     76     mov     a3, a2
     77     movi    a4, 0x137f5a5a
     78     movi    a6, 0x0c5caa17
     79     rems    a5, a2, a4
     80     assert  eq, a5, a6
     81     rems    a2, a2, a4
     82     assert  eq, a2, a6
     83     rems    a4, a3, a4
     84     assert  eq, a4, a6
     85 test_end
     86 
     87 test rems_np
     88     movi    a2, 0xa5a5137f
     89     mov     a3, a2
     90     movi    a4, 0x137f5a5a
     91     movi    a6, 0xf3a27ce7
     92     rems    a5, a2, a4
     93     assert  eq, a5, a6
     94     rems    a2, a2, a4
     95     assert  eq, a2, a6
     96     rems    a4, a3, a4
     97     assert  eq, a4, a6
     98 test_end
     99 
    100 test rems_pn
    101     movi    a2, 0x5a5a137f
    102     mov     a3, a2
    103     movi    a4, 0xf7315a5a
    104     movi    a6, 0x02479b03
    105     rems    a5, a2, a4
    106     assert  eq, a5, a6
    107     rems    a2, a2, a4
    108     assert  eq, a2, a6
    109     rems    a4, a3, a4
    110     assert  eq, a4, a6
    111 test_end
    112 
    113 test rems_nn
    114     movi    a2, 0xf7315a5a
    115     mov     a3, a2
    116     movi    a4, 0xa5a5137f
    117     movi    a6, 0xf7315a5a
    118     rems    a5, a2, a4
    119     assert  eq, a5, a6
    120     rems    a2, a2, a4
    121     assert  eq, a2, a6
    122     rems    a4, a3, a4
    123     assert  eq, a4, a6
    124 test_end
    125 
    126 test rems_over
    127     movi    a2, 0x80000000
    128     movi    a4, 0xffffffff
    129     movi    a6, 0
    130     rems    a5, a2, a4
    131     assert  eq, a5, a6
    132 test_end
    133 
    134 test rems_exc
    135     set_vector kernel, 2f
    136     movi    a2, 0xf7315a5a
    137     movi    a4, 0x00000000
    138 1:
    139     rems    a5, a2, a4
    140     test_fail
    141 2:
    142     rsr     a2, exccause
    143     assert  eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
    144     rsr     a2, epc1
    145     movi    a3, 1b
    146     assert  eq, a2, a3
    147 test_end
    148 
    149 #endif
    150 
    151 test_suite_end