2014-02-10 20:20:52 +04:00
|
|
|
#include "macros.inc"
|
2011-09-06 03:55:57 +04:00
|
|
|
|
|
|
|
test_suite rem
|
|
|
|
|
2019-02-18 17:40:38 +03:00
|
|
|
#if XCHAL_HAVE_DIV32
|
|
|
|
|
2011-09-06 03:55:57 +04:00
|
|
|
test remu_pp
|
|
|
|
movi a2, 0x5a5a137f
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0x137f5a5a
|
|
|
|
movi a6, 0x0c5caa17
|
|
|
|
remu a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
remu a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
remu a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test remu_np
|
|
|
|
movi a2, 0xa5a5137f
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0x137f5a5a
|
|
|
|
movi a6, 0x9aa40af
|
|
|
|
remu a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
remu a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
remu a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test remu_pn
|
|
|
|
movi a2, 0x5a5a137f
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0xf7315a5a
|
|
|
|
movi a6, 0x5a5a137f
|
|
|
|
remu a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
remu a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
remu a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test remu_nn
|
|
|
|
movi a2, 0xf7315a5a
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0xa5a5137f
|
|
|
|
movi a6, 0x518c46db
|
|
|
|
remu a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
remu a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
remu a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test remu_exc
|
|
|
|
set_vector kernel, 2f
|
|
|
|
movi a2, 0xf7315a5a
|
|
|
|
movi a4, 0x00000000
|
|
|
|
1:
|
|
|
|
remu a5, a2, a4
|
|
|
|
test_fail
|
|
|
|
2:
|
|
|
|
rsr a2, exccause
|
|
|
|
assert eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
|
|
|
|
rsr a2, epc1
|
|
|
|
movi a3, 1b
|
|
|
|
assert eq, a2, a3
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test rems_pp
|
|
|
|
movi a2, 0x5a5a137f
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0x137f5a5a
|
|
|
|
movi a6, 0x0c5caa17
|
|
|
|
rems a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
rems a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
rems a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test rems_np
|
|
|
|
movi a2, 0xa5a5137f
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0x137f5a5a
|
|
|
|
movi a6, 0xf3a27ce7
|
|
|
|
rems a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
rems a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
rems a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test rems_pn
|
|
|
|
movi a2, 0x5a5a137f
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0xf7315a5a
|
|
|
|
movi a6, 0x02479b03
|
|
|
|
rems a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
rems a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
rems a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test rems_nn
|
|
|
|
movi a2, 0xf7315a5a
|
|
|
|
mov a3, a2
|
|
|
|
movi a4, 0xa5a5137f
|
|
|
|
movi a6, 0xf7315a5a
|
|
|
|
rems a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
rems a2, a2, a4
|
|
|
|
assert eq, a2, a6
|
|
|
|
rems a4, a3, a4
|
|
|
|
assert eq, a4, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test rems_over
|
|
|
|
movi a2, 0x80000000
|
|
|
|
movi a4, 0xffffffff
|
|
|
|
movi a6, 0
|
|
|
|
rems a5, a2, a4
|
|
|
|
assert eq, a5, a6
|
|
|
|
test_end
|
|
|
|
|
|
|
|
test rems_exc
|
|
|
|
set_vector kernel, 2f
|
|
|
|
movi a2, 0xf7315a5a
|
|
|
|
movi a4, 0x00000000
|
|
|
|
1:
|
|
|
|
rems a5, a2, a4
|
|
|
|
test_fail
|
|
|
|
2:
|
|
|
|
rsr a2, exccause
|
|
|
|
assert eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
|
|
|
|
rsr a2, epc1
|
|
|
|
movi a3, 1b
|
|
|
|
assert eq, a2, a3
|
|
|
|
test_end
|
|
|
|
|
2019-02-18 17:40:38 +03:00
|
|
|
#endif
|
|
|
|
|
2011-09-06 03:55:57 +04:00
|
|
|
test_suite_end
|