xref: /qemu/tests/tcg/xtensa/test_quo.S (revision 4179575898fcc17c5e67306a357b8dfe64122e8e)
1a2e67072SMax Filippov#include "macros.inc"
27d890b40SMax Filippov
37d890b40SMax Filippovtest_suite quo
47d890b40SMax Filippov
5*50f0171aSMax Filippov#if XCHAL_HAVE_DIV32
6*50f0171aSMax Filippov
77d890b40SMax Filippovtest quou_pp
87d890b40SMax Filippov    movi    a2, 0x5a5a137f
97d890b40SMax Filippov    mov     a3, a2
107d890b40SMax Filippov    movi    a4, 0x137f5a5a
117d890b40SMax Filippov    movi    a6, 0x4
127d890b40SMax Filippov    quou    a5, a2, a4
137d890b40SMax Filippov    assert  eq, a5, a6
147d890b40SMax Filippov    quou    a2, a2, a4
157d890b40SMax Filippov    assert  eq, a2, a6
167d890b40SMax Filippov    quou    a4, a3, a4
177d890b40SMax Filippov    assert  eq, a4, a6
187d890b40SMax Filippovtest_end
197d890b40SMax Filippov
207d890b40SMax Filippovtest quou_np
217d890b40SMax Filippov    movi    a2, 0xa5a5137f
227d890b40SMax Filippov    mov     a3, a2
237d890b40SMax Filippov    movi    a4, 0x137f5a5a
247d890b40SMax Filippov    movi    a6, 0x8
257d890b40SMax Filippov    quou    a5, a2, a4
267d890b40SMax Filippov    assert  eq, a5, a6
277d890b40SMax Filippov    quou    a2, a2, a4
287d890b40SMax Filippov    assert  eq, a2, a6
297d890b40SMax Filippov    quou    a4, a3, a4
307d890b40SMax Filippov    assert  eq, a4, a6
317d890b40SMax Filippovtest_end
327d890b40SMax Filippov
337d890b40SMax Filippovtest quou_pn
347d890b40SMax Filippov    movi    a2, 0x5a5a137f
357d890b40SMax Filippov    mov     a3, a2
367d890b40SMax Filippov    movi    a4, 0xf7315a5a
377d890b40SMax Filippov    movi    a6, 0
387d890b40SMax Filippov    quou    a5, a2, a4
397d890b40SMax Filippov    assert  eq, a5, a6
407d890b40SMax Filippov    quou    a2, a2, a4
417d890b40SMax Filippov    assert  eq, a2, a6
427d890b40SMax Filippov    quou    a4, a3, a4
437d890b40SMax Filippov    assert  eq, a4, a6
447d890b40SMax Filippovtest_end
457d890b40SMax Filippov
467d890b40SMax Filippovtest quou_nn
477d890b40SMax Filippov    movi    a2, 0xf7315a5a
487d890b40SMax Filippov    mov     a3, a2
497d890b40SMax Filippov    movi    a4, 0xa5a5137f
507d890b40SMax Filippov    movi    a6, 0x1
517d890b40SMax Filippov    quou    a5, a2, a4
527d890b40SMax Filippov    assert  eq, a5, a6
537d890b40SMax Filippov    quou    a2, a2, a4
547d890b40SMax Filippov    assert  eq, a2, a6
557d890b40SMax Filippov    quou    a4, a3, a4
567d890b40SMax Filippov    assert  eq, a4, a6
577d890b40SMax Filippovtest_end
587d890b40SMax Filippov
597d890b40SMax Filippovtest quou_exc
607d890b40SMax Filippov    set_vector kernel, 2f
617d890b40SMax Filippov    movi    a2, 0xf7315a5a
627d890b40SMax Filippov    movi    a4, 0x00000000
637d890b40SMax Filippov1:
647d890b40SMax Filippov    quou    a5, a2, a4
657d890b40SMax Filippov    test_fail
667d890b40SMax Filippov2:
677d890b40SMax Filippov    rsr     a2, exccause
687d890b40SMax Filippov    assert  eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
697d890b40SMax Filippov    rsr     a2, epc1
707d890b40SMax Filippov    movi    a3, 1b
717d890b40SMax Filippov    assert  eq, a2, a3
727d890b40SMax Filippovtest_end
737d890b40SMax Filippov
747d890b40SMax Filippovtest quos_pp
757d890b40SMax Filippov    movi    a2, 0x5a5a137f
767d890b40SMax Filippov    mov     a3, a2
777d890b40SMax Filippov    movi    a4, 0x137f5a5a
787d890b40SMax Filippov    movi    a6, 0x4
797d890b40SMax Filippov    quos    a5, a2, a4
807d890b40SMax Filippov    assert  eq, a5, a6
817d890b40SMax Filippov    quos    a2, a2, a4
827d890b40SMax Filippov    assert  eq, a2, a6
837d890b40SMax Filippov    quos    a4, a3, a4
847d890b40SMax Filippov    assert  eq, a4, a6
857d890b40SMax Filippovtest_end
867d890b40SMax Filippov
877d890b40SMax Filippovtest quos_np
887d890b40SMax Filippov    movi    a2, 0xa5a5137f
897d890b40SMax Filippov    mov     a3, a2
907d890b40SMax Filippov    movi    a4, 0x137f5a5a
917d890b40SMax Filippov    movi    a6, 0xfffffffc
927d890b40SMax Filippov    quos    a5, a2, a4
937d890b40SMax Filippov    assert  eq, a5, a6
947d890b40SMax Filippov    quos    a2, a2, a4
957d890b40SMax Filippov    assert  eq, a2, a6
967d890b40SMax Filippov    quos    a4, a3, a4
977d890b40SMax Filippov    assert  eq, a4, a6
987d890b40SMax Filippovtest_end
997d890b40SMax Filippov
1007d890b40SMax Filippovtest quos_pn
1017d890b40SMax Filippov    movi    a2, 0x5a5a137f
1027d890b40SMax Filippov    mov     a3, a2
1037d890b40SMax Filippov    movi    a4, 0xf7315a5a
1047d890b40SMax Filippov    movi    a6, 0xfffffff6
1057d890b40SMax Filippov    quos    a5, a2, a4
1067d890b40SMax Filippov    assert  eq, a5, a6
1077d890b40SMax Filippov    quos    a2, a2, a4
1087d890b40SMax Filippov    assert  eq, a2, a6
1097d890b40SMax Filippov    quos    a4, a3, a4
1107d890b40SMax Filippov    assert  eq, a4, a6
1117d890b40SMax Filippovtest_end
1127d890b40SMax Filippov
1137d890b40SMax Filippovtest quos_nn
1147d890b40SMax Filippov    movi    a2, 0xf7315a5a
1157d890b40SMax Filippov    mov     a3, a2
1167d890b40SMax Filippov    movi    a4, 0xa5a5137f
1177d890b40SMax Filippov    movi    a6, 0
1187d890b40SMax Filippov    quos    a5, a2, a4
1197d890b40SMax Filippov    assert  eq, a5, a6
1207d890b40SMax Filippov    quos    a2, a2, a4
1217d890b40SMax Filippov    assert  eq, a2, a6
1227d890b40SMax Filippov    quos    a4, a3, a4
1237d890b40SMax Filippov    assert  eq, a4, a6
1247d890b40SMax Filippovtest_end
1257d890b40SMax Filippov
1267d890b40SMax Filippovtest quos_over
1277d890b40SMax Filippov    movi    a2, 0x80000000
1287d890b40SMax Filippov    movi    a4, 0xffffffff
1297d890b40SMax Filippov    movi    a6, 0x80000000
1307d890b40SMax Filippov    quos    a5, a2, a4
1317d890b40SMax Filippov    assert  eq, a5, a6
1327d890b40SMax Filippovtest_end
1337d890b40SMax Filippov
1347d890b40SMax Filippovtest quos_exc
1357d890b40SMax Filippov    set_vector kernel, 2f
1367d890b40SMax Filippov    movi    a2, 0xf7315a5a
1377d890b40SMax Filippov    movi    a4, 0x00000000
1387d890b40SMax Filippov1:
1397d890b40SMax Filippov    quos    a5, a2, a4
1407d890b40SMax Filippov    test_fail
1417d890b40SMax Filippov2:
1427d890b40SMax Filippov    rsr     a2, exccause
1437d890b40SMax Filippov    assert  eqi, a2, 6 /* INTEGER_DIVIDE_BY_ZERO_CAUSE */
1447d890b40SMax Filippov    rsr     a2, epc1
1457d890b40SMax Filippov    movi    a3, 1b
1467d890b40SMax Filippov    assert  eq, a2, a3
1477d890b40SMax Filippovtest_end
1487d890b40SMax Filippov
149*50f0171aSMax Filippov#endif
150*50f0171aSMax Filippov
1517d890b40SMax Filippovtest_suite_end
152