qemu/tests/tcg/cris/bare/check_bcc.s
Alex Bennée d4f6e58fcb tests/tcg: split cris tests into bare and libc directories
Bare tests are standalone assembly tests that don't require linking to
any libc and hence can be built with kernel only compilers. The libc
tests need a compiler capable of building properly linked userspace
binaries. As we don't have such a cross compiler at the moment we
won't be building those tests.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
2019-03-12 17:05:21 +00:00

198 lines
1.7 KiB
ArmAsm

.global main
.type main, @function
main:
clearf nzvc
setf nzv
bcc 0f
addq 1, $r3
jump dofail
0:
clearf nzvc
setf nzv
bcs dofail
addq 1,$r3
clearf nzvc
setf ncv
bne 1f
addq 1, $r3
fail:
dofail:
jump _fail
1:
clearf nzvc
setf ncv
beq dofail
addq 1,$r3
clearf nzvc
setf ncz
bvc 2f
addq 1,$r3
jump dofail
2:
clearf nzvc
setf ncz
bvs dofail
addq 1,$r3
clearf nzvc
setf vcz
bpl 3f
addq 1,$r3
jump fail
3:
clearf nzvc
setf vcz
bmi dofail
addq 1,$r3
clearf nzvc
setf nv
bls dofail
addq 1,$r3
clearf nzvc
setf nv
bhi 4f
addq 1,$r3
jump dofail
4:
clearf nzvc
setf zc
bge 5f
addq 1,$r3
jump dofail
5:
clearf nzvc
setf zc
blt dofail
addq 1,$r3
clearf nzvc
setf c
bgt 6f
addq 1,$r3
jump fail
6:
clearf nzvc
setf c
ble dofail
addq 1,$r3
;;;;;;;;;;
setf nzvc
clearf nzv
bcc dofail
addq 1,$r3
setf nzvc
clearf nzv
bcs 0f
addq 1,$r3
jump fail
0:
setf nzvc
clearf ncv
bne dofail
addq 1,$r3
setf nzvc
clearf ncv
beq 1f
addq 1,$r3
jump fail
1:
setf nzvc
clearf ncz
bvc dofail
addq 1,$r3
setf nzvc
clearf ncz
bvs 2f
addq 1,$r3
jump fail
2:
setf nzvc
clearf vcz
bpl dofail
addq 1,$r3
setf nzvc
clearf vcz
bmi 3f
addq 1,$r3
jump fail
3:
setf nzvc
clearf nv
bls 4f
addq 1,$r3
jump fail
4:
setf nzvc
clearf nv
bhi dofail
addq 1,$r3
setf zvc
clearf nzc
bge dofail
addq 1,$r3
setf nzc
clearf vzc
blt 5f
addq 1,$r3
jump fail
5:
setf nzvc
clearf c
bgt dofail
addq 1,$r3
setf nzvc
clearf c
ble 6f
addq 1,$r3
jump fail
6:
; do a forward branch.
ba 2f
nop
.fill 100
1:
ba 3f
nop
.fill 800
2:
ba 1b
nop
.fill 1024
3:
moveq 31, $r0
1: bne 1b
subq 1, $r0
jsr pass
moveq 0, $r10
ret
nop