qemu

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

test_quo.S (2864B)


      1 #include "macros.inc"
      2 
      3 test_suite quo
      4 
      5 #if XCHAL_HAVE_DIV32
      6 
      7 test quou_pp
      8     movi    a2, 0x5a5a137f
      9     mov     a3, a2
     10     movi    a4, 0x137f5a5a
     11     movi    a6, 0x4
     12     quou    a5, a2, a4
     13     assert  eq, a5, a6
     14     quou    a2, a2, a4
     15     assert  eq, a2, a6
     16     quou    a4, a3, a4
     17     assert  eq, a4, a6
     18 test_end
     19 
     20 test quou_np
     21     movi    a2, 0xa5a5137f
     22     mov     a3, a2
     23     movi    a4, 0x137f5a5a
     24     movi    a6, 0x8
     25     quou    a5, a2, a4
     26     assert  eq, a5, a6
     27     quou    a2, a2, a4
     28     assert  eq, a2, a6
     29     quou    a4, a3, a4
     30     assert  eq, a4, a6
     31 test_end
     32 
     33 test quou_pn
     34     movi    a2, 0x5a5a137f
     35     mov     a3, a2
     36     movi    a4, 0xf7315a5a
     37     movi    a6, 0
     38     quou    a5, a2, a4
     39     assert  eq, a5, a6
     40     quou    a2, a2, a4
     41     assert  eq, a2, a6
     42     quou    a4, a3, a4
     43     assert  eq, a4, a6
     44 test_end
     45 
     46 test quou_nn
     47     movi    a2, 0xf7315a5a
     48     mov     a3, a2
     49     movi    a4, 0xa5a5137f
     50     movi    a6, 0x1
     51     quou    a5, a2, a4
     52     assert  eq, a5, a6
     53     quou    a2, a2, a4
     54     assert  eq, a2, a6
     55     quou    a4, a3, a4
     56     assert  eq, a4, a6
     57 test_end
     58 
     59 test quou_exc
     60     set_vector kernel, 2f
     61     movi    a2, 0xf7315a5a
     62     movi    a4, 0x00000000
     63 1:
     64     quou    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 quos_pp
     75     movi    a2, 0x5a5a137f
     76     mov     a3, a2
     77     movi    a4, 0x137f5a5a
     78     movi    a6, 0x4
     79     quos    a5, a2, a4
     80     assert  eq, a5, a6
     81     quos    a2, a2, a4
     82     assert  eq, a2, a6
     83     quos    a4, a3, a4
     84     assert  eq, a4, a6
     85 test_end
     86 
     87 test quos_np
     88     movi    a2, 0xa5a5137f
     89     mov     a3, a2
     90     movi    a4, 0x137f5a5a
     91     movi    a6, 0xfffffffc
     92     quos    a5, a2, a4
     93     assert  eq, a5, a6
     94     quos    a2, a2, a4
     95     assert  eq, a2, a6
     96     quos    a4, a3, a4
     97     assert  eq, a4, a6
     98 test_end
     99 
    100 test quos_pn
    101     movi    a2, 0x5a5a137f
    102     mov     a3, a2
    103     movi    a4, 0xf7315a5a
    104     movi    a6, 0xfffffff6
    105     quos    a5, a2, a4
    106     assert  eq, a5, a6
    107     quos    a2, a2, a4
    108     assert  eq, a2, a6
    109     quos    a4, a3, a4
    110     assert  eq, a4, a6
    111 test_end
    112 
    113 test quos_nn
    114     movi    a2, 0xf7315a5a
    115     mov     a3, a2
    116     movi    a4, 0xa5a5137f
    117     movi    a6, 0
    118     quos    a5, a2, a4
    119     assert  eq, a5, a6
    120     quos    a2, a2, a4
    121     assert  eq, a2, a6
    122     quos    a4, a3, a4
    123     assert  eq, a4, a6
    124 test_end
    125 
    126 test quos_over
    127     movi    a2, 0x80000000
    128     movi    a4, 0xffffffff
    129     movi    a6, 0x80000000
    130     quos    a5, a2, a4
    131     assert  eq, a5, a6
    132 test_end
    133 
    134 test quos_exc
    135     set_vector kernel, 2f
    136     movi    a2, 0xf7315a5a
    137     movi    a4, 0x00000000
    138 1:
    139     quos    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