73 lines
1.2 KiB
Text
73 lines
1.2 KiB
Text
# mach: crisv32
|
|
# output: bf\n0\n80\n20\n10\n8\n4\n2\n1\n40\nfade040\n3ade0040\nfade040\n42\n
|
|
|
|
; Check flag settings.
|
|
|
|
.include "testutils.inc"
|
|
start
|
|
clear.d r3
|
|
setf pixnzvc ; Setting U(ser mode) would restrict tests of other flags.
|
|
move ccs,r3
|
|
dumpr3
|
|
|
|
clear.d r3
|
|
clearf puixnzvc
|
|
move ccs,r3
|
|
dumpr3
|
|
|
|
.macro testf BIT
|
|
clear.d r3
|
|
clearf puixnzvc
|
|
setf \BIT
|
|
move ccs,r3
|
|
dumpr3
|
|
.endm
|
|
|
|
testf p
|
|
testf i
|
|
testf x
|
|
testf n
|
|
testf z
|
|
testf v
|
|
testf c
|
|
testf u ; Can't test i-flag or clear u after this point.
|
|
|
|
.macro test_get_cc N Z V C
|
|
clearf znvc
|
|
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),ccs
|
|
test_cc \N \Z \V \C
|
|
setf znvc
|
|
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),ccs
|
|
test_cc \N \Z \V \C
|
|
move.d ((\N << 3)|(\Z << 2)|(\V << 1)|\C),r4
|
|
setf znvc
|
|
move r4,ccs
|
|
test_cc \N \Z \V \C
|
|
clearf znvc
|
|
move r4,ccs
|
|
test_cc \N \Z \V \C
|
|
.endm
|
|
|
|
test_get_cc 1 0 0 0
|
|
test_get_cc 0 1 0 0
|
|
test_get_cc 0 0 1 0
|
|
test_get_cc 0 0 0 1
|
|
|
|
; Test that the U bit sticks.
|
|
move 0x0fade000,ccs
|
|
move ccs,r3
|
|
dumpr3
|
|
|
|
; Check that the M and Q bits can't be set in user mode.
|
|
move 0xfade0000,ccs
|
|
move ccs,r3
|
|
dumpr3
|
|
|
|
move 0x0fade000,ccs
|
|
move ccs,r3
|
|
dumpr3
|
|
|
|
move.d 0x42,r3
|
|
dumpr3
|
|
|
|
quit
|