1*1424dfb3Schristos.syntax unified
2*1424dfb3Schristos# Extra tests everywhere:
3*1424dfb3Schristos# Ensure that setting the register to something in r[1-12] works.
4*1424dfb3Schristos
5*1424dfb3Schristos# cx1{a} Has arguments in the following form
6*1424dfb3Schristos# 111a111000iiiiiidddd0pppi0iiiiii
7*1424dfb3Schristos#
8*1424dfb3Schristos# Variants to test:
9*1424dfb3Schristos# - Base (everything we can set to zero)
10*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn.
11*1424dfb3Schristos#   (imm = op1:op2:op3  , which is each group of `i` from left to write
12*1424dfb3Schristos#   concatenated)
13*1424dfb3Schristos# - Each register 9 (0b1001), APSR_nzcv, or all zeros
14*1424dfb3Schristos# - Coprocessor num set to 7
15*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing).
16*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing)
17*1424dfb3Schristos#
18*1424dfb3Schristos# IT blocks:
19*1424dfb3Schristos#  Non-accumulator versions are UNPREDICTABLE in IT blocks.
20*1424dfb3Schristos#  Accumulator versions are allowed in IT blocks.
21*1424dfb3Schristos
22*1424dfb3Schristos# cx1{a} extra tests.
23*1424dfb3Schristos# Arm conditional
24*1424dfb3Schristoscx1 p0, r0, #0
25*1424dfb3Schristoscx1 p0, r0, #8064
26*1424dfb3Schristoscx1 p0, r0, #64
27*1424dfb3Schristoscx1 p0, r0, #63
28*1424dfb3Schristoscx1 p7, r0, #0
29*1424dfb3Schristoscx1 p0, APSR_nzcv, #0
30*1424dfb3Schristoscx1 p0, r9, #0
31*1424dfb3Schristoscx1a p0, r0, #0
32*1424dfb3Schristoscx1a p0, r0, #8064
33*1424dfb3Schristoscx1a p0, r0, #64
34*1424dfb3Schristoscx1a p0, r0, #63
35*1424dfb3Schristoscx1a p7, r0, #0
36*1424dfb3Schristoscx1a p0, APSR_nzcv, #0
37*1424dfb3Schristoscx1a p0, r9, #0
38*1424dfb3Schristos
39*1424dfb3Schristosit ne
40*1424dfb3Schristoscx1ane p0, r0, #0
41*1424dfb3Schristos
42*1424dfb3Schristos# cx1d{a} encoding of following form:
43*1424dfb3Schristos# 111a111000iiiiiidddd0pppi1iiiiii
44*1424dfb3Schristos#
45*1424dfb3Schristos# Variants to test:
46*1424dfb3Schristos# - Base (everything we can set to zero)
47*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn.
48*1424dfb3Schristos#   (imm = op1:op2:op3  , which is each group of `i` from left to write
49*1424dfb3Schristos#   concatenated)
50*1424dfb3Schristos# - Destination register 10 (0b1010) or all zeros
51*1424dfb3Schristos# - Coprocessor num set to 7
52*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing).
53*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing)
54*1424dfb3Schristoscx1d p0, r0, r1, #0
55*1424dfb3Schristoscx1d p0, r0, r1, #8064
56*1424dfb3Schristoscx1d p0, r0, r1, #64
57*1424dfb3Schristoscx1d p0, r0, r1, #63
58*1424dfb3Schristoscx1d p7, r0, r1, #0
59*1424dfb3Schristoscx1d p0, r10, r11, #0
60*1424dfb3Schristoscx1da p0, r0, r1, #0
61*1424dfb3Schristoscx1da p0, r0, r1, #8064
62*1424dfb3Schristoscx1da p0, r0, r1, #64
63*1424dfb3Schristoscx1da p0, r0, r1, #63
64*1424dfb3Schristoscx1da p7, r0, r1, #0
65*1424dfb3Schristoscx1da p0, r10, r11, #0
66*1424dfb3Schristos
67*1424dfb3Schristosit ne
68*1424dfb3Schristoscx1dane p0, r0, r1, #0
69*1424dfb3Schristos
70*1424dfb3Schristos
71*1424dfb3Schristos# cx2{a} Has arguments of the following form:
72*1424dfb3Schristos# 111a111001iinnnndddd0pppi0iiiiii
73*1424dfb3Schristos#
74*1424dfb3Schristos# Variants to test:
75*1424dfb3Schristos# - Base (everything we can set to zero)
76*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn.
77*1424dfb3Schristos#   (imm = op1:op2:op3  , which is each group of `i` from left to write
78*1424dfb3Schristos#   concatenated)
79*1424dfb3Schristos# - Each register 9 (0b1001), APSR_nzcv, or all zeros
80*1424dfb3Schristos# - Coprocessor num set to 7
81*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing).
82*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing)
83*1424dfb3Schristoscx2 p0, r0, r0, #0
84*1424dfb3Schristoscx2 p0, r0, r0, #384
85*1424dfb3Schristoscx2 p0, r0, r0, #64
86*1424dfb3Schristoscx2 p0, r0, r0, #63
87*1424dfb3Schristoscx2 p7, r0, r0, #0
88*1424dfb3Schristoscx2 p0, APSR_nzcv, r0, #0
89*1424dfb3Schristoscx2 p0, r9, r0, #0
90*1424dfb3Schristoscx2 p0, r0, APSR_nzcv, #0
91*1424dfb3Schristoscx2 p0, r0, r9, #0
92*1424dfb3Schristoscx2a p0, r0, r0, #0
93*1424dfb3Schristoscx2a p0, r0, r0, #384
94*1424dfb3Schristoscx2a p0, r0, r0, #64
95*1424dfb3Schristoscx2a p0, r0, r0, #63
96*1424dfb3Schristoscx2a p7, r0, r0, #0
97*1424dfb3Schristoscx2a p0, APSR_nzcv, r0, #0
98*1424dfb3Schristoscx2a p0, r9, r0, #0
99*1424dfb3Schristoscx2a p0, r0, APSR_nzcv, #0
100*1424dfb3Schristoscx2a p0, r0, r9, #0
101*1424dfb3Schristos
102*1424dfb3Schristosit ne
103*1424dfb3Schristoscx2ane p0, r0, r0, #0
104*1424dfb3Schristos
105*1424dfb3Schristos# cx2d{a} encoding has following form:
106*1424dfb3Schristos# 111a111001iinnnndddd0pppi1iiiiii
107*1424dfb3Schristos#
108*1424dfb3Schristos# - Base (everything we can set to zero)
109*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn.
110*1424dfb3Schristos#   (imm = op1:op2:op3  , which is each group of `i` from left to write
111*1424dfb3Schristos#   concatenated)
112*1424dfb3Schristos# - Destination register 10 (0b1010) or all zeros
113*1424dfb3Schristos# - Coprocessor num set to 7
114*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing).
115*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing)
116*1424dfb3Schristoscx2d p0, r0, r1, r0, #0
117*1424dfb3Schristoscx2d p0, r0, r1, r0, #384
118*1424dfb3Schristoscx2d p0, r0, r1, r0, #64
119*1424dfb3Schristoscx2d p0, r0, r1, r0, #63
120*1424dfb3Schristoscx2d p7, r0, r1, r0, #0
121*1424dfb3Schristoscx2d p0, r10, r11, r0, #0
122*1424dfb3Schristoscx2d p0, r0, r1, APSR_nzcv, #0
123*1424dfb3Schristoscx2d p0, r0, r1, r9, #0
124*1424dfb3Schristoscx2da p0, r0, r1, r0, #0
125*1424dfb3Schristoscx2da p0, r0, r1, r0, #384
126*1424dfb3Schristoscx2da p0, r0, r1, r0, #64
127*1424dfb3Schristoscx2da p0, r0, r1, r0, #63
128*1424dfb3Schristoscx2da p7, r0, r1, r0, #0
129*1424dfb3Schristoscx2da p0, r10, r11, r0, #0
130*1424dfb3Schristoscx2da p0, r0, r1, APSR_nzcv, #0
131*1424dfb3Schristoscx2da p0, r0, r1, r9, #0
132*1424dfb3Schristos
133*1424dfb3Schristos# cx3{a} Has arguments in the following form:
134*1424dfb3Schristos# 111a11101iiinnnnmmmm0pppi0iidddd
135*1424dfb3Schristos#
136*1424dfb3Schristos# Variants to test:
137*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn.
138*1424dfb3Schristos#   (imm = op1:op2:op3  , which is each group of `i` from left to write
139*1424dfb3Schristos# - Base (everything we can set to zero)
140*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn.
141*1424dfb3Schristos#   (imm = op1:op2:op3  , which is each group of `i` from left to write
142*1424dfb3Schristos#   concatenated)
143*1424dfb3Schristos# - Each register 9 (0b1001), APSR_nzcv, or all zeros
144*1424dfb3Schristos# - Coprocessor num set to 7
145*1424dfb3Schristos# - Everything again with the `a` version (to double check parsing).
146*1424dfb3Schristos# - Accumulator versions without optional argument (to check parsing)
147*1424dfb3Schristoscx3 p0, r0, r0, r0, #0
148*1424dfb3Schristoscx3 p0, r0, r0, r0, #56
149*1424dfb3Schristoscx3 p0, r0, r0, r0, #4
150*1424dfb3Schristoscx3 p0, r0, r0, r0, #3
151*1424dfb3Schristoscx3 p7, r0, r0, r0, #0
152*1424dfb3Schristoscx3 p0, APSR_nzcv, r0, r0, #0
153*1424dfb3Schristoscx3 p0, r9, r0, r0, #0
154*1424dfb3Schristoscx3 p0, r0, APSR_nzcv, r0, #0
155*1424dfb3Schristoscx3 p0, r0, r9, r0, #0
156*1424dfb3Schristoscx3 p0, r0, r0, APSR_nzcv, #0
157*1424dfb3Schristoscx3 p0, r0, r0, r9, #0
158*1424dfb3Schristoscx3a p0, r0, r0, r0, #0
159*1424dfb3Schristoscx3a p0, r0, r0, r0, #56
160*1424dfb3Schristoscx3a p0, r0, r0, r0, #4
161*1424dfb3Schristoscx3a p0, r0, r0, r0, #3
162*1424dfb3Schristoscx3a p7, r0, r0, r0, #0
163*1424dfb3Schristoscx3a p0, APSR_nzcv, r0, r0, #0
164*1424dfb3Schristoscx3a p0, r9, r0, r0, #0
165*1424dfb3Schristoscx3a p0, r0, APSR_nzcv, r0, #0
166*1424dfb3Schristoscx3a p0, r0, r9, r0, #0
167*1424dfb3Schristoscx3a p0, r0, r0, APSR_nzcv, #0
168*1424dfb3Schristoscx3a p0, r0, r0, r9, #0
169*1424dfb3Schristos
170*1424dfb3Schristosit ne
171*1424dfb3Schristoscx3ane p0, r0, r0, r0, #0
172*1424dfb3Schristos
173*1424dfb3Schristos# cx3d{a} encoding has following form:
174*1424dfb3Schristos# 111a11101iiinnnnmmmm0pppi1iidddd
175*1424dfb3Schristos#
176*1424dfb3Schristos# Variants to test:
177*1424dfb3Schristos# - Toggle 'a'
178*1424dfb3Schristos# - immediates that set each set of `i` to ones in turn.
179*1424dfb3Schristos#   (imm = op1:op2:op3  , which is each group of `i` from left to write
180*1424dfb3Schristos#   concatenated)
181*1424dfb3Schristos# - Destination register 10 (0b1010) or all zeros
182*1424dfb3Schristos# - Source register 9 (0b1001), APSR_nzcv, or all zeros
183*1424dfb3Schristos
184*1424dfb3Schristos# No longer allows APSR_nzcv in destination register
185*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #0
186*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #56
187*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #4
188*1424dfb3Schristoscx3d p0, r0, r1, r0, r0, #3
189*1424dfb3Schristoscx3d p7, r0, r1, r0, r0, #0
190*1424dfb3Schristoscx3d p0, r10, r11, r0, r0, #0
191*1424dfb3Schristoscx3d p0, r0, r1, APSR_nzcv, r0, #0
192*1424dfb3Schristoscx3d p0, r0, r1, r9, r0, #0
193*1424dfb3Schristoscx3d p0, r0, r1, r0, APSR_nzcv, #0
194*1424dfb3Schristoscx3d p0, r0, r1, r0, r9, #0
195*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #0
196*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #56
197*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #4
198*1424dfb3Schristoscx3da p0, r0, r1, r0, r0, #3
199*1424dfb3Schristoscx3da p7, r0, r1, r0, r0, #0
200*1424dfb3Schristoscx3da p0, r10, r11, r0, r0, #0
201*1424dfb3Schristoscx3da p0, r0, r1, APSR_nzcv, r0, #0
202*1424dfb3Schristoscx3da p0, r0, r1, r9, r0, #0
203*1424dfb3Schristoscx3da p0, r0, r1, r0, APSR_nzcv, #0
204*1424dfb3Schristoscx3da p0, r0, r1, r0, r9, #0
205*1424dfb3Schristos
206*1424dfb3Schristos
207