Statistics
| Branch: | Revision:

root / tests / cris / check_movmp.s @ df2dbb4a

History | View | Annotate | Download (2.2 kB)

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