1 %verify "executed" 2 %verify "forward and backward" 3 /* 4 * Unconditional branch, 8-bit offset. 5 * 6 * The branch distance is a signed code-unit offset, which we need to 7 * double to get a byte offset. 8 */ 9 /* goto +AA */ 10 /* tuning: use sbfx for 6t2+ targets */ 11 mov r0, rINST, lsl #16 @ r0<- AAxx0000 12 movs r1, r0, asr #24 @ r1<- ssssssAA (sign-extended) 13 add r2, r1, r1 @ r2<- byte offset, set flags 14 @ If backwards branch refresh rIBASE 15 ldrmi rIBASE, [rSELF, #offThread_curHandlerTable] @ refresh handler base 16 FETCH_ADVANCE_INST_RB(r2) @ update rPC, load rINST 17 #if defined(WITH_JIT) 18 ldr r0, [rSELF, #offThread_pJitProfTable] 19 bmi common_testUpdateProfile @ (r0) check for trace hotness 20 #endif 21 GET_INST_OPCODE(ip) @ extract opcode from rINST 22 GOTO_OPCODE(ip) @ jump to next instruction 23