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