1# mach: crisv3 crisv8 crisv10 crisv32
2# output: ffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
3
4# Test generic "move Ps,[]" and "move [],Pd" insns; the ones with
5# functionality common to all models.
6
7 .include "testutils.inc"
8 start
9
10 .data
11filler:
12 .byte 0xaa
13 .word 0x4433
14 .dword 0x55778866
15 .byte 0xcc
16
17 .text
18; Test that writing to zero-registers is a nop
19 .if 0
20 ; We used to just ignore the writes, but now an error is emitted.  We
21 ; keep the test-code but disabled, in case we need to change this again.
22 move 0xaa,p0
23 move 0x4433,p4
24 move 0x55774433,p8
25 .endif
26
27 moveq -1,r3
28 setf zcvn
29 clear.b r3
30 test_cc 1 1 1 1
31 dumpr3
32
33 moveq -1,r3
34 clearf zcvn
35 clear.w r3
36 test_cc 0 0 0 0
37 dumpr3
38
39 moveq -1,r3
40 clear.d r3
41 dumpr3
42
43; "Write" using ordinary memory references too.
44 .if 0 ; See ".if 0" above.
45 move.d filler,r6
46 move [r6],p0
47 move [r6],p4
48 move [r6],p8
49 .endif
50
51 moveq -1,r3
52 clear.b r3
53 dumpr3
54
55 moveq -1,r3
56 clear.w r3
57 dumpr3
58
59 moveq -1,r3
60 clear.d r3
61 dumpr3
62
63; And postincremented.
64 .if 0 ; See ".if 0" above.
65 move [r6+],p0
66 move [r6+],p4
67 move [r6+],p8
68 .endif
69
70 moveq -1,r3
71 clear.b r3
72 dumpr3
73
74 moveq -1,r3
75 clear.w r3
76 dumpr3
77
78 moveq -1,r3
79 clear.d r3
80 dumpr3
81
82; Now see that we can write to the registers too.
83
84; [PC+]
85 move.d filler,r9
86 move 0xbb113344,srp
87 move srp,r3
88 dumpr3
89
90; [R+]
91 move [r9+],srp
92 move srp,r3
93 dumpr3
94
95; [R]
96 move [r9],srp
97 move srp,r3
98 dumpr3
99
100; And check writing to memory, clear and srp.
101
102 move.d filler,r9
103 move 0xabcde012,srp
104 setf zcvn
105 move srp,[r9+]
106 test_cc 1 1 1 1
107 subq 4,r9
108 move.d [r9],r3
109 dumpr3
110
111 clearf zcvn
112 clear.b [r9]
113 test_cc 0 0 0 0
114 move.d [r9],r3
115 dumpr3
116
117 addq 2,r9
118 clear.w [r9+]
119 subq 2,r9
120 move.d [r9],r3
121 dumpr3 
122
123 clear.d [r9]
124 move.d [r9],r3
125 dumpr3
126
127 quit
128