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