I think this properly stalls for all implemented instructions so I don't need nops
This commit is contained in:
58
test/test.S
58
test/test.S
@ -154,7 +154,7 @@ _start:
|
||||
nop
|
||||
sub x6, x0, x3 # x6 = 0xffffffff
|
||||
sub x7, x0, x4 # x7 = 0xfffffff0
|
||||
sub x8, x0, x5 # x7 = 0xffffff00
|
||||
sub x8, x0, x5 # x8 = 0xffffff00
|
||||
nop
|
||||
slti x9, x3, 0 # x9 = 0x00000000
|
||||
slti x10, x3, 1 # x10 = 0x00000000
|
||||
@ -206,6 +206,45 @@ _start:
|
||||
nop
|
||||
nop
|
||||
|
||||
# jal
|
||||
jal x1, test_jalr
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
# can I remove nops now?
|
||||
addi x6, x0, 0 # x6 = 0
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
addi x6, x0, 1 # x6 = 1
|
||||
addi x7, x6, 1 # x7 = 2
|
||||
addi x8, x6, 1 # x8 = 2
|
||||
addi x9, x6, 1 # x9 = 2
|
||||
|
||||
test1:
|
||||
# TODO: redo these tests because my nop test messed it up
|
||||
# beq
|
||||
addi x30, x0, 1 # x30 = 1
|
||||
addi x9, x8, 0 # x9 == x8
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
bne x0, x0, fail # 0 == 0
|
||||
bne x9, x8, fail # x9 == x8
|
||||
bne x7, x8, test2 # x7 != x8
|
||||
j fail
|
||||
|
||||
test2:
|
||||
# beq
|
||||
addi x30, x0, 2 # x30 = 2
|
||||
beq x0, x8, fail # 0 != x8
|
||||
beq x7, x8, fail # x7 != x8
|
||||
beq x8, x9, test3 # x8 == x9
|
||||
j fail
|
||||
|
||||
test3:
|
||||
|
||||
|
||||
# counter and infinite loop
|
||||
nop
|
||||
@ -234,4 +273,21 @@ loop:
|
||||
nop
|
||||
nop
|
||||
|
||||
# jalr
|
||||
test_jalr:
|
||||
addi x2, x0, 0x12 # x2 = 0x12
|
||||
jalr x0, x1, 0 # return
|
||||
|
||||
fail:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
jal x0, fail # loop forever
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
.data
|
||||
|
Reference in New Issue
Block a user