79 lines
1.2 KiB
Text
79 lines
1.2 KiB
Text
# mach: crisv10
|
|
# output: ff\nff\n0\n0\n80\n40\n20\n10\n8\n4\n2\n1\n80\n40\n20\n10\n8\n4\n2\n1\n42\n
|
|
|
|
; Check that flag settings affect ccr and dccr and vice versa.
|
|
|
|
.include "testutils.inc"
|
|
start
|
|
clear.d r3
|
|
setf mbixnzvc
|
|
move ccr,r3
|
|
dumpr3
|
|
|
|
clear.d r3
|
|
setf mbixnzvc
|
|
move dccr,r3
|
|
dumpr3
|
|
|
|
clear.d r3
|
|
clearf mbixnzvc
|
|
move ccr,r3
|
|
dumpr3
|
|
|
|
clear.d r3
|
|
clearf mbixnzvc
|
|
move dccr,r3
|
|
dumpr3
|
|
|
|
.macro testfr BIT REG
|
|
clear.d r3
|
|
clearf mbixnzvc
|
|
setf \BIT
|
|
move \REG,r3
|
|
dumpr3
|
|
.endm
|
|
|
|
testfr m ccr
|
|
testfr b ccr
|
|
testfr i ccr
|
|
testfr x ccr
|
|
testfr n ccr
|
|
testfr z ccr
|
|
testfr v ccr
|
|
testfr c ccr
|
|
|
|
testfr m dccr
|
|
testfr b dccr
|
|
testfr i dccr
|
|
testfr x dccr
|
|
testfr n dccr
|
|
testfr z dccr
|
|
testfr v dccr
|
|
testfr c dccr
|
|
|
|
; Check only the nzvc bits; do the other bits in special tests as they're
|
|
; implemented.
|
|
.macro test_get_cc N Z V C
|
|
clearf znvc
|
|
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),ccr
|
|
test_cc \N \Z \V \C
|
|
setf znvc
|
|
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),dccr
|
|
test_cc \N \Z \V \C
|
|
move.d ((\N << 3)|(\Z << 2)|(\V << 1)|\C),r4
|
|
setf znvc
|
|
move r4,ccr
|
|
test_cc \N \Z \V \C
|
|
clearf znvc
|
|
move r4,dccr
|
|
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
|
|
|
|
move.d 0x42,r3
|
|
dumpr3
|
|
quit
|