Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / cris / check_movmp.s
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