48 lines
1.2 KiB
ArmAsm
48 lines
1.2 KiB
ArmAsm
# expected: 0000000000000001, 0000000000000004, 0000000000000008, 000000000000000D, 0000000000000014
|
|
.text
|
|
_start:
|
|
# Test 1: Equal values (should NOT branch)
|
|
li x1, 5
|
|
li x2, 5
|
|
bltu x1, x2, label1
|
|
addi x31, x0, 1 # expected path (not taken)
|
|
label1:
|
|
|
|
# Test 2: x1 < x2 unsigned (should branch)
|
|
li x1, 5
|
|
li x2, 10
|
|
bltu x1, x2, label2
|
|
addi x31, x31, 2 # skipped if branch taken
|
|
j label2_end
|
|
label2:
|
|
addi x31, x31, 3 # expected path (branch taken)
|
|
label2_end:
|
|
|
|
# Test 3: x1 > x2 unsigned (should NOT branch)
|
|
li x1, 10
|
|
li x2, 5
|
|
bltu x1, x2, label3
|
|
addi x31, x31, 4 # expected path (not taken)
|
|
label3:
|
|
|
|
# Test 4: x1 = 0xFFFFFFFFFFFFFFFF, x2 = 0 (max unsigned vs min unsigned)
|
|
li x1, -1 # 0xFFFFFFFFFFFFFFFF
|
|
li x2, 0
|
|
bltu x1, x2, label4
|
|
addi x31, x31, 5 # expected path (not taken)
|
|
label4:
|
|
|
|
# Test 5: x1 = 0, x2 = 0xFFFFFFFFFFFFFFFF (min unsigned vs max unsigned)
|
|
li x1, 0
|
|
li x2, -1
|
|
bltu x1, x2, label5
|
|
addi x31, x31, 6 # skipped if branch taken
|
|
j label5_end
|
|
label5:
|
|
addi x31, x31, 7 # expected path (branch taken)
|
|
label5_end:
|
|
|
|
# Done
|
|
nop
|
|
|