diff options
Diffstat (limited to 'qemu/tests/tcg/cris/check_xarith.s')
-rw-r--r-- | qemu/tests/tcg/cris/check_xarith.s | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/qemu/tests/tcg/cris/check_xarith.s b/qemu/tests/tcg/cris/check_xarith.s new file mode 100644 index 000000000..80038b2ab --- /dev/null +++ b/qemu/tests/tcg/cris/check_xarith.s @@ -0,0 +1,72 @@ + +.include "testutils.inc" + + start + + moveq -1, $r0 + moveq 0, $r1 + addq 1, $r0 + ax + addq 0, $r1 + + move.d $r0, $r3 + checkr3 0 + move.d $r1, $r3 + checkr3 1 + + move.d 0, $r0 + moveq -1, $r1 + subq 1, $r0 + ax + subq 0, $r1 + + move.d $r0, $r3 + checkr3 ffffffff + move.d $r1, $r3 + checkr3 fffffffe + + + moveq -1, $r0 + moveq -1, $r1 + cmpq -1, $r0 + ax + cmpq -1, $r1 + beq 1f + nop + fail +1: + cmpq 0, $r0 + ax + cmpq -1, $r1 + bne 1f + nop + fail +1: + + ;; test for broken X sequence, run it several times. + moveq 8, $r0 +1: + moveq 0, $r3 + move.d $r0, $r1 + andq 1, $r1 + lslq 4, $r1 + moveq 1, $r2 + or.d $r1, $r2 + ba 2f + move $r2, $ccs +2: + addq 0, $r3 + move.d $r0, $r4 + move.d $r1, $r5 + move.d $r2, $r6 + move.d $r3, $r7 + lsrq 4, $r1 + move.d $r1, $r8 + xor $r1, $r3 + checkr3 0 + subq 1, $r0 + bne 1b + nop + + pass + quit |