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