|
|
1.1 root 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
11: filler:
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: checkr3 ffffff00
32:
33: moveq -1,r3
34: clearf zcvn
35: clear.w r3
36: test_cc 0 0 0 0
37: checkr3 ffff0000
38:
39: moveq -1,r3
40: clear.d r3
41: checkr3 0
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: # ffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
52:
53: moveq -1,r3
54: clear.b r3
55: checkr3 ffffff00
56:
57: moveq -1,r3
58: clear.w r3
59: checkr3 ffff0000
60:
61: moveq -1,r3
62: clear.d r3
63: checkr3 0
64:
65: ; And postincremented.
66: .if 0 ; See ".if 0" above.
67: move [r6+],p0
68: move [r6+],p4
69: move [r6+],p8
70: .endif
71:
72: # ffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
73:
74: moveq -1,r3
75: clear.b r3
76: checkr3 ffffff00
77:
78: moveq -1,r3
79: clear.w r3
80: checkr3 ffff0000
81:
82: moveq -1,r3
83: clear.d r3
84: checkr3 0
85:
86: ; Now see that we can write to the registers too.
87: # bb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
88: ; [PC+]
89: move.d filler,r9
90: move 0xbb113344,srp
91: move srp,r3
92: checkr3 bb113344
93:
94: ; [R+]
95: move [r9+],srp
96: move srp,r3
97: checkr3 664433aa
98:
99: ; [R]
100: move [r9],srp
101: move srp,r3
102: checkr3 cc557788
103:
104: ; And check writing to memory, clear and srp.
105:
106: move.d filler,r9
107: move 0xabcde012,srp
108: setf zcvn
109: move srp,[r9+]
110: test_cc 1 1 1 1
111: subq 4,r9
112: move.d [r9],r3
113: checkr3 abcde012
114:
115: clearf zcvn
116: clear.b [r9]
117: test_cc 0 0 0 0
118: move.d [r9],r3
119: checkr3 abcde000
120:
121: addq 2,r9
122: clear.w [r9+]
123: subq 2,r9
124: move.d [r9],r3
125: checkr3 77880000
126:
127: clear.d [r9]
128: move.d [r9],r3
129: checkr3 0
130:
131: quit
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.