nkeynes@231: .section .text nkeynes@231: .include "sh4/inc.s" nkeynes@231: ! nkeynes@231: ! Test bt pcrel nkeynes@231: ! Test bt/s pcrel nkeynes@231: nkeynes@231: .global _test_bt nkeynes@231: _test_bt: nkeynes@231: start_test nkeynes@231: nkeynes@231: test_bt_1: ! Test branch not taken nkeynes@231: add #1, r12 nkeynes@231: clc nkeynes@231: bt test_bt_1_b nkeynes@231: bra test_bt_2 nkeynes@231: nop nkeynes@231: test_bt_1_b: nkeynes@231: fail test_bt_str_k nkeynes@231: nkeynes@231: test_bt_2: ! Test branch taken nkeynes@231: add #1, r12 nkeynes@231: setc nkeynes@231: bt test_bt_3 nkeynes@231: fail test_bt_str_k nkeynes@231: nkeynes@231: test_bt_3: ! Test branch taken (backwards) nkeynes@231: add #1, r12 nkeynes@231: setc nkeynes@231: bra test_bt_3_b nkeynes@231: nop nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_4 nkeynes@231: test_bt_3_c: nkeynes@231: nop nkeynes@231: bra test_bt_4 nkeynes@231: nop nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_4 nkeynes@231: test_bt_3_b: nkeynes@231: nop nkeynes@231: bt test_bt_3_c nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_4 nkeynes@231: nop nkeynes@231: test_bt_4: ! Test branch not taken w/ delay nkeynes@231: add #1, r12 nkeynes@231: clc nkeynes@231: xor r0, r0 nkeynes@231: bt/s test_bt_4_b nkeynes@231: add #1, r0 nkeynes@231: bra test_bt_4_c nkeynes@231: nop nkeynes@231: test_bt_4_b: nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_5 nkeynes@231: nop nkeynes@231: test_bt_4_c: nkeynes@231: xor r1,r1 nkeynes@231: add #1, r1 nkeynes@231: cmp/eq r0, r1 nkeynes@231: nkeynes@231: test_bt_5: ! Test branch taken w/ delay nkeynes@231: add #1, r12 nkeynes@231: setc nkeynes@231: xor r0,r0 nkeynes@231: bt/s test_bt_5_b nkeynes@231: add #1, r0 nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_6 nkeynes@231: test_bt_5_b: nkeynes@231: xor r1,r1 nkeynes@231: add #1, r1 nkeynes@231: cmp/eq r0,r1 nkeynes@231: bt test_bt_6 nkeynes@231: fail test_bt_str_k nkeynes@231: nkeynes@231: test_bt_6: ! Test back-branch taken w/ delay nkeynes@231: add #1, r12 nkeynes@231: setc nkeynes@231: xor r0, r0 nkeynes@231: bra test_bt_6_b nkeynes@231: nop nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_7 nkeynes@231: nop nkeynes@231: add #1, r13 nkeynes@231: test_bt_6_c: nkeynes@231: mov #1, r1 nkeynes@231: cmp/eq r0, r1 nkeynes@231: bt test_bt_7 nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_7 nkeynes@231: nop nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_7 nkeynes@231: test_bt_6_b: nkeynes@231: nop nkeynes@231: bt/s test_bt_6_c nkeynes@231: add #1, r0 nkeynes@231: fail test_bt_str_k nkeynes@231: bra test_bt_7 nkeynes@231: nop nkeynes@231: nkeynes@231: test_bt_7: nkeynes@231: add #1, r12 nkeynes@231: expect_exc 0x000001A0 ! BT is slot illegal nkeynes@231: test_bt_7_exc: nkeynes@231: bra test_bt_7_b nkeynes@231: bt test_bt_7_b nkeynes@231: assert_exc_caught test_bt_str_k test_bt_7_exc nkeynes@231: bra test_bt_8 nkeynes@231: nop nkeynes@231: test_bt_7_b: nkeynes@231: test_bt_7_c: nkeynes@231: fail test_bt_str_k nkeynes@231: nkeynes@231: test_bt_8: nkeynes@231: add #1, r12 nkeynes@231: expect_exc 0x000001A0 ! BT/S is slot illegal nkeynes@231: test_bt_8_exc: nkeynes@231: bra test_bt_8_b nkeynes@231: bt/s test_bt_8_b nkeynes@231: nop nkeynes@231: assert_exc_caught test_bt_str_k test_bt_8_exc nkeynes@231: bra test_bt_end nkeynes@231: nop nkeynes@231: test_bt_8_b: nkeynes@231: test_bt_8_c: nkeynes@231: fail test_bt_str_k nkeynes@231: nkeynes@231: test_bt_end: nkeynes@231: end_test test_bt_str_k nkeynes@231: nkeynes@231: test_bt_str: nkeynes@231: .string "BT" nkeynes@231: nkeynes@231: .align 4 nkeynes@231: test_bt_str_k: nkeynes@231: .long test_bt_str nkeynes@231: