# 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