diff --git a/tests/tcg/cr16c/test11-branches.S b/tests/tcg/cr16c/test11-branches.S new file mode 100644 index 0000000000..29acb2547a --- /dev/null +++ b/tests/tcg/cr16c/test11-branches.S @@ -0,0 +1,43 @@ +#include "macros.inc" + +.global _start + +.text +_start: + /* Initialize registers */ + RESET + + movd $0x4000, (sp) +begin: + /* todo: test all addressing modes here somehow */ + + // registers + // register pairs + // immediate + // relative (disp variants) modes + // absolute + // (uh oh) index + /** BAL **/ + bal (ra), sub1 + + movw $0x1234, r1 + movw $0x4242, r2 + bal (ra), sub2 + EXPECT 0x1234, r1 + EXPECT 0x4242, r2 + + ENDING + FAIL_HANDLER + +sub1: + jump (ra) /* should return */ + FAIL + + +sub2: + PUSH $0x2, r1, ra + movw $-1, r1 + movw $-1, r2 + POPRET $0x2, r1, ra /* should return */ + FAIL +