Merge tag 'qemu-macppc-20230206' of https://github.com/mcayland/qemu into staging
[qemu.git] / tests / tcg / cris / bare / check_movmp.s
blob7fc11f064dddea298abfaa28f46195c3e4fcde98
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
4 # Test generic "move Ps,[]" and "move [],Pd" insns; the ones with
5 # functionality common to all models.
7 .include "testutils.inc"
8 start
10 .data
11 filler:
12 .byte 0xaa
13 .word 0x4433
14 .dword 0x55778866
15 .byte 0xcc
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
27 moveq -1,r3
28 setf zcvn
29 clear.b r3
30 test_cc 1 1 1 1
31 checkr3 ffffff00
33 moveq -1,r3
34 clearf zcvn
35 clear.w r3
36 test_cc 0 0 0 0
37 checkr3 ffff0000
39 moveq -1,r3
40 clear.d r3
41 checkr3 0
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
51 # ffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
53 moveq -1,r3
54 clear.b r3
55 checkr3 ffffff00
57 moveq -1,r3
58 clear.w r3
59 checkr3 ffff0000
61 moveq -1,r3
62 clear.d r3
63 checkr3 0
65 ; And postincremented.
66 .if 0 ; See ".if 0" above.
67 move [r6+],p0
68 move [r6+],p4
69 move [r6+],p8
70 .endif
72 # ffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
74 moveq -1,r3
75 clear.b r3
76 checkr3 ffffff00
78 moveq -1,r3
79 clear.w r3
80 checkr3 ffff0000
82 moveq -1,r3
83 clear.d r3
84 checkr3 0
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
94 ; [R+]
95 move [r9+],srp
96 move srp,r3
97 checkr3 664433aa
99 ; [R]
100 move [r9],srp
101 move srp,r3
102 checkr3 cc557788
104 ; And check writing to memory, clear and srp.
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
115 clearf zcvn
116 clear.b [r9]
117 test_cc 0 0 0 0
118 move.d [r9],r3
119 checkr3 abcde000
121 addq 2,r9
122 clear.w [r9+]
123 subq 2,r9
124 move.d [r9],r3
125 checkr3 77880000
127 clear.d [r9]
128 move.d [r9],r3
129 checkr3 0
131 quit