# expected: 000001BC, 000003BC, 000002BC, 000003BC, 000000AC .text _start: li x5, 0x0 # case1: not equal -> should jump -> write 0x1BC add x1, x0, 0x00A add x2, x0, 0x00B bne x1, x2, case1_target add x31, x0, 0x3BC case1_target: add x31, x0, 0x1BC back_label: bne x5, x0, back_label_flagged # fall-through add x1, x0, 0x000 add x2, x0, 0x001 add x31, x0, 0x3BC jal x0, back_label_cont back_label_flagged: add x5, x0, 0x0 jal x0, after_backward back_label_cont: # case2: equal -> should not jump -> write 0x2BC add x1, x0, 0x1BC add x2, x0, 0x1BC bne x1, x2, case2_target add x31, x0, 0x2BC case2_target: add x31, x0, 0x3BC # case3: zero vs non-zero -> should jump -> write 0x4BC add x1, x0, 0x000 add x2, x0, 0x001 bne x1, x2, case3_target add x31, x0, 0x5BC case3_target: # backward branch trigger add x5, x0, 0x1 add x1, x0, 0x002 add x2, x0, 0x001 bne x1, x2, back_label # same-reg: should not jump (since equal) -> write 0x0AC after fall-through add x1, x0, 0x00A add x2, x0, 0x00A bne x1, x2, same_reg_target add x31, x0, 0x0AC same_reg_target: add x31, x0, 0x6BC after_backward: add x31, x0, 0x0AC