qemu/tests/tcg/xtensa/test_rem.S
<<
>>
Prefs
   1#include "macros.inc"
   2
   3test_suite rem
   4
   5#if XCHAL_HAVE_DIV32
   6
   7test 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
  18test_end
  19
  20test 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
  31test_end
  32
  33test 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
  44test_end
  45
  46test 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
  57test_end
  58
  59test remu_exc
  60    set_vector kernel, 2f
  61    movi    a2, 0xf7315a5a
  62    movi    a4, 0x00000000
  631:
  64    remu    a5, a2, a4
  65    test_fail
  662:
  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
  72test_end
  73
  74test 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
  85test_end
  86
  87test 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
  98test_end
  99
 100test 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
 111test_end
 112
 113test 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
 124test_end
 125
 126test rems_over
 127    movi    a2, 0x80000000
 128    movi    a4, 0xffffffff
 129    movi    a6, 0
 130    rems    a5, a2, a4
 131    assert  eq, a5, a6
 132test_end
 133
 134test rems_exc
 135    set_vector kernel, 2f
 136    movi    a2, 0xf7315a5a
 137    movi    a4, 0x00000000
 1381:
 139    rems    a5, a2, a4
 140    test_fail
 1412:
 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
 147test_end
 148
 149#endif
 150
 151test_suite_end
 152