# mach: crisv3 crisv8 crisv10 crisv32 # output: ffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n # Test generic "move Ps,[]" and "move [],Pd" insns; the ones with # functionality common to all models. .include "testutils.inc" start .data filler: .byte 0xaa .word 0x4433 .dword 0x55778866 .byte 0xcc .text ; Test that writing to zero-registers is a nop .if 0 ; We used to just ignore the writes, but now an error is emitted. We ; keep the test-code but disabled, in case we need to change this again. move 0xaa,p0 move 0x4433,p4 move 0x55774433,p8 .endif moveq -1,r3 setf zcvn clear.b r3 test_cc 1 1 1 1 checkr3 ffffff00 moveq -1,r3 clearf zcvn clear.w r3 test_cc 0 0 0 0 checkr3 ffff0000 moveq -1,r3 clear.d r3 checkr3 0 ; "Write" using ordinary memory references too. .if 0 ; See ".if 0" above. move.d filler,r6 move [r6],p0 move [r6],p4 move [r6],p8 .endif # ffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n moveq -1,r3 clear.b r3 checkr3 ffffff00 moveq -1,r3 clear.w r3 checkr3 ffff0000 moveq -1,r3 clear.d r3 checkr3 0 ; And postincremented. .if 0 ; See ".if 0" above. move [r6+],p0 move [r6+],p4 move [r6+],p8 .endif # ffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n moveq -1,r3 clear.b r3 checkr3 ffffff00 moveq -1,r3 clear.w r3 checkr3 ffff0000 moveq -1,r3 clear.d r3 checkr3 0 ; Now see that we can write to the registers too. # bb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n ; [PC+] move.d filler,r9 move 0xbb113344,srp move srp,r3 checkr3 bb113344 ; [R+] move [r9+],srp move srp,r3 checkr3 664433aa ; [R] move [r9],srp move srp,r3 checkr3 cc557788 ; And check writing to memory, clear and srp. move.d filler,r9 move 0xabcde012,srp setf zcvn move srp,[r9+] test_cc 1 1 1 1 subq 4,r9 move.d [r9],r3 checkr3 abcde012 clearf zcvn clear.b [r9] test_cc 0 0 0 0 move.d [r9],r3 checkr3 abcde000 addq 2,r9 clear.w [r9+] subq 2,r9 move.d [r9],r3 checkr3 77880000 clear.d [r9] move.d [r9],r3 checkr3 0 quit