| #include "macros.inc" | |
| test_suite quo | |
| test quou_pp | |
| movi a2, 0x5a5a137f | |
| mov a3, a2 | |
| movi a4, 0x137f5a5a | |
| movi a6, 0x4 | |
| quou a5, a2, a4 | |
| assert eq, a5, a6 | |
| quou a2, a2, a4 | |
| assert eq, a2, a6 | |
| quou a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quou_np | |
| movi a2, 0xa5a5137f | |
| mov a3, a2 | |
| movi a4, 0x137f5a5a | |
| movi a6, 0x8 | |
| quou a5, a2, a4 | |
| assert eq, a5, a6 | |
| quou a2, a2, a4 | |
| assert eq, a2, a6 | |
| quou a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quou_pn | |
| movi a2, 0x5a5a137f | |
| mov a3, a2 | |
| movi a4, 0xf7315a5a | |
| movi a6, 0 | |
| quou a5, a2, a4 | |
| assert eq, a5, a6 | |
| quou a2, a2, a4 | |
| assert eq, a2, a6 | |
| quou a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quou_nn | |
| movi a2, 0xf7315a5a | |
| mov a3, a2 | |
| movi a4, 0xa5a5137f | |
| movi a6, 0x1 | |
| quou a5, a2, a4 | |
| assert eq, a5, a6 | |
| quou a2, a2, a4 | |
| assert eq, a2, a6 | |
| quou a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quou_exc | |
| set_vector kernel, 2f | |
| movi a2, 0xf7315a5a | |
| movi a4, 0x00000000 | |
| 1: | |
| quou 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 quos_pp | |
| movi a2, 0x5a5a137f | |
| mov a3, a2 | |
| movi a4, 0x137f5a5a | |
| movi a6, 0x4 | |
| quos a5, a2, a4 | |
| assert eq, a5, a6 | |
| quos a2, a2, a4 | |
| assert eq, a2, a6 | |
| quos a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quos_np | |
| movi a2, 0xa5a5137f | |
| mov a3, a2 | |
| movi a4, 0x137f5a5a | |
| movi a6, 0xfffffffc | |
| quos a5, a2, a4 | |
| assert eq, a5, a6 | |
| quos a2, a2, a4 | |
| assert eq, a2, a6 | |
| quos a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quos_pn | |
| movi a2, 0x5a5a137f | |
| mov a3, a2 | |
| movi a4, 0xf7315a5a | |
| movi a6, 0xfffffff6 | |
| quos a5, a2, a4 | |
| assert eq, a5, a6 | |
| quos a2, a2, a4 | |
| assert eq, a2, a6 | |
| quos a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quos_nn | |
| movi a2, 0xf7315a5a | |
| mov a3, a2 | |
| movi a4, 0xa5a5137f | |
| movi a6, 0 | |
| quos a5, a2, a4 | |
| assert eq, a5, a6 | |
| quos a2, a2, a4 | |
| assert eq, a2, a6 | |
| quos a4, a3, a4 | |
| assert eq, a4, a6 | |
| test_end | |
| test quos_over | |
| movi a2, 0x80000000 | |
| movi a4, 0xffffffff | |
| movi a6, 0x80000000 | |
| quos a5, a2, a4 | |
| assert eq, a5, a6 | |
| test_end | |
| test quos_exc | |
| set_vector kernel, 2f | |
| movi a2, 0xf7315a5a | |
| movi a4, 0x00000000 | |
| 1: | |
| quos 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_suite_end |