1 // Copyright 2016, VIXL authors
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 // * Redistributions of source code must retain the above copyright notice,
8 // this list of conditions and the following disclaimer.
9 // * Redistributions in binary form must reproduce the above copyright notice,
10 // this list of conditions and the following disclaimer in the documentation
11 // and/or other materials provided with the distribution.
12 // * Neither the name of ARM Limited nor the names of its contributors may be
13 // used to endorse or promote products derived from this software without
14 // specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27
28 // -----------------------------------------------------------------------------
29 // This file is auto generated from the
30 // test/aarch32/config/template-assembler-aarch32.cc.in template file using
31 // tools/generate_tests.py.
32 //
33 // PLEASE DO NOT EDIT.
34 // -----------------------------------------------------------------------------
35
36
37 #include "test-runner.h"
38
39 #include "test-utils.h"
40 #include "test-utils-aarch32.h"
41
42 #include "aarch32/assembler-aarch32.h"
43 #include "aarch32/macro-assembler-aarch32.h"
44
45 #define BUF_SIZE (4096)
46
47 namespace vixl {
48 namespace aarch32 {
49
50 // List of instruction mnemonics.
51 #define FOREACH_INSTRUCTION(M) \
52 M(cmn) \
53 M(cmp) \
54 M(teq) \
55 M(tst)
56
57
58 // The following definitions are defined again in each generated test, therefore
59 // we need to place them in an anomymous namespace. It expresses that they are
60 // local to this file only, and the compiler is not allowed to share these types
61 // across test files during template instantiation. Specifically, `Operands` has
62 // various layouts across generated tests so it absolutely cannot be shared.
63
64 #ifdef VIXL_INCLUDE_TARGET_A32
65 namespace {
66
67 // Values to be passed to the assembler to produce the instruction under test.
68 struct Operands {
69 Condition cond;
70 Register rd;
71 uint32_t immediate;
72 };
73
74 // This structure contains all data needed to test one specific
75 // instruction.
76 struct TestData {
77 // The `operands` field represents what to pass to the assembler to
78 // produce the instruction.
79 Operands operands;
80 // True if we need to generate an IT instruction for this test to be valid.
81 bool in_it_block;
82 // The condition to give the IT instruction, this will be set to "al" by
83 // default.
84 Condition it_condition;
85 // Description of the operands, used for error reporting.
86 const char* operands_description;
87 // Unique identifier, used for generating traces.
88 const char* identifier;
89 };
90
91 struct TestResult {
92 size_t size;
93 const byte* encoding;
94 };
95
96 // Each element of this array produce one instruction encoding.
97 const TestData kTests[] =
98 {{{ls, r10, 0x00ab0000},
99 false,
100 al,
101 "ls r10 0x00ab0000",
102 "ls_r10_"
103 "0x00ab0000"},
104 {{ls, r13, 0xf000000f},
105 false,
106 al,
107 "ls r13 0xf000000f",
108 "ls_r13_"
109 "0xf000000f"},
110 {{pl, r4, 0x00003fc0}, false, al, "pl r4 0x00003fc0", "pl_r4_0x00003fc0"},
111 {{ne, r15, 0x00ab0000},
112 false,
113 al,
114 "ne r15 0x00ab0000",
115 "ne_r15_"
116 "0x00ab0000"},
117 {{lt, r14, 0x002ac000},
118 false,
119 al,
120 "lt r14 0x002ac000",
121 "lt_r14_"
122 "0x002ac000"},
123 {{eq, r15, 0x000000ab},
124 false,
125 al,
126 "eq r15 0x000000ab",
127 "eq_r15_"
128 "0x000000ab"},
129 {{al, r6, 0x002ac000}, false, al, "al r6 0x002ac000", "al_r6_0x002ac000"},
130 {{pl, r2, 0x0002ac00}, false, al, "pl r2 0x0002ac00", "pl_r2_0x0002ac00"},
131 {{mi, r8, 0x00000000}, false, al, "mi r8 0x00000000", "mi_r8_0x00000000"},
132 {{pl, r13, 0x02ac0000},
133 false,
134 al,
135 "pl r13 0x02ac0000",
136 "pl_r13_"
137 "0x02ac0000"},
138 {{ge, r9, 0xac000002}, false, al, "ge r9 0xac000002", "ge_r9_0xac000002"},
139 {{ne, r3, 0x000003fc}, false, al, "ne r3 0x000003fc", "ne_r3_0x000003fc"},
140 {{pl, r10, 0xf000000f},
141 false,
142 al,
143 "pl r10 0xf000000f",
144 "pl_r10_"
145 "0xf000000f"},
146 {{cc, r0, 0x00003fc0}, false, al, "cc r0 0x00003fc0", "cc_r0_0x00003fc0"},
147 {{gt, r6, 0x002ac000}, false, al, "gt r6 0x002ac000", "gt_r6_0x002ac000"},
148 {{cs, r1, 0x00ff0000}, false, al, "cs r1 0x00ff0000", "cs_r1_0x00ff0000"},
149 {{lt, r8, 0x000002ac}, false, al, "lt r8 0x000002ac", "lt_r8_0x000002ac"},
150 {{vc, r4, 0x2ac00000}, false, al, "vc r4 0x2ac00000", "vc_r4_0x2ac00000"},
151 {{al, r11, 0x00003fc0},
152 false,
153 al,
154 "al r11 0x00003fc0",
155 "al_r11_"
156 "0x00003fc0"},
157 {{lt, r9, 0x000000ab}, false, al, "lt r9 0x000000ab", "lt_r9_0x000000ab"},
158 {{le, r15, 0x0000ff00},
159 false,
160 al,
161 "le r15 0x0000ff00",
162 "le_r15_"
163 "0x0000ff00"},
164 {{vc, r9, 0xff000000}, false, al, "vc r9 0xff000000", "vc_r9_0xff000000"},
165 {{ge, r0, 0x0ff00000}, false, al, "ge r0 0x0ff00000", "ge_r0_0x0ff00000"},
166 {{vc, r1, 0x00ff0000}, false, al, "vc r1 0x00ff0000", "vc_r1_0x00ff0000"},
167 {{vs, r12, 0x00000ff0},
168 false,
169 al,
170 "vs r12 0x00000ff0",
171 "vs_r12_"
172 "0x00000ff0"},
173 {{pl, r13, 0x003fc000},
174 false,
175 al,
176 "pl r13 0x003fc000",
177 "pl_r13_"
178 "0x003fc000"},
179 {{eq, r4, 0xff000000}, false, al, "eq r4 0xff000000", "eq_r4_0xff000000"},
180 {{eq, r12, 0xac000002},
181 false,
182 al,
183 "eq r12 0xac000002",
184 "eq_r12_"
185 "0xac000002"},
186 {{al, r11, 0x000000ab},
187 false,
188 al,
189 "al r11 0x000000ab",
190 "al_r11_"
191 "0x000000ab"},
192 {{ge, r10, 0x00ff0000},
193 false,
194 al,
195 "ge r10 0x00ff0000",
196 "ge_r10_"
197 "0x00ff0000"},
198 {{vs, r7, 0x0002ac00}, false, al, "vs r7 0x0002ac00", "vs_r7_0x0002ac00"},
199 {{le, r7, 0x002ac000}, false, al, "le r7 0x002ac000", "le_r7_0x002ac000"},
200 {{vc, r9, 0x000003fc}, false, al, "vc r9 0x000003fc", "vc_r9_0x000003fc"},
201 {{vs, r14, 0x002ac000},
202 false,
203 al,
204 "vs r14 0x002ac000",
205 "vs_r14_"
206 "0x002ac000"},
207 {{vs, r1, 0x000003fc}, false, al, "vs r1 0x000003fc", "vs_r1_0x000003fc"},
208 {{le, r13, 0x3fc00000},
209 false,
210 al,
211 "le r13 0x3fc00000",
212 "le_r13_"
213 "0x3fc00000"},
214 {{ne, r9, 0x0002ac00}, false, al, "ne r9 0x0002ac00", "ne_r9_0x0002ac00"},
215 {{al, r0, 0x00ab0000}, false, al, "al r0 0x00ab0000", "al_r0_0x00ab0000"},
216 {{hi, r5, 0xff000000}, false, al, "hi r5 0xff000000", "hi_r5_0xff000000"},
217 {{hi, r14, 0x000000ab},
218 false,
219 al,
220 "hi r14 0x000000ab",
221 "hi_r14_"
222 "0x000000ab"},
223 {{hi, r14, 0x000003fc},
224 false,
225 al,
226 "hi r14 0x000003fc",
227 "hi_r14_"
228 "0x000003fc"},
229 {{mi, r14, 0x03fc0000},
230 false,
231 al,
232 "mi r14 0x03fc0000",
233 "mi_r14_"
234 "0x03fc0000"},
235 {{mi, r8, 0x000000ff}, false, al, "mi r8 0x000000ff", "mi_r8_0x000000ff"},
236 {{gt, r6, 0x000ab000}, false, al, "gt r6 0x000ab000", "gt_r6_0x000ab000"},
237 {{mi, r12, 0x0ff00000},
238 false,
239 al,
240 "mi r12 0x0ff00000",
241 "mi_r12_"
242 "0x0ff00000"},
243 {{vs, r3, 0xff000000}, false, al, "vs r3 0xff000000", "vs_r3_0xff000000"},
244 {{vc, r7, 0x00ab0000}, false, al, "vc r7 0x00ab0000", "vc_r7_0x00ab0000"},
245 {{hi, r6, 0x03fc0000}, false, al, "hi r6 0x03fc0000", "hi_r6_0x03fc0000"},
246 {{ls, r5, 0x00ab0000}, false, al, "ls r5 0x00ab0000", "ls_r5_0x00ab0000"},
247 {{ls, r4, 0x000002ac}, false, al, "ls r4 0x000002ac", "ls_r4_0x000002ac"},
248 {{le, r13, 0x03fc0000},
249 false,
250 al,
251 "le r13 0x03fc0000",
252 "le_r13_"
253 "0x03fc0000"},
254 {{le, r15, 0x002ac000},
255 false,
256 al,
257 "le r15 0x002ac000",
258 "le_r15_"
259 "0x002ac000"},
260 {{pl, r6, 0xff000000}, false, al, "pl r6 0xff000000", "pl_r6_0xff000000"},
261 {{gt, r7, 0x00000ab0}, false, al, "gt r7 0x00000ab0", "gt_r7_0x00000ab0"},
262 {{hi, r3, 0x2ac00000}, false, al, "hi r3 0x2ac00000", "hi_r3_0x2ac00000"},
263 {{gt, r15, 0x00000000},
264 false,
265 al,
266 "gt r15 0x00000000",
267 "gt_r15_"
268 "0x00000000"},
269 {{gt, r1, 0x002ac000}, false, al, "gt r1 0x002ac000", "gt_r1_0x002ac000"},
270 {{hi, r2, 0x0000ff00}, false, al, "hi r2 0x0000ff00", "hi_r2_0x0000ff00"},
271 {{pl, r10, 0x03fc0000},
272 false,
273 al,
274 "pl r10 0x03fc0000",
275 "pl_r10_"
276 "0x03fc0000"},
277 {{gt, r10, 0xb000000a},
278 false,
279 al,
280 "gt r10 0xb000000a",
281 "gt_r10_"
282 "0xb000000a"},
283 {{ge, r10, 0x002ac000},
284 false,
285 al,
286 "ge r10 0x002ac000",
287 "ge_r10_"
288 "0x002ac000"},
289 {{al, r4, 0x0ab00000}, false, al, "al r4 0x0ab00000", "al_r4_0x0ab00000"},
290 {{ne, r12, 0x00000000},
291 false,
292 al,
293 "ne r12 0x00000000",
294 "ne_r12_"
295 "0x00000000"},
296 {{cs, r5, 0x00003fc0}, false, al, "cs r5 0x00003fc0", "cs_r5_0x00003fc0"},
297 {{cc, r6, 0x000000ff}, false, al, "cc r6 0x000000ff", "cc_r6_0x000000ff"},
298 {{hi, r14, 0x03fc0000},
299 false,
300 al,
301 "hi r14 0x03fc0000",
302 "hi_r14_"
303 "0x03fc0000"},
304 {{hi, r3, 0xab000000}, false, al, "hi r3 0xab000000", "hi_r3_0xab000000"},
305 {{lt, r2, 0x000ff000}, false, al, "lt r2 0x000ff000", "lt_r2_0x000ff000"},
306 {{gt, r3, 0x00ff0000}, false, al, "gt r3 0x00ff0000", "gt_r3_0x00ff0000"},
307 {{le, r14, 0x0ab00000},
308 false,
309 al,
310 "le r14 0x0ab00000",
311 "le_r14_"
312 "0x0ab00000"},
313 {{cc, r13, 0x03fc0000},
314 false,
315 al,
316 "cc r13 0x03fc0000",
317 "cc_r13_"
318 "0x03fc0000"},
319 {{gt, r6, 0xb000000a}, false, al, "gt r6 0xb000000a", "gt_r6_0xb000000a"},
320 {{pl, r3, 0x2ac00000}, false, al, "pl r3 0x2ac00000", "pl_r3_0x2ac00000"},
321 {{mi, r15, 0x000000ff},
322 false,
323 al,
324 "mi r15 0x000000ff",
325 "mi_r15_"
326 "0x000000ff"},
327 {{gt, r4, 0x00000ff0}, false, al, "gt r4 0x00000ff0", "gt_r4_0x00000ff0"},
328 {{ne, r4, 0x000003fc}, false, al, "ne r4 0x000003fc", "ne_r4_0x000003fc"},
329 {{ne, r5, 0x00ff0000}, false, al, "ne r5 0x00ff0000", "ne_r5_0x00ff0000"},
330 {{ge, r7, 0x000003fc}, false, al, "ge r7 0x000003fc", "ge_r7_0x000003fc"},
331 {{vs, r5, 0x00000000}, false, al, "vs r5 0x00000000", "vs_r5_0x00000000"},
332 {{vs, r6, 0x2ac00000}, false, al, "vs r6 0x2ac00000", "vs_r6_0x2ac00000"},
333 {{mi, r1, 0x3fc00000}, false, al, "mi r1 0x3fc00000", "mi_r1_0x3fc00000"},
334 {{gt, r8, 0xc000002a}, false, al, "gt r8 0xc000002a", "gt_r8_0xc000002a"},
335 {{pl, r10, 0x000000ab},
336 false,
337 al,
338 "pl r10 0x000000ab",
339 "pl_r10_"
340 "0x000000ab"},
341 {{mi, r6, 0xab000000}, false, al, "mi r6 0xab000000", "mi_r6_0xab000000"},
342 {{ls, r12, 0x3fc00000},
343 false,
344 al,
345 "ls r12 0x3fc00000",
346 "ls_r12_"
347 "0x3fc00000"},
348 {{vs, r13, 0x03fc0000},
349 false,
350 al,
351 "vs r13 0x03fc0000",
352 "vs_r13_"
353 "0x03fc0000"},
354 {{eq, r8, 0x00000ab0}, false, al, "eq r8 0x00000ab0", "eq_r8_0x00000ab0"},
355 {{gt, r6, 0x000000ff}, false, al, "gt r6 0x000000ff", "gt_r6_0x000000ff"},
356 {{vs, r5, 0x000ab000}, false, al, "vs r5 0x000ab000", "vs_r5_0x000ab000"},
357 {{mi, r1, 0x2ac00000}, false, al, "mi r1 0x2ac00000", "mi_r1_0x2ac00000"},
358 {{vs, r6, 0x00003fc0}, false, al, "vs r6 0x00003fc0", "vs_r6_0x00003fc0"},
359 {{gt, r6, 0x000002ac}, false, al, "gt r6 0x000002ac", "gt_r6_0x000002ac"},
360 {{eq, r2, 0x00000000}, false, al, "eq r2 0x00000000", "eq_r2_0x00000000"},
361 {{eq, r10, 0xc000003f},
362 false,
363 al,
364 "eq r10 0xc000003f",
365 "eq_r10_"
366 "0xc000003f"},
367 {{mi, r7, 0x00ab0000}, false, al, "mi r7 0x00ab0000", "mi_r7_0x00ab0000"},
368 {{cc, r7, 0x2ac00000}, false, al, "cc r7 0x2ac00000", "cc_r7_0x2ac00000"},
369 {{pl, r4, 0x00ab0000}, false, al, "pl r4 0x00ab0000", "pl_r4_0x00ab0000"},
370 {{ne, r15, 0x00000ff0},
371 false,
372 al,
373 "ne r15 0x00000ff0",
374 "ne_r15_"
375 "0x00000ff0"},
376 {{al, r6, 0x02ac0000}, false, al, "al r6 0x02ac0000", "al_r6_0x02ac0000"},
377 {{pl, r6, 0x000002ac}, false, al, "pl r6 0x000002ac", "pl_r6_0x000002ac"},
378 {{ne, r14, 0x00ff0000},
379 false,
380 al,
381 "ne r14 0x00ff0000",
382 "ne_r14_"
383 "0x00ff0000"},
384 {{ne, r5, 0x0003fc00}, false, al, "ne r5 0x0003fc00", "ne_r5_0x0003fc00"},
385 {{pl, r6, 0x00000ab0}, false, al, "pl r6 0x00000ab0", "pl_r6_0x00000ab0"},
386 {{eq, r10, 0x00002ac0},
387 false,
388 al,
389 "eq r10 0x00002ac0",
390 "eq_r10_"
391 "0x00002ac0"},
392 {{mi, r4, 0x00000ab0}, false, al, "mi r4 0x00000ab0", "mi_r4_0x00000ab0"},
393 {{vc, r5, 0x000ab000}, false, al, "vc r5 0x000ab000", "vc_r5_0x000ab000"},
394 {{ge, r0, 0x02ac0000}, false, al, "ge r0 0x02ac0000", "ge_r0_0x02ac0000"},
395 {{pl, r5, 0x000002ac}, false, al, "pl r5 0x000002ac", "pl_r5_0x000002ac"},
396 {{ge, r13, 0x00000ab0},
397 false,
398 al,
399 "ge r13 0x00000ab0",
400 "ge_r13_"
401 "0x00000ab0"},
402 {{eq, r2, 0x03fc0000}, false, al, "eq r2 0x03fc0000", "eq_r2_0x03fc0000"},
403 {{lt, r11, 0x00000ab0},
404 false,
405 al,
406 "lt r11 0x00000ab0",
407 "lt_r11_"
408 "0x00000ab0"},
409 {{ge, r6, 0x00000000}, false, al, "ge r6 0x00000000", "ge_r6_0x00000000"},
410 {{gt, r2, 0xac000002}, false, al, "gt r2 0xac000002", "gt_r2_0xac000002"},
411 {{le, r15, 0x000000ab},
412 false,
413 al,
414 "le r15 0x000000ab",
415 "le_r15_"
416 "0x000000ab"},
417 {{cc, r4, 0x00000ff0}, false, al, "cc r4 0x00000ff0", "cc_r4_0x00000ff0"},
418 {{pl, r10, 0x02ac0000},
419 false,
420 al,
421 "pl r10 0x02ac0000",
422 "pl_r10_"
423 "0x02ac0000"},
424 {{gt, r9, 0x00000000}, false, al, "gt r9 0x00000000", "gt_r9_0x00000000"},
425 {{vs, r8, 0x000000ff}, false, al, "vs r8 0x000000ff", "vs_r8_0x000000ff"},
426 {{gt, r14, 0x0002ac00},
427 false,
428 al,
429 "gt r14 0x0002ac00",
430 "gt_r14_"
431 "0x0002ac00"},
432 {{vs, r14, 0x00002ac0},
433 false,
434 al,
435 "vs r14 0x00002ac0",
436 "vs_r14_"
437 "0x00002ac0"},
438 {{ge, r12, 0x00000000},
439 false,
440 al,
441 "ge r12 0x00000000",
442 "ge_r12_"
443 "0x00000000"},
444 {{vc, r8, 0xf000000f}, false, al, "vc r8 0xf000000f", "vc_r8_0xf000000f"},
445 {{cs, r6, 0x00003fc0}, false, al, "cs r6 0x00003fc0", "cs_r6_0x00003fc0"},
446 {{le, r4, 0x000003fc}, false, al, "le r4 0x000003fc", "le_r4_0x000003fc"},
447 {{cs, r5, 0x000ff000}, false, al, "cs r5 0x000ff000", "cs_r5_0x000ff000"},
448 {{eq, r2, 0x0000ff00}, false, al, "eq r2 0x0000ff00", "eq_r2_0x0000ff00"},
449 {{pl, r10, 0x0ab00000},
450 false,
451 al,
452 "pl r10 0x0ab00000",
453 "pl_r10_"
454 "0x0ab00000"},
455 {{le, r11, 0xac000002},
456 false,
457 al,
458 "le r11 0xac000002",
459 "le_r11_"
460 "0xac000002"},
461 {{vs, r15, 0x00003fc0},
462 false,
463 al,
464 "vs r15 0x00003fc0",
465 "vs_r15_"
466 "0x00003fc0"},
467 {{lt, r2, 0x0002ac00}, false, al, "lt r2 0x0002ac00", "lt_r2_0x0002ac00"},
468 {{eq, r1, 0x00ab0000}, false, al, "eq r1 0x00ab0000", "eq_r1_0x00ab0000"},
469 {{cc, r7, 0x03fc0000}, false, al, "cc r7 0x03fc0000", "cc_r7_0x03fc0000"},
470 {{mi, r6, 0x00000ab0}, false, al, "mi r6 0x00000ab0", "mi_r6_0x00000ab0"},
471 {{eq, r4, 0x00000ab0}, false, al, "eq r4 0x00000ab0", "eq_r4_0x00000ab0"},
472 {{ls, r3, 0x0003fc00}, false, al, "ls r3 0x0003fc00", "ls_r3_0x0003fc00"},
473 {{mi, r6, 0x000ab000}, false, al, "mi r6 0x000ab000", "mi_r6_0x000ab000"},
474 {{ne, r12, 0x003fc000},
475 false,
476 al,
477 "ne r12 0x003fc000",
478 "ne_r12_"
479 "0x003fc000"},
480 {{eq, r11, 0x00ff0000},
481 false,
482 al,
483 "eq r11 0x00ff0000",
484 "eq_r11_"
485 "0x00ff0000"},
486 {{cs, r13, 0x00ab0000},
487 false,
488 al,
489 "cs r13 0x00ab0000",
490 "cs_r13_"
491 "0x00ab0000"},
492 {{eq, r5, 0x000003fc}, false, al, "eq r5 0x000003fc", "eq_r5_0x000003fc"},
493 {{vs, r6, 0x0003fc00}, false, al, "vs r6 0x0003fc00", "vs_r6_0x0003fc00"},
494 {{pl, r8, 0x0ff00000}, false, al, "pl r8 0x0ff00000", "pl_r8_0x0ff00000"},
495 {{pl, r11, 0x0000ab00},
496 false,
497 al,
498 "pl r11 0x0000ab00",
499 "pl_r11_"
500 "0x0000ab00"},
501 {{le, r2, 0xac000002}, false, al, "le r2 0xac000002", "le_r2_0xac000002"},
502 {{vc, r10, 0x000ff000},
503 false,
504 al,
505 "vc r10 0x000ff000",
506 "vc_r10_"
507 "0x000ff000"},
508 {{le, r4, 0x00000ff0}, false, al, "le r4 0x00000ff0", "le_r4_0x00000ff0"},
509 {{gt, r12, 0x00000ff0},
510 false,
511 al,
512 "gt r12 0x00000ff0",
513 "gt_r12_"
514 "0x00000ff0"},
515 {{le, r5, 0x0002ac00}, false, al, "le r5 0x0002ac00", "le_r5_0x0002ac00"},
516 {{le, r0, 0xac000002}, false, al, "le r0 0xac000002", "le_r0_0xac000002"},
517 {{vs, r11, 0x0ff00000},
518 false,
519 al,
520 "vs r11 0x0ff00000",
521 "vs_r11_"
522 "0x0ff00000"},
523 {{ls, r0, 0x000ab000}, false, al, "ls r0 0x000ab000", "ls_r0_0x000ab000"},
524 {{ls, r2, 0xf000000f}, false, al, "ls r2 0xf000000f", "ls_r2_0xf000000f"},
525 {{cs, r3, 0x0ff00000}, false, al, "cs r3 0x0ff00000", "cs_r3_0x0ff00000"},
526 {{hi, r8, 0x0ff00000}, false, al, "hi r8 0x0ff00000", "hi_r8_0x0ff00000"},
527 {{gt, r3, 0x00002ac0}, false, al, "gt r3 0x00002ac0", "gt_r3_0x00002ac0"},
528 {{al, r15, 0xab000000},
529 false,
530 al,
531 "al r15 0xab000000",
532 "al_r15_"
533 "0xab000000"},
534 {{eq, r13, 0x000000ab},
535 false,
536 al,
537 "eq r13 0x000000ab",
538 "eq_r13_"
539 "0x000000ab"},
540 {{al, r2, 0xc000002a}, false, al, "al r2 0xc000002a", "al_r2_0xc000002a"},
541 {{eq, r13, 0x03fc0000},
542 false,
543 al,
544 "eq r13 0x03fc0000",
545 "eq_r13_"
546 "0x03fc0000"},
547 {{eq, r3, 0x00000ff0}, false, al, "eq r3 0x00000ff0", "eq_r3_0x00000ff0"},
548 {{hi, r12, 0x00002ac0},
549 false,
550 al,
551 "hi r12 0x00002ac0",
552 "hi_r12_"
553 "0x00002ac0"},
554 {{mi, r2, 0x0ff00000}, false, al, "mi r2 0x0ff00000", "mi_r2_0x0ff00000"},
555 {{ne, r9, 0x003fc000}, false, al, "ne r9 0x003fc000", "ne_r9_0x003fc000"},
556 {{eq, r14, 0x03fc0000},
557 false,
558 al,
559 "eq r14 0x03fc0000",
560 "eq_r14_"
561 "0x03fc0000"},
562 {{cc, r0, 0x002ac000}, false, al, "cc r0 0x002ac000", "cc_r0_0x002ac000"},
563 {{vc, r14, 0x00000ab0},
564 false,
565 al,
566 "vc r14 0x00000ab0",
567 "vc_r14_"
568 "0x00000ab0"},
569 {{mi, r15, 0xf000000f},
570 false,
571 al,
572 "mi r15 0xf000000f",
573 "mi_r15_"
574 "0xf000000f"},
575 {{ge, r9, 0x000003fc}, false, al, "ge r9 0x000003fc", "ge_r9_0x000003fc"},
576 {{vs, r13, 0xac000002},
577 false,
578 al,
579 "vs r13 0xac000002",
580 "vs_r13_"
581 "0xac000002"},
582 {{vs, r1, 0x3fc00000}, false, al, "vs r1 0x3fc00000", "vs_r1_0x3fc00000"},
583 {{eq, r12, 0x00003fc0},
584 false,
585 al,
586 "eq r12 0x00003fc0",
587 "eq_r12_"
588 "0x00003fc0"},
589 {{mi, r6, 0xff000000}, false, al, "mi r6 0xff000000", "mi_r6_0xff000000"},
590 {{ne, r5, 0x000003fc}, false, al, "ne r5 0x000003fc", "ne_r5_0x000003fc"},
591 {{lt, r8, 0x0ff00000}, false, al, "lt r8 0x0ff00000", "lt_r8_0x0ff00000"},
592 {{hi, r7, 0x3fc00000}, false, al, "hi r7 0x3fc00000", "hi_r7_0x3fc00000"},
593 {{ge, r10, 0xac000002},
594 false,
595 al,
596 "ge r10 0xac000002",
597 "ge_r10_"
598 "0xac000002"},
599 {{vs, r2, 0x0000ff00}, false, al, "vs r2 0x0000ff00", "vs_r2_0x0000ff00"},
600 {{al, r6, 0x000000ab}, false, al, "al r6 0x000000ab", "al_r6_0x000000ab"},
601 {{ge, r7, 0x00ff0000}, false, al, "ge r7 0x00ff0000", "ge_r7_0x00ff0000"},
602 {{ne, r0, 0x000ff000}, false, al, "ne r0 0x000ff000", "ne_r0_0x000ff000"},
603 {{mi, r6, 0x000000ab}, false, al, "mi r6 0x000000ab", "mi_r6_0x000000ab"},
604 {{hi, r1, 0xf000000f}, false, al, "hi r1 0xf000000f", "hi_r1_0xf000000f"},
605 {{mi, r6, 0x2ac00000}, false, al, "mi r6 0x2ac00000", "mi_r6_0x2ac00000"},
606 {{vc, r11, 0x000000ff},
607 false,
608 al,
609 "vc r11 0x000000ff",
610 "vc_r11_"
611 "0x000000ff"},
612 {{ls, r14, 0x02ac0000},
613 false,
614 al,
615 "ls r14 0x02ac0000",
616 "ls_r14_"
617 "0x02ac0000"},
618 {{ge, r5, 0x003fc000}, false, al, "ge r5 0x003fc000", "ge_r5_0x003fc000"},
619 {{ls, r12, 0x0000ab00},
620 false,
621 al,
622 "ls r12 0x0000ab00",
623 "ls_r12_"
624 "0x0000ab00"},
625 {{cc, r15, 0x00000ab0},
626 false,
627 al,
628 "cc r15 0x00000ab0",
629 "cc_r15_"
630 "0x00000ab0"},
631 {{vc, r12, 0x0000ab00},
632 false,
633 al,
634 "vc r12 0x0000ab00",
635 "vc_r12_"
636 "0x0000ab00"},
637 {{vs, r2, 0xc000002a}, false, al, "vs r2 0xc000002a", "vs_r2_0xc000002a"},
638 {{lt, r7, 0x0ab00000}, false, al, "lt r7 0x0ab00000", "lt_r7_0x0ab00000"},
639 {{ls, r6, 0x00000ff0}, false, al, "ls r6 0x00000ff0", "ls_r6_0x00000ff0"},
640 {{vc, r10, 0x000000ff},
641 false,
642 al,
643 "vc r10 0x000000ff",
644 "vc_r10_"
645 "0x000000ff"},
646 {{ls, r4, 0x0000ab00}, false, al, "ls r4 0x0000ab00", "ls_r4_0x0000ab00"},
647 {{mi, r10, 0x003fc000},
648 false,
649 al,
650 "mi r10 0x003fc000",
651 "mi_r10_"
652 "0x003fc000"},
653 {{ls, r1, 0x000002ac}, false, al, "ls r1 0x000002ac", "ls_r1_0x000002ac"},
654 {{ge, r7, 0xb000000a}, false, al, "ge r7 0xb000000a", "ge_r7_0xb000000a"},
655 {{gt, r4, 0xf000000f}, false, al, "gt r4 0xf000000f", "gt_r4_0xf000000f"},
656 {{vc, r8, 0x002ac000}, false, al, "vc r8 0x002ac000", "vc_r8_0x002ac000"},
657 {{eq, r5, 0x0ab00000}, false, al, "eq r5 0x0ab00000", "eq_r5_0x0ab00000"},
658 {{gt, r2, 0xf000000f}, false, al, "gt r2 0xf000000f", "gt_r2_0xf000000f"},
659 {{gt, r6, 0xff000000}, false, al, "gt r6 0xff000000", "gt_r6_0xff000000"},
660 {{ls, r8, 0x0ab00000}, false, al, "ls r8 0x0ab00000", "ls_r8_0x0ab00000"},
661 {{vc, r0, 0xb000000a}, false, al, "vc r0 0xb000000a", "vc_r0_0xb000000a"},
662 {{lt, r6, 0x03fc0000}, false, al, "lt r6 0x03fc0000", "lt_r6_0x03fc0000"},
663 {{ge, r10, 0x0000ab00},
664 false,
665 al,
666 "ge r10 0x0000ab00",
667 "ge_r10_"
668 "0x0000ab00"},
669 {{hi, r4, 0x000ab000}, false, al, "hi r4 0x000ab000", "hi_r4_0x000ab000"},
670 {{hi, r11, 0x3fc00000},
671 false,
672 al,
673 "hi r11 0x3fc00000",
674 "hi_r11_"
675 "0x3fc00000"},
676 {{vs, r12, 0xc000003f},
677 false,
678 al,
679 "vs r12 0xc000003f",
680 "vs_r12_"
681 "0xc000003f"},
682 {{gt, r12, 0xb000000a},
683 false,
684 al,
685 "gt r12 0xb000000a",
686 "gt_r12_"
687 "0xb000000a"},
688 {{eq, r11, 0x2ac00000},
689 false,
690 al,
691 "eq r11 0x2ac00000",
692 "eq_r11_"
693 "0x2ac00000"},
694 {{hi, r0, 0xc000003f}, false, al, "hi r0 0xc000003f", "hi_r0_0xc000003f"},
695 {{cs, r12, 0xac000002},
696 false,
697 al,
698 "cs r12 0xac000002",
699 "cs_r12_"
700 "0xac000002"},
701 {{hi, r9, 0x3fc00000}, false, al, "hi r9 0x3fc00000", "hi_r9_0x3fc00000"},
702 {{vs, r2, 0x00002ac0}, false, al, "vs r2 0x00002ac0", "vs_r2_0x00002ac0"},
703 {{al, r12, 0xb000000a},
704 false,
705 al,
706 "al r12 0xb000000a",
707 "al_r12_"
708 "0xb000000a"},
709 {{gt, r12, 0x3fc00000},
710 false,
711 al,
712 "gt r12 0x3fc00000",
713 "gt_r12_"
714 "0x3fc00000"},
715 {{gt, r6, 0xf000000f}, false, al, "gt r6 0xf000000f", "gt_r6_0xf000000f"},
716 {{vc, r14, 0x000000ff},
717 false,
718 al,
719 "vc r14 0x000000ff",
720 "vc_r14_"
721 "0x000000ff"},
722 {{pl, r7, 0x0002ac00}, false, al, "pl r7 0x0002ac00", "pl_r7_0x0002ac00"},
723 {{ge, r1, 0x03fc0000}, false, al, "ge r1 0x03fc0000", "ge_r1_0x03fc0000"},
724 {{hi, r10, 0x0002ac00},
725 false,
726 al,
727 "hi r10 0x0002ac00",
728 "hi_r10_"
729 "0x0002ac00"},
730 {{gt, r4, 0x002ac000}, false, al, "gt r4 0x002ac000", "gt_r4_0x002ac000"},
731 {{vc, r5, 0x000000ff}, false, al, "vc r5 0x000000ff", "vc_r5_0x000000ff"},
732 {{pl, r15, 0x0000ab00},
733 false,
734 al,
735 "pl r15 0x0000ab00",
736 "pl_r15_"
737 "0x0000ab00"},
738 {{cc, r4, 0x00ab0000}, false, al, "cc r4 0x00ab0000", "cc_r4_0x00ab0000"},
739 {{pl, r11, 0xff000000},
740 false,
741 al,
742 "pl r11 0xff000000",
743 "pl_r11_"
744 "0xff000000"},
745 {{pl, r2, 0xf000000f}, false, al, "pl r2 0xf000000f", "pl_r2_0xf000000f"},
746 {{cc, r8, 0xb000000a}, false, al, "cc r8 0xb000000a", "cc_r8_0xb000000a"},
747 {{al, r13, 0x000000ff},
748 false,
749 al,
750 "al r13 0x000000ff",
751 "al_r13_"
752 "0x000000ff"},
753 {{mi, r6, 0x000003fc}, false, al, "mi r6 0x000003fc", "mi_r6_0x000003fc"},
754 {{vs, r13, 0x02ac0000},
755 false,
756 al,
757 "vs r13 0x02ac0000",
758 "vs_r13_"
759 "0x02ac0000"},
760 {{mi, r4, 0x00ff0000}, false, al, "mi r4 0x00ff0000", "mi_r4_0x00ff0000"},
761 {{cs, r3, 0x000003fc}, false, al, "cs r3 0x000003fc", "cs_r3_0x000003fc"},
762 {{pl, r13, 0xab000000},
763 false,
764 al,
765 "pl r13 0xab000000",
766 "pl_r13_"
767 "0xab000000"},
768 {{ls, r9, 0x002ac000}, false, al, "ls r9 0x002ac000", "ls_r9_0x002ac000"},
769 {{eq, r1, 0xc000002a}, false, al, "eq r1 0xc000002a", "eq_r1_0xc000002a"},
770 {{lt, r12, 0x00000000},
771 false,
772 al,
773 "lt r12 0x00000000",
774 "lt_r12_"
775 "0x00000000"},
776 {{ge, r14, 0xff000000},
777 false,
778 al,
779 "ge r14 0xff000000",
780 "ge_r14_"
781 "0xff000000"},
782 {{lt, r9, 0x002ac000}, false, al, "lt r9 0x002ac000", "lt_r9_0x002ac000"},
783 {{lt, r10, 0x00000ff0},
784 false,
785 al,
786 "lt r10 0x00000ff0",
787 "lt_r10_"
788 "0x00000ff0"},
789 {{vs, r5, 0x000000ff}, false, al, "vs r5 0x000000ff", "vs_r5_0x000000ff"},
790 {{cc, r12, 0x03fc0000},
791 false,
792 al,
793 "cc r12 0x03fc0000",
794 "cc_r12_"
795 "0x03fc0000"},
796 {{ne, r4, 0x00000000}, false, al, "ne r4 0x00000000", "ne_r4_0x00000000"},
797 {{mi, r13, 0xff000000},
798 false,
799 al,
800 "mi r13 0xff000000",
801 "mi_r13_"
802 "0xff000000"},
803 {{ne, r7, 0x00000ff0}, false, al, "ne r7 0x00000ff0", "ne_r7_0x00000ff0"},
804 {{vs, r2, 0xc000003f}, false, al, "vs r2 0xc000003f", "vs_r2_0xc000003f"},
805 {{al, r5, 0x00ff0000}, false, al, "al r5 0x00ff0000", "al_r5_0x00ff0000"},
806 {{hi, r15, 0x00000ff0},
807 false,
808 al,
809 "hi r15 0x00000ff0",
810 "hi_r15_"
811 "0x00000ff0"},
812 {{ls, r8, 0x00003fc0}, false, al, "ls r8 0x00003fc0", "ls_r8_0x00003fc0"},
813 {{vs, r0, 0xff000000}, false, al, "vs r0 0xff000000", "vs_r0_0xff000000"},
814 {{vs, r6, 0x000000ab}, false, al, "vs r6 0x000000ab", "vs_r6_0x000000ab"},
815 {{cs, r9, 0x00ab0000}, false, al, "cs r9 0x00ab0000", "cs_r9_0x00ab0000"},
816 {{hi, r1, 0x0002ac00}, false, al, "hi r1 0x0002ac00", "hi_r1_0x0002ac00"},
817 {{hi, r15, 0x2ac00000},
818 false,
819 al,
820 "hi r15 0x2ac00000",
821 "hi_r15_"
822 "0x2ac00000"},
823 {{hi, r6, 0x0002ac00}, false, al, "hi r6 0x0002ac00", "hi_r6_0x0002ac00"},
824 {{ge, r4, 0xc000003f}, false, al, "ge r4 0xc000003f", "ge_r4_0xc000003f"},
825 {{ls, r10, 0x0000ff00},
826 false,
827 al,
828 "ls r10 0x0000ff00",
829 "ls_r10_"
830 "0x0000ff00"},
831 {{ne, r11, 0x000003fc},
832 false,
833 al,
834 "ne r11 0x000003fc",
835 "ne_r11_"
836 "0x000003fc"},
837 {{ls, r3, 0x0002ac00}, false, al, "ls r3 0x0002ac00", "ls_r3_0x0002ac00"},
838 {{al, r12, 0x000003fc},
839 false,
840 al,
841 "al r12 0x000003fc",
842 "al_r12_"
843 "0x000003fc"},
844 {{le, r7, 0xf000000f}, false, al, "le r7 0xf000000f", "le_r7_0xf000000f"},
845 {{al, r11, 0x00000ab0},
846 false,
847 al,
848 "al r11 0x00000ab0",
849 "al_r11_"
850 "0x00000ab0"},
851 {{cs, r13, 0x02ac0000},
852 false,
853 al,
854 "cs r13 0x02ac0000",
855 "cs_r13_"
856 "0x02ac0000"},
857 {{hi, r1, 0x00000ff0}, false, al, "hi r1 0x00000ff0", "hi_r1_0x00000ff0"},
858 {{le, r11, 0x3fc00000},
859 false,
860 al,
861 "le r11 0x3fc00000",
862 "le_r11_"
863 "0x3fc00000"},
864 {{hi, r9, 0x000003fc}, false, al, "hi r9 0x000003fc", "hi_r9_0x000003fc"},
865 {{mi, r13, 0x000002ac},
866 false,
867 al,
868 "mi r13 0x000002ac",
869 "mi_r13_"
870 "0x000002ac"},
871 {{lt, r12, 0x000003fc},
872 false,
873 al,
874 "lt r12 0x000003fc",
875 "lt_r12_"
876 "0x000003fc"},
877 {{lt, r14, 0x00000ab0},
878 false,
879 al,
880 "lt r14 0x00000ab0",
881 "lt_r14_"
882 "0x00000ab0"},
883 {{gt, r1, 0x3fc00000}, false, al, "gt r1 0x3fc00000", "gt_r1_0x3fc00000"},
884 {{cc, r14, 0xb000000a},
885 false,
886 al,
887 "cc r14 0xb000000a",
888 "cc_r14_"
889 "0xb000000a"},
890 {{ge, r0, 0x000002ac}, false, al, "ge r0 0x000002ac", "ge_r0_0x000002ac"},
891 {{eq, r12, 0x000003fc},
892 false,
893 al,
894 "eq r12 0x000003fc",
895 "eq_r12_"
896 "0x000003fc"},
897 {{vc, r13, 0x0ab00000},
898 false,
899 al,
900 "vc r13 0x0ab00000",
901 "vc_r13_"
902 "0x0ab00000"},
903 {{pl, r10, 0x0003fc00},
904 false,
905 al,
906 "pl r10 0x0003fc00",
907 "pl_r10_"
908 "0x0003fc00"},
909 {{le, r7, 0x0000ff00}, false, al, "le r7 0x0000ff00", "le_r7_0x0000ff00"},
910 {{eq, r5, 0x0003fc00}, false, al, "eq r5 0x0003fc00", "eq_r5_0x0003fc00"},
911 {{pl, r1, 0xfc000003}, false, al, "pl r1 0xfc000003", "pl_r1_0xfc000003"},
912 {{gt, r15, 0x000ff000},
913 false,
914 al,
915 "gt r15 0x000ff000",
916 "gt_r15_"
917 "0x000ff000"},
918 {{mi, r2, 0xb000000a}, false, al, "mi r2 0xb000000a", "mi_r2_0xb000000a"},
919 {{cs, r8, 0x0000ff00}, false, al, "cs r8 0x0000ff00", "cs_r8_0x0000ff00"},
920 {{vs, r8, 0x00002ac0}, false, al, "vs r8 0x00002ac0", "vs_r8_0x00002ac0"},
921 {{cs, r5, 0x00ab0000}, false, al, "cs r5 0x00ab0000", "cs_r5_0x00ab0000"},
922 {{pl, r3, 0x00ab0000}, false, al, "pl r3 0x00ab0000", "pl_r3_0x00ab0000"},
923 {{hi, r5, 0x02ac0000}, false, al, "hi r5 0x02ac0000", "hi_r5_0x02ac0000"},
924 {{cc, r9, 0x000002ac}, false, al, "cc r9 0x000002ac", "cc_r9_0x000002ac"},
925 {{ls, r13, 0x0000ab00},
926 false,
927 al,
928 "ls r13 0x0000ab00",
929 "ls_r13_"
930 "0x0000ab00"},
931 {{pl, r11, 0x00000ab0},
932 false,
933 al,
934 "pl r11 0x00000ab0",
935 "pl_r11_"
936 "0x00000ab0"},
937 {{ge, r14, 0x3fc00000},
938 false,
939 al,
940 "ge r14 0x3fc00000",
941 "ge_r14_"
942 "0x3fc00000"},
943 {{al, r14, 0x0000ab00},
944 false,
945 al,
946 "al r14 0x0000ab00",
947 "al_r14_"
948 "0x0000ab00"},
949 {{lt, r6, 0xac000002}, false, al, "lt r6 0xac000002", "lt_r6_0xac000002"},
950 {{vc, r3, 0x000ff000}, false, al, "vc r3 0x000ff000", "vc_r3_0x000ff000"},
951 {{ne, r8, 0xfc000003}, false, al, "ne r8 0xfc000003", "ne_r8_0xfc000003"},
952 {{cs, r6, 0x000ab000}, false, al, "cs r6 0x000ab000", "cs_r6_0x000ab000"},
953 {{hi, r15, 0x0002ac00},
954 false,
955 al,
956 "hi r15 0x0002ac00",
957 "hi_r15_"
958 "0x0002ac00"},
959 {{pl, r6, 0x00000ff0}, false, al, "pl r6 0x00000ff0", "pl_r6_0x00000ff0"},
960 {{hi, r15, 0x03fc0000},
961 false,
962 al,
963 "hi r15 0x03fc0000",
964 "hi_r15_"
965 "0x03fc0000"},
966 {{cc, r6, 0x0003fc00}, false, al, "cc r6 0x0003fc00", "cc_r6_0x0003fc00"},
967 {{eq, r12, 0x000002ac},
968 false,
969 al,
970 "eq r12 0x000002ac",
971 "eq_r12_"
972 "0x000002ac"},
973 {{ls, r11, 0x02ac0000},
974 false,
975 al,
976 "ls r11 0x02ac0000",
977 "ls_r11_"
978 "0x02ac0000"},
979 {{ge, r13, 0x00ff0000},
980 false,
981 al,
982 "ge r13 0x00ff0000",
983 "ge_r13_"
984 "0x00ff0000"},
985 {{lt, r4, 0x0003fc00}, false, al, "lt r4 0x0003fc00", "lt_r4_0x0003fc00"},
986 {{mi, r0, 0x0000ab00}, false, al, "mi r0 0x0000ab00", "mi_r0_0x0000ab00"},
987 {{lt, r4, 0x000000ab}, false, al, "lt r4 0x000000ab", "lt_r4_0x000000ab"},
988 {{ls, r2, 0xc000003f}, false, al, "ls r2 0xc000003f", "ls_r2_0xc000003f"},
989 {{pl, r1, 0x000000ab}, false, al, "pl r1 0x000000ab", "pl_r1_0x000000ab"},
990 {{ne, r10, 0x0000ff00},
991 false,
992 al,
993 "ne r10 0x0000ff00",
994 "ne_r10_"
995 "0x0000ff00"},
996 {{vc, r15, 0x00000ab0},
997 false,
998 al,
999 "vc r15 0x00000ab0",
1000 "vc_r15_"
1001 "0x00000ab0"},
1002 {{eq, r6, 0x02ac0000}, false, al, "eq r6 0x02ac0000", "eq_r6_0x02ac0000"},
1003 {{cc, r11, 0x00000000},
1004 false,
1005 al,
1006 "cc r11 0x00000000",
1007 "cc_r11_"
1008 "0x00000000"},
1009 {{mi, r7, 0x002ac000}, false, al, "mi r7 0x002ac000", "mi_r7_0x002ac000"},
1010 {{hi, r14, 0xab000000},
1011 false,
1012 al,
1013 "hi r14 0xab000000",
1014 "hi_r14_"
1015 "0xab000000"},
1016 {{vc, r6, 0x0000ff00}, false, al, "vc r6 0x0000ff00", "vc_r6_0x0000ff00"},
1017 {{al, r5, 0x000002ac}, false, al, "al r5 0x000002ac", "al_r5_0x000002ac"},
1018 {{cc, r12, 0x0002ac00},
1019 false,
1020 al,
1021 "cc r12 0x0002ac00",
1022 "cc_r12_"
1023 "0x0002ac00"},
1024 {{cc, r10, 0x000000ab},
1025 false,
1026 al,
1027 "cc r10 0x000000ab",
1028 "cc_r10_"
1029 "0x000000ab"},
1030 {{gt, r5, 0x000002ac}, false, al, "gt r5 0x000002ac", "gt_r5_0x000002ac"},
1031 {{vc, r3, 0x00000000}, false, al, "vc r3 0x00000000", "vc_r3_0x00000000"},
1032 {{gt, r12, 0xac000002},
1033 false,
1034 al,
1035 "gt r12 0xac000002",
1036 "gt_r12_"
1037 "0xac000002"},
1038 {{al, r10, 0x00ab0000},
1039 false,
1040 al,
1041 "al r10 0x00ab0000",
1042 "al_r10_"
1043 "0x00ab0000"},
1044 {{mi, r5, 0x000ff000}, false, al, "mi r5 0x000ff000", "mi_r5_0x000ff000"},
1045 {{pl, r1, 0x00000ff0}, false, al, "pl r1 0x00000ff0", "pl_r1_0x00000ff0"},
1046 {{lt, r7, 0xf000000f}, false, al, "lt r7 0xf000000f", "lt_r7_0xf000000f"},
1047 {{ge, r14, 0x002ac000},
1048 false,
1049 al,
1050 "ge r14 0x002ac000",
1051 "ge_r14_"
1052 "0x002ac000"},
1053 {{cc, r0, 0xac000002}, false, al, "cc r0 0xac000002", "cc_r0_0xac000002"},
1054 {{cs, r2, 0x00000ab0}, false, al, "cs r2 0x00000ab0", "cs_r2_0x00000ab0"},
1055 {{vs, r0, 0x00002ac0}, false, al, "vs r0 0x00002ac0", "vs_r0_0x00002ac0"},
1056 {{le, r10, 0x000ab000},
1057 false,
1058 al,
1059 "le r10 0x000ab000",
1060 "le_r10_"
1061 "0x000ab000"},
1062 {{ge, r9, 0x0003fc00}, false, al, "ge r9 0x0003fc00", "ge_r9_0x0003fc00"},
1063 {{lt, r1, 0x00003fc0}, false, al, "lt r1 0x00003fc0", "lt_r1_0x00003fc0"},
1064 {{ge, r5, 0x000000ff}, false, al, "ge r5 0x000000ff", "ge_r5_0x000000ff"},
1065 {{le, r11, 0x2ac00000},
1066 false,
1067 al,
1068 "le r11 0x2ac00000",
1069 "le_r11_"
1070 "0x2ac00000"},
1071 {{le, r9, 0x002ac000}, false, al, "le r9 0x002ac000", "le_r9_0x002ac000"},
1072 {{hi, r12, 0xf000000f},
1073 false,
1074 al,
1075 "hi r12 0xf000000f",
1076 "hi_r12_"
1077 "0xf000000f"},
1078 {{lt, r3, 0x02ac0000}, false, al, "lt r3 0x02ac0000", "lt_r3_0x02ac0000"},
1079 {{al, r13, 0x2ac00000},
1080 false,
1081 al,
1082 "al r13 0x2ac00000",
1083 "al_r13_"
1084 "0x2ac00000"},
1085 {{vs, r12, 0x00000ab0},
1086 false,
1087 al,
1088 "vs r12 0x00000ab0",
1089 "vs_r12_"
1090 "0x00000ab0"},
1091 {{gt, r3, 0x3fc00000}, false, al, "gt r3 0x3fc00000", "gt_r3_0x3fc00000"},
1092 {{gt, r0, 0x2ac00000}, false, al, "gt r0 0x2ac00000", "gt_r0_0x2ac00000"},
1093 {{eq, r15, 0x000002ac},
1094 false,
1095 al,
1096 "eq r15 0x000002ac",
1097 "eq_r15_"
1098 "0x000002ac"},
1099 {{gt, r1, 0x000ab000}, false, al, "gt r1 0x000ab000", "gt_r1_0x000ab000"},
1100 {{gt, r2, 0x2ac00000}, false, al, "gt r2 0x2ac00000", "gt_r2_0x2ac00000"},
1101 {{mi, r15, 0x00ab0000},
1102 false,
1103 al,
1104 "mi r15 0x00ab0000",
1105 "mi_r15_"
1106 "0x00ab0000"},
1107 {{mi, r1, 0x000ab000}, false, al, "mi r1 0x000ab000", "mi_r1_0x000ab000"},
1108 {{ge, r12, 0x0ab00000},
1109 false,
1110 al,
1111 "ge r12 0x0ab00000",
1112 "ge_r12_"
1113 "0x0ab00000"},
1114 {{gt, r5, 0x000000ab}, false, al, "gt r5 0x000000ab", "gt_r5_0x000000ab"},
1115 {{gt, r4, 0x00000000}, false, al, "gt r4 0x00000000", "gt_r4_0x00000000"},
1116 {{al, r13, 0xc000003f},
1117 false,
1118 al,
1119 "al r13 0xc000003f",
1120 "al_r13_"
1121 "0xc000003f"},
1122 {{ls, r7, 0xff000000}, false, al, "ls r7 0xff000000", "ls_r7_0xff000000"},
1123 {{vs, r0, 0x00000ff0}, false, al, "vs r0 0x00000ff0", "vs_r0_0x00000ff0"},
1124 {{hi, r9, 0x02ac0000}, false, al, "hi r9 0x02ac0000", "hi_r9_0x02ac0000"},
1125 {{cs, r1, 0xc000002a}, false, al, "cs r1 0xc000002a", "cs_r1_0xc000002a"},
1126 {{hi, r8, 0xf000000f}, false, al, "hi r8 0xf000000f", "hi_r8_0xf000000f"},
1127 {{gt, r1, 0xb000000a}, false, al, "gt r1 0xb000000a", "gt_r1_0xb000000a"},
1128 {{gt, r2, 0x0002ac00}, false, al, "gt r2 0x0002ac00", "gt_r2_0x0002ac00"},
1129 {{vs, r5, 0x000000ab}, false, al, "vs r5 0x000000ab", "vs_r5_0x000000ab"},
1130 {{cc, r12, 0x000ff000},
1131 false,
1132 al,
1133 "cc r12 0x000ff000",
1134 "cc_r12_"
1135 "0x000ff000"},
1136 {{ge, r0, 0x00003fc0}, false, al, "ge r0 0x00003fc0", "ge_r0_0x00003fc0"},
1137 {{ls, r12, 0x00ab0000},
1138 false,
1139 al,
1140 "ls r12 0x00ab0000",
1141 "ls_r12_"
1142 "0x00ab0000"},
1143 {{vs, r4, 0x000003fc}, false, al, "vs r4 0x000003fc", "vs_r4_0x000003fc"},
1144 {{ls, r4, 0x00003fc0}, false, al, "ls r4 0x00003fc0", "ls_r4_0x00003fc0"},
1145 {{eq, r9, 0xb000000a}, false, al, "eq r9 0xb000000a", "eq_r9_0xb000000a"},
1146 {{cs, r9, 0x2ac00000}, false, al, "cs r9 0x2ac00000", "cs_r9_0x2ac00000"},
1147 {{vs, r12, 0x0000ff00},
1148 false,
1149 al,
1150 "vs r12 0x0000ff00",
1151 "vs_r12_"
1152 "0x0000ff00"},
1153 {{vc, r1, 0x0000ff00}, false, al, "vc r1 0x0000ff00", "vc_r1_0x0000ff00"},
1154 {{hi, r12, 0xff000000},
1155 false,
1156 al,
1157 "hi r12 0xff000000",
1158 "hi_r12_"
1159 "0xff000000"},
1160 {{cs, r12, 0x0002ac00},
1161 false,
1162 al,
1163 "cs r12 0x0002ac00",
1164 "cs_r12_"
1165 "0x0002ac00"},
1166 {{mi, r11, 0x03fc0000},
1167 false,
1168 al,
1169 "mi r11 0x03fc0000",
1170 "mi_r11_"
1171 "0x03fc0000"},
1172 {{eq, r2, 0x000ff000}, false, al, "eq r2 0x000ff000", "eq_r2_0x000ff000"},
1173 {{al, r6, 0x00000ff0}, false, al, "al r6 0x00000ff0", "al_r6_0x00000ff0"},
1174 {{cs, r7, 0x000003fc}, false, al, "cs r7 0x000003fc", "cs_r7_0x000003fc"},
1175 {{pl, r11, 0xb000000a},
1176 false,
1177 al,
1178 "pl r11 0xb000000a",
1179 "pl_r11_"
1180 "0xb000000a"},
1181 {{ne, r15, 0x000ff000},
1182 false,
1183 al,
1184 "ne r15 0x000ff000",
1185 "ne_r15_"
1186 "0x000ff000"},
1187 {{mi, r14, 0x00ab0000},
1188 false,
1189 al,
1190 "mi r14 0x00ab0000",
1191 "mi_r14_"
1192 "0x00ab0000"},
1193 {{hi, r4, 0x0000ff00}, false, al, "hi r4 0x0000ff00", "hi_r4_0x0000ff00"},
1194 {{ge, r1, 0x000002ac}, false, al, "ge r1 0x000002ac", "ge_r1_0x000002ac"},
1195 {{gt, r7, 0xb000000a}, false, al, "gt r7 0xb000000a", "gt_r7_0xb000000a"},
1196 {{gt, r2, 0x00000000}, false, al, "gt r2 0x00000000", "gt_r2_0x00000000"},
1197 {{cc, r2, 0xb000000a}, false, al, "cc r2 0xb000000a", "cc_r2_0xb000000a"},
1198 {{vs, r14, 0x000ab000},
1199 false,
1200 al,
1201 "vs r14 0x000ab000",
1202 "vs_r14_"
1203 "0x000ab000"},
1204 {{lt, r5, 0x000002ac}, false, al, "lt r5 0x000002ac", "lt_r5_0x000002ac"},
1205 {{cc, r13, 0x0000ff00},
1206 false,
1207 al,
1208 "cc r13 0x0000ff00",
1209 "cc_r13_"
1210 "0x0000ff00"},
1211 {{hi, r15, 0x000002ac},
1212 false,
1213 al,
1214 "hi r15 0x000002ac",
1215 "hi_r15_"
1216 "0x000002ac"},
1217 {{ge, r1, 0x00ff0000}, false, al, "ge r1 0x00ff0000", "ge_r1_0x00ff0000"},
1218 {{lt, r15, 0x00002ac0},
1219 false,
1220 al,
1221 "lt r15 0x00002ac0",
1222 "lt_r15_"
1223 "0x00002ac0"},
1224 {{lt, r8, 0x000ff000}, false, al, "lt r8 0x000ff000", "lt_r8_0x000ff000"},
1225 {{hi, r10, 0xc000002a},
1226 false,
1227 al,
1228 "hi r10 0xc000002a",
1229 "hi_r10_"
1230 "0xc000002a"},
1231 {{eq, r12, 0x000ab000},
1232 false,
1233 al,
1234 "eq r12 0x000ab000",
1235 "eq_r12_"
1236 "0x000ab000"},
1237 {{vs, r11, 0x00002ac0},
1238 false,
1239 al,
1240 "vs r11 0x00002ac0",
1241 "vs_r11_"
1242 "0x00002ac0"},
1243 {{hi, r10, 0x000003fc},
1244 false,
1245 al,
1246 "hi r10 0x000003fc",
1247 "hi_r10_"
1248 "0x000003fc"},
1249 {{cc, r8, 0x000003fc}, false, al, "cc r8 0x000003fc", "cc_r8_0x000003fc"},
1250 {{vc, r11, 0x00000ab0},
1251 false,
1252 al,
1253 "vc r11 0x00000ab0",
1254 "vc_r11_"
1255 "0x00000ab0"},
1256 {{le, r3, 0xac000002}, false, al, "le r3 0xac000002", "le_r3_0xac000002"},
1257 {{cc, r11, 0xc000002a},
1258 false,
1259 al,
1260 "cc r11 0xc000002a",
1261 "cc_r11_"
1262 "0xc000002a"},
1263 {{lt, r6, 0xab000000}, false, al, "lt r6 0xab000000", "lt_r6_0xab000000"},
1264 {{hi, r1, 0x00003fc0}, false, al, "hi r1 0x00003fc0", "hi_r1_0x00003fc0"},
1265 {{vc, r3, 0x00002ac0}, false, al, "vc r3 0x00002ac0", "vc_r3_0x00002ac0"},
1266 {{vc, r6, 0x00000ab0}, false, al, "vc r6 0x00000ab0", "vc_r6_0x00000ab0"},
1267 {{ls, r6, 0x03fc0000}, false, al, "ls r6 0x03fc0000", "ls_r6_0x03fc0000"},
1268 {{hi, r11, 0x0ab00000},
1269 false,
1270 al,
1271 "hi r11 0x0ab00000",
1272 "hi_r11_"
1273 "0x0ab00000"},
1274 {{lt, r12, 0x0002ac00},
1275 false,
1276 al,
1277 "lt r12 0x0002ac00",
1278 "lt_r12_"
1279 "0x0002ac00"},
1280 {{al, r8, 0xab000000}, false, al, "al r8 0xab000000", "al_r8_0xab000000"},
1281 {{vs, r2, 0x00000ab0}, false, al, "vs r2 0x00000ab0", "vs_r2_0x00000ab0"},
1282 {{hi, r14, 0x02ac0000},
1283 false,
1284 al,
1285 "hi r14 0x02ac0000",
1286 "hi_r14_"
1287 "0x02ac0000"},
1288 {{cs, r3, 0x00000ff0}, false, al, "cs r3 0x00000ff0", "cs_r3_0x00000ff0"},
1289 {{cc, r9, 0xb000000a}, false, al, "cc r9 0xb000000a", "cc_r9_0xb000000a"},
1290 {{vc, r9, 0x00000ff0}, false, al, "vc r9 0x00000ff0", "vc_r9_0x00000ff0"},
1291 {{ne, r9, 0xab000000}, false, al, "ne r9 0xab000000", "ne_r9_0xab000000"},
1292 {{cc, r10, 0xb000000a},
1293 false,
1294 al,
1295 "cc r10 0xb000000a",
1296 "cc_r10_"
1297 "0xb000000a"},
1298 {{ls, r11, 0xb000000a},
1299 false,
1300 al,
1301 "ls r11 0xb000000a",
1302 "ls_r11_"
1303 "0xb000000a"},
1304 {{lt, r11, 0x00ff0000},
1305 false,
1306 al,
1307 "lt r11 0x00ff0000",
1308 "lt_r11_"
1309 "0x00ff0000"},
1310 {{lt, r3, 0x000003fc}, false, al, "lt r3 0x000003fc", "lt_r3_0x000003fc"},
1311 {{gt, r14, 0x00002ac0},
1312 false,
1313 al,
1314 "gt r14 0x00002ac0",
1315 "gt_r14_"
1316 "0x00002ac0"},
1317 {{ls, r8, 0xc000003f}, false, al, "ls r8 0xc000003f", "ls_r8_0xc000003f"},
1318 {{al, r11, 0x000ab000},
1319 false,
1320 al,
1321 "al r11 0x000ab000",
1322 "al_r11_"
1323 "0x000ab000"},
1324 {{lt, r7, 0x000ab000}, false, al, "lt r7 0x000ab000", "lt_r7_0x000ab000"},
1325 {{vs, r14, 0xff000000},
1326 false,
1327 al,
1328 "vs r14 0xff000000",
1329 "vs_r14_"
1330 "0xff000000"},
1331 {{vc, r2, 0xab000000}, false, al, "vc r2 0xab000000", "vc_r2_0xab000000"},
1332 {{ne, r3, 0x00000ff0}, false, al, "ne r3 0x00000ff0", "ne_r3_0x00000ff0"},
1333 {{ne, r15, 0x02ac0000},
1334 false,
1335 al,
1336 "ne r15 0x02ac0000",
1337 "ne_r15_"
1338 "0x02ac0000"},
1339 {{gt, r3, 0x000ff000}, false, al, "gt r3 0x000ff000", "gt_r3_0x000ff000"},
1340 {{pl, r1, 0x2ac00000}, false, al, "pl r1 0x2ac00000", "pl_r1_0x2ac00000"},
1341 {{mi, r1, 0x00002ac0}, false, al, "mi r1 0x00002ac0", "mi_r1_0x00002ac0"},
1342 {{vc, r6, 0xac000002}, false, al, "vc r6 0xac000002", "vc_r6_0xac000002"},
1343 {{vs, r2, 0x0ff00000}, false, al, "vs r2 0x0ff00000", "vs_r2_0x0ff00000"},
1344 {{ge, r2, 0x000003fc}, false, al, "ge r2 0x000003fc", "ge_r2_0x000003fc"},
1345 {{cs, r15, 0x0000ff00},
1346 false,
1347 al,
1348 "cs r15 0x0000ff00",
1349 "cs_r15_"
1350 "0x0000ff00"},
1351 {{lt, r3, 0x000002ac}, false, al, "lt r3 0x000002ac", "lt_r3_0x000002ac"},
1352 {{cs, r6, 0xff000000}, false, al, "cs r6 0xff000000", "cs_r6_0xff000000"},
1353 {{ge, r14, 0x000000ff},
1354 false,
1355 al,
1356 "ge r14 0x000000ff",
1357 "ge_r14_"
1358 "0x000000ff"},
1359 {{gt, r7, 0x03fc0000}, false, al, "gt r7 0x03fc0000", "gt_r7_0x03fc0000"},
1360 {{ne, r8, 0x000ff000}, false, al, "ne r8 0x000ff000", "ne_r8_0x000ff000"},
1361 {{gt, r14, 0xc000002a},
1362 false,
1363 al,
1364 "gt r14 0xc000002a",
1365 "gt_r14_"
1366 "0xc000002a"},
1367 {{hi, r12, 0x0000ff00},
1368 false,
1369 al,
1370 "hi r12 0x0000ff00",
1371 "hi_r12_"
1372 "0x0000ff00"},
1373 {{le, r15, 0x00003fc0},
1374 false,
1375 al,
1376 "le r15 0x00003fc0",
1377 "le_r15_"
1378 "0x00003fc0"},
1379 {{eq, r13, 0x000ab000},
1380 false,
1381 al,
1382 "eq r13 0x000ab000",
1383 "eq_r13_"
1384 "0x000ab000"},
1385 {{vc, r7, 0x000ab000}, false, al, "vc r7 0x000ab000", "vc_r7_0x000ab000"},
1386 {{gt, r7, 0xf000000f}, false, al, "gt r7 0xf000000f", "gt_r7_0xf000000f"},
1387 {{cc, r6, 0xac000002}, false, al, "cc r6 0xac000002", "cc_r6_0xac000002"},
1388 {{cs, r14, 0x000000ff},
1389 false,
1390 al,
1391 "cs r14 0x000000ff",
1392 "cs_r14_"
1393 "0x000000ff"},
1394 {{ne, r2, 0x0003fc00}, false, al, "ne r2 0x0003fc00", "ne_r2_0x0003fc00"},
1395 {{vs, r1, 0x002ac000}, false, al, "vs r1 0x002ac000", "vs_r1_0x002ac000"},
1396 {{eq, r8, 0x002ac000}, false, al, "eq r8 0x002ac000", "eq_r8_0x002ac000"},
1397 {{lt, r8, 0x0000ff00}, false, al, "lt r8 0x0000ff00", "lt_r8_0x0000ff00"},
1398 {{vs, r9, 0xc000003f}, false, al, "vs r9 0xc000003f", "vs_r9_0xc000003f"},
1399 {{mi, r11, 0xff000000},
1400 false,
1401 al,
1402 "mi r11 0xff000000",
1403 "mi_r11_"
1404 "0xff000000"},
1405 {{cs, r12, 0x03fc0000},
1406 false,
1407 al,
1408 "cs r12 0x03fc0000",
1409 "cs_r12_"
1410 "0x03fc0000"},
1411 {{lt, r5, 0xc000002a}, false, al, "lt r5 0xc000002a", "lt_r5_0xc000002a"},
1412 {{vc, r6, 0x000000ab}, false, al, "vc r6 0x000000ab", "vc_r6_0x000000ab"},
1413 {{ls, r10, 0x0ab00000},
1414 false,
1415 al,
1416 "ls r10 0x0ab00000",
1417 "ls_r10_"
1418 "0x0ab00000"},
1419 {{al, r11, 0x00ff0000},
1420 false,
1421 al,
1422 "al r11 0x00ff0000",
1423 "al_r11_"
1424 "0x00ff0000"},
1425 {{hi, r13, 0x00000ab0},
1426 false,
1427 al,
1428 "hi r13 0x00000ab0",
1429 "hi_r13_"
1430 "0x00000ab0"},
1431 {{ls, r0, 0xab000000}, false, al, "ls r0 0xab000000", "ls_r0_0xab000000"},
1432 {{le, r5, 0xab000000}, false, al, "le r5 0xab000000", "le_r5_0xab000000"},
1433 {{vs, r4, 0x00ff0000}, false, al, "vs r4 0x00ff0000", "vs_r4_0x00ff0000"},
1434 {{al, r10, 0x03fc0000},
1435 false,
1436 al,
1437 "al r10 0x03fc0000",
1438 "al_r10_"
1439 "0x03fc0000"},
1440 {{al, r8, 0x000003fc}, false, al, "al r8 0x000003fc", "al_r8_0x000003fc"},
1441 {{vs, r11, 0xab000000},
1442 false,
1443 al,
1444 "vs r11 0xab000000",
1445 "vs_r11_"
1446 "0xab000000"},
1447 {{eq, r2, 0x00000ff0}, false, al, "eq r2 0x00000ff0", "eq_r2_0x00000ff0"},
1448 {{vc, r4, 0x00000ff0}, false, al, "vc r4 0x00000ff0", "vc_r4_0x00000ff0"},
1449 {{vc, r9, 0x00002ac0}, false, al, "vc r9 0x00002ac0", "vc_r9_0x00002ac0"},
1450 {{cc, r11, 0x00ff0000},
1451 false,
1452 al,
1453 "cc r11 0x00ff0000",
1454 "cc_r11_"
1455 "0x00ff0000"},
1456 {{cc, r13, 0x00ff0000},
1457 false,
1458 al,
1459 "cc r13 0x00ff0000",
1460 "cc_r13_"
1461 "0x00ff0000"},
1462 {{pl, r0, 0x00000ab0}, false, al, "pl r0 0x00000ab0", "pl_r0_0x00000ab0"},
1463 {{al, r2, 0x02ac0000}, false, al, "al r2 0x02ac0000", "al_r2_0x02ac0000"},
1464 {{hi, r11, 0xc000002a},
1465 false,
1466 al,
1467 "hi r11 0xc000002a",
1468 "hi_r11_"
1469 "0xc000002a"},
1470 {{ne, r3, 0xf000000f}, false, al, "ne r3 0xf000000f", "ne_r3_0xf000000f"},
1471 {{cc, r15, 0x0ab00000},
1472 false,
1473 al,
1474 "cc r15 0x0ab00000",
1475 "cc_r15_"
1476 "0x0ab00000"},
1477 {{ge, r12, 0x00ff0000},
1478 false,
1479 al,
1480 "ge r12 0x00ff0000",
1481 "ge_r12_"
1482 "0x00ff0000"},
1483 {{le, r12, 0x002ac000},
1484 false,
1485 al,
1486 "le r12 0x002ac000",
1487 "le_r12_"
1488 "0x002ac000"},
1489 {{mi, r12, 0xc000003f},
1490 false,
1491 al,
1492 "mi r12 0xc000003f",
1493 "mi_r12_"
1494 "0xc000003f"},
1495 {{lt, r0, 0xfc000003}, false, al, "lt r0 0xfc000003", "lt_r0_0xfc000003"},
1496 {{vc, r15, 0x000ab000},
1497 false,
1498 al,
1499 "vc r15 0x000ab000",
1500 "vc_r15_"
1501 "0x000ab000"},
1502 {{pl, r5, 0x3fc00000}, false, al, "pl r5 0x3fc00000", "pl_r5_0x3fc00000"},
1503 {{vs, r15, 0x00ab0000},
1504 false,
1505 al,
1506 "vs r15 0x00ab0000",
1507 "vs_r15_"
1508 "0x00ab0000"},
1509 {{hi, r3, 0x00ff0000}, false, al, "hi r3 0x00ff0000", "hi_r3_0x00ff0000"},
1510 {{lt, r8, 0x000000ff}, false, al, "lt r8 0x000000ff", "lt_r8_0x000000ff"},
1511 {{le, r2, 0x000000ff}, false, al, "le r2 0x000000ff", "le_r2_0x000000ff"},
1512 {{vs, r0, 0x0002ac00}, false, al, "vs r0 0x0002ac00", "vs_r0_0x0002ac00"},
1513 {{vs, r2, 0xff000000}, false, al, "vs r2 0xff000000", "vs_r2_0xff000000"},
1514 {{pl, r6, 0xab000000}, false, al, "pl r6 0xab000000", "pl_r6_0xab000000"},
1515 {{ls, r4, 0x3fc00000}, false, al, "ls r4 0x3fc00000", "ls_r4_0x3fc00000"},
1516 {{ls, r3, 0x000ab000}, false, al, "ls r3 0x000ab000", "ls_r3_0x000ab000"},
1517 {{eq, r11, 0x000ab000},
1518 false,
1519 al,
1520 "eq r11 0x000ab000",
1521 "eq_r11_"
1522 "0x000ab000"},
1523 {{vc, r6, 0x03fc0000}, false, al, "vc r6 0x03fc0000", "vc_r6_0x03fc0000"},
1524 {{mi, r14, 0x0000ab00},
1525 false,
1526 al,
1527 "mi r14 0x0000ab00",
1528 "mi_r14_"
1529 "0x0000ab00"},
1530 {{pl, r8, 0xab000000}, false, al, "pl r8 0xab000000", "pl_r8_0xab000000"},
1531 {{pl, r8, 0xc000003f}, false, al, "pl r8 0xc000003f", "pl_r8_0xc000003f"},
1532 {{eq, r14, 0x003fc000},
1533 false,
1534 al,
1535 "eq r14 0x003fc000",
1536 "eq_r14_"
1537 "0x003fc000"},
1538 {{vs, r9, 0x00ff0000}, false, al, "vs r9 0x00ff0000", "vs_r9_0x00ff0000"},
1539 {{vs, r1, 0x00002ac0}, false, al, "vs r1 0x00002ac0", "vs_r1_0x00002ac0"},
1540 {{le, r1, 0x00ff0000}, false, al, "le r1 0x00ff0000", "le_r1_0x00ff0000"},
1541 {{lt, r7, 0x000ff000}, false, al, "lt r7 0x000ff000", "lt_r7_0x000ff000"},
1542 {{mi, r6, 0x002ac000}, false, al, "mi r6 0x002ac000", "mi_r6_0x002ac000"},
1543 {{vc, r11, 0xc000003f},
1544 false,
1545 al,
1546 "vc r11 0xc000003f",
1547 "vc_r11_"
1548 "0xc000003f"},
1549 {{lt, r4, 0x00000000}, false, al, "lt r4 0x00000000", "lt_r4_0x00000000"},
1550 {{pl, r0, 0xac000002}, false, al, "pl r0 0xac000002", "pl_r0_0xac000002"},
1551 {{ls, r10, 0xc000003f},
1552 false,
1553 al,
1554 "ls r10 0xc000003f",
1555 "ls_r10_"
1556 "0xc000003f"},
1557 {{cc, r15, 0xc000002a},
1558 false,
1559 al,
1560 "cc r15 0xc000002a",
1561 "cc_r15_0xc000002a"}};
1562
1563 // These headers each contain an array of `TestResult` with the reference output
1564 // values. The reference arrays are names `kReference{mnemonic}`.
1565 #include "aarch32/traces/assembler-cond-rd-operand-const-can-use-pc-cmn-a32.h"
1566 #include "aarch32/traces/assembler-cond-rd-operand-const-can-use-pc-cmp-a32.h"
1567 #include "aarch32/traces/assembler-cond-rd-operand-const-can-use-pc-teq-a32.h"
1568 #include "aarch32/traces/assembler-cond-rd-operand-const-can-use-pc-tst-a32.h"
1569
1570
1571 // The maximum number of errors to report in detail for each test.
1572 const unsigned kErrorReportLimit = 8;
1573
1574 typedef void (MacroAssembler::*Fn)(Condition cond,
1575 Register rd,
1576 const Operand& op);
1577
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])1578 void TestHelper(Fn instruction,
1579 const char* mnemonic,
1580 const TestResult reference[]) {
1581 unsigned total_error_count = 0;
1582 MacroAssembler masm(BUF_SIZE);
1583
1584 masm.UseA32();
1585
1586 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1587 // Values to pass to the macro-assembler.
1588 Condition cond = kTests[i].operands.cond;
1589 Register rd = kTests[i].operands.rd;
1590 uint32_t immediate = kTests[i].operands.immediate;
1591 Operand op(immediate);
1592
1593 int32_t start = masm.GetCursorOffset();
1594 {
1595 // We never generate more that 4 bytes, as IT instructions are only
1596 // allowed for narrow encodings.
1597 ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
1598 if (kTests[i].in_it_block) {
1599 masm.it(kTests[i].it_condition);
1600 }
1601 (masm.*instruction)(cond, rd, op);
1602 }
1603 int32_t end = masm.GetCursorOffset();
1604
1605 const byte* result_ptr =
1606 masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
1607 VIXL_ASSERT(start < end);
1608 uint32_t result_size = end - start;
1609
1610 if (Test::generate_test_trace()) {
1611 // Print the result bytes.
1612 printf("const byte kInstruction_%s_%s[] = {\n",
1613 mnemonic,
1614 kTests[i].identifier);
1615 for (uint32_t j = 0; j < result_size; j++) {
1616 if (j == 0) {
1617 printf(" 0x%02" PRIx8, result_ptr[j]);
1618 } else {
1619 printf(", 0x%02" PRIx8, result_ptr[j]);
1620 }
1621 }
1622 // This comment is meant to be used by external tools to validate
1623 // the encoding. We can parse the comment to figure out what
1624 // instruction this corresponds to.
1625 if (kTests[i].in_it_block) {
1626 printf(" // It %s; %s %s\n};\n",
1627 kTests[i].it_condition.GetName(),
1628 mnemonic,
1629 kTests[i].operands_description);
1630 } else {
1631 printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
1632 }
1633 } else {
1634 // Check we've emitted the exact same encoding as present in the
1635 // trace file. Only print up to `kErrorReportLimit` errors.
1636 if (((result_size != reference[i].size) ||
1637 (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
1638 0)) &&
1639 (++total_error_count <= kErrorReportLimit)) {
1640 printf("Error when testing \"%s\" with operands \"%s\":\n",
1641 mnemonic,
1642 kTests[i].operands_description);
1643 printf(" Expected: ");
1644 for (uint32_t j = 0; j < reference[i].size; j++) {
1645 if (j == 0) {
1646 printf("0x%02" PRIx8, reference[i].encoding[j]);
1647 } else {
1648 printf(", 0x%02" PRIx8, reference[i].encoding[j]);
1649 }
1650 }
1651 printf("\n");
1652 printf(" Found: ");
1653 for (uint32_t j = 0; j < result_size; j++) {
1654 if (j == 0) {
1655 printf("0x%02" PRIx8, result_ptr[j]);
1656 } else {
1657 printf(", 0x%02" PRIx8, result_ptr[j]);
1658 }
1659 }
1660 printf("\n");
1661 }
1662 }
1663 }
1664
1665 masm.FinalizeCode();
1666
1667 if (Test::generate_test_trace()) {
1668 // Finalize the trace file by writing the final `TestResult` array
1669 // which links all generated instruction encodings.
1670 printf("const TestResult kReference%s[] = {\n", mnemonic);
1671 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1672 printf(" {\n");
1673 printf(" ARRAY_SIZE(kInstruction_%s_%s),\n",
1674 mnemonic,
1675 kTests[i].identifier);
1676 printf(" kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
1677 printf(" },\n");
1678 }
1679 printf("};\n");
1680 } else {
1681 if (total_error_count > kErrorReportLimit) {
1682 printf("%u other errors follow.\n",
1683 total_error_count - kErrorReportLimit);
1684 }
1685 // Crash if the test failed.
1686 VIXL_CHECK(total_error_count == 0);
1687 }
1688 }
1689
1690 // Instantiate tests for each instruction in the list.
1691 #define TEST(mnemonic) \
1692 void Test_##mnemonic() { \
1693 TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
1694 } \
1695 Test test_##mnemonic( \
1696 "AARCH32_ASSEMBLER_COND_RD_OPERAND_CONST_CAN_USE_PC_" #mnemonic "_A32", \
1697 &Test_##mnemonic);
1698 FOREACH_INSTRUCTION(TEST)
1699 #undef TEST
1700
1701 } // namespace
1702 #endif
1703
1704 } // namespace aarch32
1705 } // namespace vixl
1706