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(adc) \
53 M(adcs) \
54 M(add) \
55 M(adds) \
56 M(and_) \
57 M(ands) \
58 M(bic) \
59 M(bics) \
60 M(eor) \
61 M(eors) \
62 M(orr) \
63 M(orrs) \
64 M(rsb) \
65 M(rsbs) \
66 M(rsc) \
67 M(rscs) \
68 M(sbc) \
69 M(sbcs) \
70 M(sub) \
71 M(subs)
72
73
74 // The following definitions are defined again in each generated test, therefore
75 // we need to place them in an anomymous namespace. It expresses that they are
76 // local to this file only, and the compiler is not allowed to share these types
77 // across test files during template instantiation. Specifically, `Operands` has
78 // various layouts across generated tests so it absolutely cannot be shared.
79
80 #ifdef VIXL_INCLUDE_TARGET_A32
81 namespace {
82
83 // Values to be passed to the assembler to produce the instruction under test.
84 struct Operands {
85 Condition cond;
86 Register rd;
87 Register rn;
88 uint32_t immediate;
89 };
90
91 // This structure contains all data needed to test one specific
92 // instruction.
93 struct TestData {
94 // The `operands` field represents what to pass to the assembler to
95 // produce the instruction.
96 Operands operands;
97 // True if we need to generate an IT instruction for this test to be valid.
98 bool in_it_block;
99 // The condition to give the IT instruction, this will be set to "al" by
100 // default.
101 Condition it_condition;
102 // Description of the operands, used for error reporting.
103 const char* operands_description;
104 // Unique identifier, used for generating traces.
105 const char* identifier;
106 };
107
108 struct TestResult {
109 size_t size;
110 const byte* encoding;
111 };
112
113 // Each element of this array produce one instruction encoding.
114 const TestData kTests[] = {{{le, r9, r4, 0x03fc0000},
115 false,
116 al,
117 "le r9 r4 0x03fc0000",
118 "le_r9_r4_0x03fc0000"},
119 {{pl, r14, r3, 0x0003fc00},
120 false,
121 al,
122 "pl r14 r3 0x0003fc00",
123 "pl_r14_r3_0x0003fc00"},
124 {{cc, r1, r6, 0x3fc00000},
125 false,
126 al,
127 "cc r1 r6 0x3fc00000",
128 "cc_r1_r6_0x3fc00000"},
129 {{cc, r5, r1, 0x02ac0000},
130 false,
131 al,
132 "cc r5 r1 0x02ac0000",
133 "cc_r5_r1_0x02ac0000"},
134 {{pl, r14, r4, 0xb000000a},
135 false,
136 al,
137 "pl r14 r4 0xb000000a",
138 "pl_r14_r4_0xb000000a"},
139 {{cs, r2, r13, 0x0003fc00},
140 false,
141 al,
142 "cs r2 r13 0x0003fc00",
143 "cs_r2_r13_0x0003fc00"},
144 {{mi, r13, r0, 0x2ac00000},
145 false,
146 al,
147 "mi r13 r0 0x2ac00000",
148 "mi_r13_r0_0x2ac00000"},
149 {{vc, r0, r0, 0x000ff000},
150 false,
151 al,
152 "vc r0 r0 0x000ff000",
153 "vc_r0_r0_0x000ff000"},
154 {{vs, r2, r9, 0x00000ff0},
155 false,
156 al,
157 "vs r2 r9 0x00000ff0",
158 "vs_r2_r9_0x00000ff0"},
159 {{cc, r15, r7, 0x000000ff},
160 false,
161 al,
162 "cc r15 r7 0x000000ff",
163 "cc_r15_r7_0x000000ff"},
164 {{ls, r4, r1, 0x0003fc00},
165 false,
166 al,
167 "ls r4 r1 0x0003fc00",
168 "ls_r4_r1_0x0003fc00"},
169 {{gt, r13, r11, 0x3fc00000},
170 false,
171 al,
172 "gt r13 r11 0x3fc00000",
173 "gt_r13_r11_0x3fc00000"},
174 {{hi, r3, r15, 0x2ac00000},
175 false,
176 al,
177 "hi r3 r15 0x2ac00000",
178 "hi_r3_r15_0x2ac00000"},
179 {{ls, r7, r12, 0x02ac0000},
180 false,
181 al,
182 "ls r7 r12 0x02ac0000",
183 "ls_r7_r12_0x02ac0000"},
184 {{cc, r10, r11, 0x00ab0000},
185 false,
186 al,
187 "cc r10 r11 0x00ab0000",
188 "cc_r10_r11_0x00ab0000"},
189 {{mi, r3, r9, 0x03fc0000},
190 false,
191 al,
192 "mi r3 r9 0x03fc0000",
193 "mi_r3_r9_0x03fc0000"},
194 {{gt, r8, r7, 0x000ff000},
195 false,
196 al,
197 "gt r8 r7 0x000ff000",
198 "gt_r8_r7_0x000ff000"},
199 {{ls, r1, r2, 0x00ab0000},
200 false,
201 al,
202 "ls r1 r2 0x00ab0000",
203 "ls_r1_r2_0x00ab0000"},
204 {{al, r12, r5, 0x00002ac0},
205 false,
206 al,
207 "al r12 r5 0x00002ac0",
208 "al_r12_r5_0x00002ac0"},
209 {{eq, r15, r5, 0x000003fc},
210 false,
211 al,
212 "eq r15 r5 0x000003fc",
213 "eq_r15_r5_0x000003fc"},
214 {{hi, r11, r9, 0x000000ab},
215 false,
216 al,
217 "hi r11 r9 0x000000ab",
218 "hi_r11_r9_0x000000ab"},
219 {{cs, r10, r7, 0x00ab0000},
220 false,
221 al,
222 "cs r10 r7 0x00ab0000",
223 "cs_r10_r7_0x00ab0000"},
224 {{gt, r3, r7, 0x02ac0000},
225 false,
226 al,
227 "gt r3 r7 0x02ac0000",
228 "gt_r3_r7_0x02ac0000"},
229 {{le, r0, r0, 0x00ab0000},
230 false,
231 al,
232 "le r0 r0 0x00ab0000",
233 "le_r0_r0_0x00ab0000"},
234 {{hi, r15, r4, 0x000000ab},
235 false,
236 al,
237 "hi r15 r4 0x000000ab",
238 "hi_r15_r4_0x000000ab"},
239 {{cc, r4, r13, 0xab000000},
240 false,
241 al,
242 "cc r4 r13 0xab000000",
243 "cc_r4_r13_0xab000000"},
244 {{al, r12, r2, 0x0ab00000},
245 false,
246 al,
247 "al r12 r2 0x0ab00000",
248 "al_r12_r2_0x0ab00000"},
249 {{cc, r8, r1, 0x000ff000},
250 false,
251 al,
252 "cc r8 r1 0x000ff000",
253 "cc_r8_r1_0x000ff000"},
254 {{le, r1, r1, 0x000ff000},
255 false,
256 al,
257 "le r1 r1 0x000ff000",
258 "le_r1_r1_0x000ff000"},
259 {{gt, r3, r1, 0xff000000},
260 false,
261 al,
262 "gt r3 r1 0xff000000",
263 "gt_r3_r1_0xff000000"},
264 {{ge, r4, r2, 0x3fc00000},
265 false,
266 al,
267 "ge r4 r2 0x3fc00000",
268 "ge_r4_r2_0x3fc00000"},
269 {{cc, r8, r7, 0xac000002},
270 false,
271 al,
272 "cc r8 r7 0xac000002",
273 "cc_r8_r7_0xac000002"},
274 {{vs, r9, r4, 0xb000000a},
275 false,
276 al,
277 "vs r9 r4 0xb000000a",
278 "vs_r9_r4_0xb000000a"},
279 {{cs, r11, r5, 0x000000ab},
280 false,
281 al,
282 "cs r11 r5 0x000000ab",
283 "cs_r11_r5_0x000000ab"},
284 {{eq, r4, r2, 0xb000000a},
285 false,
286 al,
287 "eq r4 r2 0xb000000a",
288 "eq_r4_r2_0xb000000a"},
289 {{lt, r5, r14, 0x000000ab},
290 false,
291 al,
292 "lt r5 r14 0x000000ab",
293 "lt_r5_r14_0x000000ab"},
294 {{cs, r2, r4, 0x0000ab00},
295 false,
296 al,
297 "cs r2 r4 0x0000ab00",
298 "cs_r2_r4_0x0000ab00"},
299 {{hi, r5, r9, 0x003fc000},
300 false,
301 al,
302 "hi r5 r9 0x003fc000",
303 "hi_r5_r9_0x003fc000"},
304 {{al, r0, r2, 0xb000000a},
305 false,
306 al,
307 "al r0 r2 0xb000000a",
308 "al_r0_r2_0xb000000a"},
309 {{le, r13, r0, 0x0ff00000},
310 false,
311 al,
312 "le r13 r0 0x0ff00000",
313 "le_r13_r0_0x0ff00000"},
314 {{eq, r9, r5, 0xb000000a},
315 false,
316 al,
317 "eq r9 r5 0xb000000a",
318 "eq_r9_r5_0xb000000a"},
319 {{cc, r15, r8, 0x00ab0000},
320 false,
321 al,
322 "cc r15 r8 0x00ab0000",
323 "cc_r15_r8_0x00ab0000"},
324 {{ge, r4, r3, 0x003fc000},
325 false,
326 al,
327 "ge r4 r3 0x003fc000",
328 "ge_r4_r3_0x003fc000"},
329 {{hi, r15, r1, 0x000002ac},
330 false,
331 al,
332 "hi r15 r1 0x000002ac",
333 "hi_r15_r1_0x000002ac"},
334 {{al, r10, r8, 0x000002ac},
335 false,
336 al,
337 "al r10 r8 0x000002ac",
338 "al_r10_r8_0x000002ac"},
339 {{al, r3, r5, 0xc000003f},
340 false,
341 al,
342 "al r3 r5 0xc000003f",
343 "al_r3_r5_0xc000003f"},
344 {{cc, r1, r8, 0x000000ff},
345 false,
346 al,
347 "cc r1 r8 0x000000ff",
348 "cc_r1_r8_0x000000ff"},
349 {{vs, r8, r4, 0x003fc000},
350 false,
351 al,
352 "vs r8 r4 0x003fc000",
353 "vs_r8_r4_0x003fc000"},
354 {{vc, r2, r2, 0x003fc000},
355 false,
356 al,
357 "vc r2 r2 0x003fc000",
358 "vc_r2_r2_0x003fc000"},
359 {{hi, r1, r1, 0x03fc0000},
360 false,
361 al,
362 "hi r1 r1 0x03fc0000",
363 "hi_r1_r1_0x03fc0000"},
364 {{cc, r6, r12, 0x00000000},
365 false,
366 al,
367 "cc r6 r12 0x00000000",
368 "cc_r6_r12_0x00000000"},
369 {{hi, r8, r1, 0xc000002a},
370 false,
371 al,
372 "hi r8 r1 0xc000002a",
373 "hi_r8_r1_0xc000002a"},
374 {{ge, r7, r12, 0x003fc000},
375 false,
376 al,
377 "ge r7 r12 0x003fc000",
378 "ge_r7_r12_0x003fc000"},
379 {{gt, r1, r14, 0x02ac0000},
380 false,
381 al,
382 "gt r1 r14 0x02ac0000",
383 "gt_r1_r14_0x02ac0000"},
384 {{eq, r4, r0, 0x0ff00000},
385 false,
386 al,
387 "eq r4 r0 0x0ff00000",
388 "eq_r4_r0_0x0ff00000"},
389 {{vs, r6, r10, 0x00000ab0},
390 false,
391 al,
392 "vs r6 r10 0x00000ab0",
393 "vs_r6_r10_0x00000ab0"},
394 {{eq, r4, r8, 0x03fc0000},
395 false,
396 al,
397 "eq r4 r8 0x03fc0000",
398 "eq_r4_r8_0x03fc0000"},
399 {{lt, r8, r13, 0x002ac000},
400 false,
401 al,
402 "lt r8 r13 0x002ac000",
403 "lt_r8_r13_0x002ac000"},
404 {{mi, r1, r5, 0x000003fc},
405 false,
406 al,
407 "mi r1 r5 0x000003fc",
408 "mi_r1_r5_0x000003fc"},
409 {{ge, r8, r1, 0x00ab0000},
410 false,
411 al,
412 "ge r8 r1 0x00ab0000",
413 "ge_r8_r1_0x00ab0000"},
414 {{al, r0, r8, 0xb000000a},
415 false,
416 al,
417 "al r0 r8 0xb000000a",
418 "al_r0_r8_0xb000000a"},
419 {{cs, r3, r0, 0x0000ff00},
420 false,
421 al,
422 "cs r3 r0 0x0000ff00",
423 "cs_r3_r0_0x0000ff00"},
424 {{le, r14, r6, 0x03fc0000},
425 false,
426 al,
427 "le r14 r6 0x03fc0000",
428 "le_r14_r6_0x03fc0000"},
429 {{lt, r13, r7, 0xab000000},
430 false,
431 al,
432 "lt r13 r7 0xab000000",
433 "lt_r13_r7_0xab000000"},
434 {{vc, r7, r7, 0x00ff0000},
435 false,
436 al,
437 "vc r7 r7 0x00ff0000",
438 "vc_r7_r7_0x00ff0000"},
439 {{ls, r8, r1, 0x0ab00000},
440 false,
441 al,
442 "ls r8 r1 0x0ab00000",
443 "ls_r8_r1_0x0ab00000"},
444 {{lt, r10, r12, 0x000002ac},
445 false,
446 al,
447 "lt r10 r12 0x000002ac",
448 "lt_r10_r12_0x000002ac"},
449 {{ls, r11, r0, 0x3fc00000},
450 false,
451 al,
452 "ls r11 r0 0x3fc00000",
453 "ls_r11_r0_0x3fc00000"},
454 {{ge, r9, r8, 0x002ac000},
455 false,
456 al,
457 "ge r9 r8 0x002ac000",
458 "ge_r9_r8_0x002ac000"},
459 {{vc, r5, r2, 0x02ac0000},
460 false,
461 al,
462 "vc r5 r2 0x02ac0000",
463 "vc_r5_r2_0x02ac0000"},
464 {{gt, r2, r9, 0x0ff00000},
465 false,
466 al,
467 "gt r2 r9 0x0ff00000",
468 "gt_r2_r9_0x0ff00000"},
469 {{eq, r10, r6, 0x2ac00000},
470 false,
471 al,
472 "eq r10 r6 0x2ac00000",
473 "eq_r10_r6_0x2ac00000"},
474 {{ls, r0, r9, 0xfc000003},
475 false,
476 al,
477 "ls r0 r9 0xfc000003",
478 "ls_r0_r9_0xfc000003"},
479 {{eq, r15, r12, 0x02ac0000},
480 false,
481 al,
482 "eq r15 r12 0x02ac0000",
483 "eq_r15_r12_0x02ac0000"},
484 {{mi, r3, r1, 0xfc000003},
485 false,
486 al,
487 "mi r3 r1 0xfc000003",
488 "mi_r3_r1_0xfc000003"},
489 {{lt, r0, r0, 0xb000000a},
490 false,
491 al,
492 "lt r0 r0 0xb000000a",
493 "lt_r0_r0_0xb000000a"},
494 {{cs, r14, r8, 0xff000000},
495 false,
496 al,
497 "cs r14 r8 0xff000000",
498 "cs_r14_r8_0xff000000"},
499 {{lt, r7, r1, 0x00003fc0},
500 false,
501 al,
502 "lt r7 r1 0x00003fc0",
503 "lt_r7_r1_0x00003fc0"},
504 {{ls, r8, r1, 0x00000ff0},
505 false,
506 al,
507 "ls r8 r1 0x00000ff0",
508 "ls_r8_r1_0x00000ff0"},
509 {{cc, r15, r3, 0x0002ac00},
510 false,
511 al,
512 "cc r15 r3 0x0002ac00",
513 "cc_r15_r3_0x0002ac00"},
514 {{cs, r15, r0, 0xc000003f},
515 false,
516 al,
517 "cs r15 r0 0xc000003f",
518 "cs_r15_r0_0xc000003f"},
519 {{hi, r4, r2, 0x0002ac00},
520 false,
521 al,
522 "hi r4 r2 0x0002ac00",
523 "hi_r4_r2_0x0002ac00"},
524 {{ne, r10, r12, 0x0003fc00},
525 false,
526 al,
527 "ne r10 r12 0x0003fc00",
528 "ne_r10_r12_0x0003fc00"},
529 {{gt, r7, r13, 0x00003fc0},
530 false,
531 al,
532 "gt r7 r13 0x00003fc0",
533 "gt_r7_r13_0x00003fc0"},
534 {{vc, r14, r4, 0xac000002},
535 false,
536 al,
537 "vc r14 r4 0xac000002",
538 "vc_r14_r4_0xac000002"},
539 {{le, r13, r7, 0x00000000},
540 false,
541 al,
542 "le r13 r7 0x00000000",
543 "le_r13_r7_0x00000000"},
544 {{pl, r5, r15, 0x00000ab0},
545 false,
546 al,
547 "pl r5 r15 0x00000ab0",
548 "pl_r5_r15_0x00000ab0"},
549 {{vs, r1, r1, 0x03fc0000},
550 false,
551 al,
552 "vs r1 r1 0x03fc0000",
553 "vs_r1_r1_0x03fc0000"},
554 {{le, r4, r4, 0xab000000},
555 false,
556 al,
557 "le r4 r4 0xab000000",
558 "le_r4_r4_0xab000000"},
559 {{gt, r11, r4, 0x0ff00000},
560 false,
561 al,
562 "gt r11 r4 0x0ff00000",
563 "gt_r11_r4_0x0ff00000"},
564 {{cc, r1, r3, 0x0000ab00},
565 false,
566 al,
567 "cc r1 r3 0x0000ab00",
568 "cc_r1_r3_0x0000ab00"},
569 {{cs, r10, r9, 0x0000ab00},
570 false,
571 al,
572 "cs r10 r9 0x0000ab00",
573 "cs_r10_r9_0x0000ab00"},
574 {{vc, r7, r5, 0x00ab0000},
575 false,
576 al,
577 "vc r7 r5 0x00ab0000",
578 "vc_r7_r5_0x00ab0000"},
579 {{cc, r4, r1, 0x0000ab00},
580 false,
581 al,
582 "cc r4 r1 0x0000ab00",
583 "cc_r4_r1_0x0000ab00"},
584 {{hi, r4, r15, 0xfc000003},
585 false,
586 al,
587 "hi r4 r15 0xfc000003",
588 "hi_r4_r15_0xfc000003"},
589 {{eq, r11, r1, 0xff000000},
590 false,
591 al,
592 "eq r11 r1 0xff000000",
593 "eq_r11_r1_0xff000000"},
594 {{gt, r4, r2, 0x00002ac0},
595 false,
596 al,
597 "gt r4 r2 0x00002ac0",
598 "gt_r4_r2_0x00002ac0"},
599 {{ls, r10, r10, 0x000000ff},
600 false,
601 al,
602 "ls r10 r10 0x000000ff",
603 "ls_r10_r10_0x000000ff"},
604 {{gt, r11, r10, 0x00ff0000},
605 false,
606 al,
607 "gt r11 r10 0x00ff0000",
608 "gt_r11_r10_0x00ff0000"},
609 {{ls, r12, r6, 0x00000ff0},
610 false,
611 al,
612 "ls r12 r6 0x00000ff0",
613 "ls_r12_r6_0x00000ff0"},
614 {{vc, r9, r4, 0xb000000a},
615 false,
616 al,
617 "vc r9 r4 0xb000000a",
618 "vc_r9_r4_0xb000000a"},
619 {{hi, r10, r13, 0x00003fc0},
620 false,
621 al,
622 "hi r10 r13 0x00003fc0",
623 "hi_r10_r13_0x00003fc0"},
624 {{vc, r6, r4, 0xab000000},
625 false,
626 al,
627 "vc r6 r4 0xab000000",
628 "vc_r6_r4_0xab000000"},
629 {{gt, r1, r4, 0x0ff00000},
630 false,
631 al,
632 "gt r1 r4 0x0ff00000",
633 "gt_r1_r4_0x0ff00000"},
634 {{ne, r8, r0, 0x00003fc0},
635 false,
636 al,
637 "ne r8 r0 0x00003fc0",
638 "ne_r8_r0_0x00003fc0"},
639 {{ls, r13, r9, 0x0002ac00},
640 false,
641 al,
642 "ls r13 r9 0x0002ac00",
643 "ls_r13_r9_0x0002ac00"},
644 {{eq, r8, r8, 0xfc000003},
645 false,
646 al,
647 "eq r8 r8 0xfc000003",
648 "eq_r8_r8_0xfc000003"},
649 {{pl, r4, r3, 0x0002ac00},
650 false,
651 al,
652 "pl r4 r3 0x0002ac00",
653 "pl_r4_r3_0x0002ac00"},
654 {{cc, r3, r1, 0xab000000},
655 false,
656 al,
657 "cc r3 r1 0xab000000",
658 "cc_r3_r1_0xab000000"},
659 {{cc, r13, r3, 0xc000002a},
660 false,
661 al,
662 "cc r13 r3 0xc000002a",
663 "cc_r13_r3_0xc000002a"},
664 {{cc, r10, r14, 0x00000000},
665 false,
666 al,
667 "cc r10 r14 0x00000000",
668 "cc_r10_r14_0x00000000"},
669 {{hi, r13, r6, 0x000ff000},
670 false,
671 al,
672 "hi r13 r6 0x000ff000",
673 "hi_r13_r6_0x000ff000"},
674 {{ge, r7, r15, 0x0002ac00},
675 false,
676 al,
677 "ge r7 r15 0x0002ac00",
678 "ge_r7_r15_0x0002ac00"},
679 {{le, r1, r11, 0x0002ac00},
680 false,
681 al,
682 "le r1 r11 0x0002ac00",
683 "le_r1_r11_0x0002ac00"},
684 {{gt, r12, r1, 0x02ac0000},
685 false,
686 al,
687 "gt r12 r1 0x02ac0000",
688 "gt_r12_r1_0x02ac0000"},
689 {{hi, r0, r12, 0x00002ac0},
690 false,
691 al,
692 "hi r0 r12 0x00002ac0",
693 "hi_r0_r12_0x00002ac0"},
694 {{lt, r6, r9, 0xfc000003},
695 false,
696 al,
697 "lt r6 r9 0xfc000003",
698 "lt_r6_r9_0xfc000003"},
699 {{ls, r6, r6, 0x0002ac00},
700 false,
701 al,
702 "ls r6 r6 0x0002ac00",
703 "ls_r6_r6_0x0002ac00"},
704 {{vc, r12, r3, 0xab000000},
705 false,
706 al,
707 "vc r12 r3 0xab000000",
708 "vc_r12_r3_0xab000000"},
709 {{pl, r12, r10, 0x0ab00000},
710 false,
711 al,
712 "pl r12 r10 0x0ab00000",
713 "pl_r12_r10_0x0ab00000"},
714 {{lt, r9, r11, 0xff000000},
715 false,
716 al,
717 "lt r9 r11 0xff000000",
718 "lt_r9_r11_0xff000000"},
719 {{pl, r1, r11, 0x00000ff0},
720 false,
721 al,
722 "pl r1 r11 0x00000ff0",
723 "pl_r1_r11_0x00000ff0"},
724 {{cs, r10, r3, 0x00003fc0},
725 false,
726 al,
727 "cs r10 r3 0x00003fc0",
728 "cs_r10_r3_0x00003fc0"},
729 {{vs, r1, r12, 0x03fc0000},
730 false,
731 al,
732 "vs r1 r12 0x03fc0000",
733 "vs_r1_r12_0x03fc0000"},
734 {{ls, r2, r2, 0xf000000f},
735 false,
736 al,
737 "ls r2 r2 0xf000000f",
738 "ls_r2_r2_0xf000000f"},
739 {{pl, r11, r4, 0x0003fc00},
740 false,
741 al,
742 "pl r11 r4 0x0003fc00",
743 "pl_r11_r4_0x0003fc00"},
744 {{cc, r13, r7, 0x03fc0000},
745 false,
746 al,
747 "cc r13 r7 0x03fc0000",
748 "cc_r13_r7_0x03fc0000"},
749 {{hi, r5, r1, 0x00ab0000},
750 false,
751 al,
752 "hi r5 r1 0x00ab0000",
753 "hi_r5_r1_0x00ab0000"},
754 {{eq, r8, r5, 0x0ab00000},
755 false,
756 al,
757 "eq r8 r5 0x0ab00000",
758 "eq_r8_r5_0x0ab00000"},
759 {{ge, r6, r15, 0x0002ac00},
760 false,
761 al,
762 "ge r6 r15 0x0002ac00",
763 "ge_r6_r15_0x0002ac00"},
764 {{ls, r5, r6, 0x00000ff0},
765 false,
766 al,
767 "ls r5 r6 0x00000ff0",
768 "ls_r5_r6_0x00000ff0"},
769 {{gt, r13, r11, 0x000003fc},
770 false,
771 al,
772 "gt r13 r11 0x000003fc",
773 "gt_r13_r11_0x000003fc"},
774 {{vc, r8, r6, 0xc000002a},
775 false,
776 al,
777 "vc r8 r6 0xc000002a",
778 "vc_r8_r6_0xc000002a"},
779 {{ge, r10, r2, 0x000000ab},
780 false,
781 al,
782 "ge r10 r2 0x000000ab",
783 "ge_r10_r2_0x000000ab"},
784 {{pl, r7, r14, 0x000000ab},
785 false,
786 al,
787 "pl r7 r14 0x000000ab",
788 "pl_r7_r14_0x000000ab"},
789 {{vc, r11, r10, 0x3fc00000},
790 false,
791 al,
792 "vc r11 r10 0x3fc00000",
793 "vc_r11_r10_0x3fc00000"},
794 {{pl, r9, r0, 0x00003fc0},
795 false,
796 al,
797 "pl r9 r0 0x00003fc0",
798 "pl_r9_r0_0x00003fc0"},
799 {{hi, r15, r1, 0x000ab000},
800 false,
801 al,
802 "hi r15 r1 0x000ab000",
803 "hi_r15_r1_0x000ab000"},
804 {{gt, r3, r4, 0x00ab0000},
805 false,
806 al,
807 "gt r3 r4 0x00ab0000",
808 "gt_r3_r4_0x00ab0000"},
809 {{cs, r7, r12, 0x00000ab0},
810 false,
811 al,
812 "cs r7 r12 0x00000ab0",
813 "cs_r7_r12_0x00000ab0"},
814 {{vs, r3, r8, 0x0ff00000},
815 false,
816 al,
817 "vs r3 r8 0x0ff00000",
818 "vs_r3_r8_0x0ff00000"},
819 {{cc, r12, r8, 0x000000ff},
820 false,
821 al,
822 "cc r12 r8 0x000000ff",
823 "cc_r12_r8_0x000000ff"},
824 {{vc, r1, r5, 0x02ac0000},
825 false,
826 al,
827 "vc r1 r5 0x02ac0000",
828 "vc_r1_r5_0x02ac0000"},
829 {{cc, r7, r12, 0xf000000f},
830 false,
831 al,
832 "cc r7 r12 0xf000000f",
833 "cc_r7_r12_0xf000000f"},
834 {{gt, r9, r4, 0x0000ab00},
835 false,
836 al,
837 "gt r9 r4 0x0000ab00",
838 "gt_r9_r4_0x0000ab00"},
839 {{pl, r14, r8, 0x0ff00000},
840 false,
841 al,
842 "pl r14 r8 0x0ff00000",
843 "pl_r14_r8_0x0ff00000"},
844 {{vc, r8, r4, 0x000003fc},
845 false,
846 al,
847 "vc r8 r4 0x000003fc",
848 "vc_r8_r4_0x000003fc"},
849 {{cc, r1, r15, 0xb000000a},
850 false,
851 al,
852 "cc r1 r15 0xb000000a",
853 "cc_r1_r15_0xb000000a"},
854 {{al, r15, r11, 0x000ff000},
855 false,
856 al,
857 "al r15 r11 0x000ff000",
858 "al_r15_r11_0x000ff000"},
859 {{ls, r1, r13, 0x00002ac0},
860 false,
861 al,
862 "ls r1 r13 0x00002ac0",
863 "ls_r1_r13_0x00002ac0"},
864 {{le, r4, r10, 0x03fc0000},
865 false,
866 al,
867 "le r4 r10 0x03fc0000",
868 "le_r4_r10_0x03fc0000"},
869 {{mi, r2, r4, 0x00000ab0},
870 false,
871 al,
872 "mi r2 r4 0x00000ab0",
873 "mi_r2_r4_0x00000ab0"},
874 {{al, r13, r6, 0x02ac0000},
875 false,
876 al,
877 "al r13 r6 0x02ac0000",
878 "al_r13_r6_0x02ac0000"},
879 {{mi, r7, r9, 0x000002ac},
880 false,
881 al,
882 "mi r7 r9 0x000002ac",
883 "mi_r7_r9_0x000002ac"},
884 {{hi, r9, r7, 0x00002ac0},
885 false,
886 al,
887 "hi r9 r7 0x00002ac0",
888 "hi_r9_r7_0x00002ac0"},
889 {{vc, r15, r9, 0x0000ab00},
890 false,
891 al,
892 "vc r15 r9 0x0000ab00",
893 "vc_r15_r9_0x0000ab00"},
894 {{vc, r13, r0, 0xff000000},
895 false,
896 al,
897 "vc r13 r0 0xff000000",
898 "vc_r13_r0_0xff000000"},
899 {{cc, r15, r10, 0x00003fc0},
900 false,
901 al,
902 "cc r15 r10 0x00003fc0",
903 "cc_r15_r10_0x00003fc0"},
904 {{lt, r12, r2, 0x00000ab0},
905 false,
906 al,
907 "lt r12 r2 0x00000ab0",
908 "lt_r12_r2_0x00000ab0"},
909 {{le, r1, r3, 0xb000000a},
910 false,
911 al,
912 "le r1 r3 0xb000000a",
913 "le_r1_r3_0xb000000a"},
914 {{hi, r14, r12, 0xc000002a},
915 false,
916 al,
917 "hi r14 r12 0xc000002a",
918 "hi_r14_r12_0xc000002a"},
919 {{vc, r5, r8, 0x000ff000},
920 false,
921 al,
922 "vc r5 r8 0x000ff000",
923 "vc_r5_r8_0x000ff000"},
924 {{gt, r12, r9, 0x000000ab},
925 false,
926 al,
927 "gt r12 r9 0x000000ab",
928 "gt_r12_r9_0x000000ab"},
929 {{al, r13, r7, 0xf000000f},
930 false,
931 al,
932 "al r13 r7 0xf000000f",
933 "al_r13_r7_0xf000000f"},
934 {{ls, r3, r10, 0x000002ac},
935 false,
936 al,
937 "ls r3 r10 0x000002ac",
938 "ls_r3_r10_0x000002ac"},
939 {{ne, r13, r13, 0x00000ab0},
940 false,
941 al,
942 "ne r13 r13 0x00000ab0",
943 "ne_r13_r13_0x00000ab0"},
944 {{ge, r15, r3, 0xfc000003},
945 false,
946 al,
947 "ge r15 r3 0xfc000003",
948 "ge_r15_r3_0xfc000003"},
949 {{cc, r7, r0, 0x0003fc00},
950 false,
951 al,
952 "cc r7 r0 0x0003fc00",
953 "cc_r7_r0_0x0003fc00"},
954 {{eq, r3, r14, 0x2ac00000},
955 false,
956 al,
957 "eq r3 r14 0x2ac00000",
958 "eq_r3_r14_0x2ac00000"},
959 {{al, r11, r14, 0x003fc000},
960 false,
961 al,
962 "al r11 r14 0x003fc000",
963 "al_r11_r14_0x003fc000"},
964 {{gt, r3, r12, 0x02ac0000},
965 false,
966 al,
967 "gt r3 r12 0x02ac0000",
968 "gt_r3_r12_0x02ac0000"},
969 {{mi, r7, r15, 0xac000002},
970 false,
971 al,
972 "mi r7 r15 0xac000002",
973 "mi_r7_r15_0xac000002"},
974 {{al, r3, r2, 0x002ac000},
975 false,
976 al,
977 "al r3 r2 0x002ac000",
978 "al_r3_r2_0x002ac000"},
979 {{hi, r2, r6, 0x0002ac00},
980 false,
981 al,
982 "hi r2 r6 0x0002ac00",
983 "hi_r2_r6_0x0002ac00"},
984 {{eq, r8, r5, 0x03fc0000},
985 false,
986 al,
987 "eq r8 r5 0x03fc0000",
988 "eq_r8_r5_0x03fc0000"},
989 {{hi, r2, r13, 0x0002ac00},
990 false,
991 al,
992 "hi r2 r13 0x0002ac00",
993 "hi_r2_r13_0x0002ac00"},
994 {{lt, r10, r10, 0x00ab0000},
995 false,
996 al,
997 "lt r10 r10 0x00ab0000",
998 "lt_r10_r10_0x00ab0000"},
999 {{al, r12, r3, 0x0ab00000},
1000 false,
1001 al,
1002 "al r12 r3 0x0ab00000",
1003 "al_r12_r3_0x0ab00000"},
1004 {{ls, r1, r2, 0x003fc000},
1005 false,
1006 al,
1007 "ls r1 r2 0x003fc000",
1008 "ls_r1_r2_0x003fc000"},
1009 {{le, r9, r10, 0x000ff000},
1010 false,
1011 al,
1012 "le r9 r10 0x000ff000",
1013 "le_r9_r10_0x000ff000"},
1014 {{vc, r4, r12, 0x00000000},
1015 false,
1016 al,
1017 "vc r4 r12 0x00000000",
1018 "vc_r4_r12_0x00000000"},
1019 {{pl, r7, r7, 0x02ac0000},
1020 false,
1021 al,
1022 "pl r7 r7 0x02ac0000",
1023 "pl_r7_r7_0x02ac0000"},
1024 {{ge, r6, r11, 0x02ac0000},
1025 false,
1026 al,
1027 "ge r6 r11 0x02ac0000",
1028 "ge_r6_r11_0x02ac0000"},
1029 {{ls, r10, r4, 0x000000ff},
1030 false,
1031 al,
1032 "ls r10 r4 0x000000ff",
1033 "ls_r10_r4_0x000000ff"},
1034 {{cc, r12, r4, 0x00000ff0},
1035 false,
1036 al,
1037 "cc r12 r4 0x00000ff0",
1038 "cc_r12_r4_0x00000ff0"},
1039 {{gt, r6, r3, 0x0ff00000},
1040 false,
1041 al,
1042 "gt r6 r3 0x0ff00000",
1043 "gt_r6_r3_0x0ff00000"},
1044 {{cc, r3, r10, 0x00ab0000},
1045 false,
1046 al,
1047 "cc r3 r10 0x00ab0000",
1048 "cc_r3_r10_0x00ab0000"},
1049 {{eq, r6, r7, 0x00ab0000},
1050 false,
1051 al,
1052 "eq r6 r7 0x00ab0000",
1053 "eq_r6_r7_0x00ab0000"},
1054 {{le, r3, r3, 0x003fc000},
1055 false,
1056 al,
1057 "le r3 r3 0x003fc000",
1058 "le_r3_r3_0x003fc000"},
1059 {{lt, r11, r3, 0x3fc00000},
1060 false,
1061 al,
1062 "lt r11 r3 0x3fc00000",
1063 "lt_r11_r3_0x3fc00000"},
1064 {{vc, r11, r2, 0x00003fc0},
1065 false,
1066 al,
1067 "vc r11 r2 0x00003fc0",
1068 "vc_r11_r2_0x00003fc0"},
1069 {{ls, r11, r11, 0x000ff000},
1070 false,
1071 al,
1072 "ls r11 r11 0x000ff000",
1073 "ls_r11_r11_0x000ff000"},
1074 {{eq, r13, r2, 0x0000ff00},
1075 false,
1076 al,
1077 "eq r13 r2 0x0000ff00",
1078 "eq_r13_r2_0x0000ff00"},
1079 {{vc, r9, r1, 0x00002ac0},
1080 false,
1081 al,
1082 "vc r9 r1 0x00002ac0",
1083 "vc_r9_r1_0x00002ac0"},
1084 {{ne, r2, r14, 0xfc000003},
1085 false,
1086 al,
1087 "ne r2 r14 0xfc000003",
1088 "ne_r2_r14_0xfc000003"},
1089 {{vs, r10, r11, 0x00002ac0},
1090 false,
1091 al,
1092 "vs r10 r11 0x00002ac0",
1093 "vs_r10_r11_0x00002ac0"},
1094 {{cc, r9, r9, 0x000002ac},
1095 false,
1096 al,
1097 "cc r9 r9 0x000002ac",
1098 "cc_r9_r9_0x000002ac"},
1099 {{gt, r9, r3, 0x0000ab00},
1100 false,
1101 al,
1102 "gt r9 r3 0x0000ab00",
1103 "gt_r9_r3_0x0000ab00"},
1104 {{ge, r3, r0, 0x000000ab},
1105 false,
1106 al,
1107 "ge r3 r0 0x000000ab",
1108 "ge_r3_r0_0x000000ab"},
1109 {{pl, r6, r11, 0xb000000a},
1110 false,
1111 al,
1112 "pl r6 r11 0xb000000a",
1113 "pl_r6_r11_0xb000000a"},
1114 {{cs, r7, r3, 0xb000000a},
1115 false,
1116 al,
1117 "cs r7 r3 0xb000000a",
1118 "cs_r7_r3_0xb000000a"},
1119 {{ge, r0, r8, 0x00ff0000},
1120 false,
1121 al,
1122 "ge r0 r8 0x00ff0000",
1123 "ge_r0_r8_0x00ff0000"},
1124 {{lt, r9, r0, 0x00ab0000},
1125 false,
1126 al,
1127 "lt r9 r0 0x00ab0000",
1128 "lt_r9_r0_0x00ab0000"},
1129 {{cs, r8, r0, 0xc000003f},
1130 false,
1131 al,
1132 "cs r8 r0 0xc000003f",
1133 "cs_r8_r0_0xc000003f"},
1134 {{eq, r2, r5, 0x03fc0000},
1135 false,
1136 al,
1137 "eq r2 r5 0x03fc0000",
1138 "eq_r2_r5_0x03fc0000"},
1139 {{ls, r1, r9, 0x0000ab00},
1140 false,
1141 al,
1142 "ls r1 r9 0x0000ab00",
1143 "ls_r1_r9_0x0000ab00"},
1144 {{al, r3, r1, 0x00000ab0},
1145 false,
1146 al,
1147 "al r3 r1 0x00000ab0",
1148 "al_r3_r1_0x00000ab0"},
1149 {{gt, r11, r11, 0xfc000003},
1150 false,
1151 al,
1152 "gt r11 r11 0xfc000003",
1153 "gt_r11_r11_0xfc000003"},
1154 {{hi, r9, r8, 0x00000ab0},
1155 false,
1156 al,
1157 "hi r9 r8 0x00000ab0",
1158 "hi_r9_r8_0x00000ab0"},
1159 {{gt, r6, r10, 0xff000000},
1160 false,
1161 al,
1162 "gt r6 r10 0xff000000",
1163 "gt_r6_r10_0xff000000"},
1164 {{le, r9, r14, 0x00003fc0},
1165 false,
1166 al,
1167 "le r9 r14 0x00003fc0",
1168 "le_r9_r14_0x00003fc0"},
1169 {{cc, r11, r0, 0xf000000f},
1170 false,
1171 al,
1172 "cc r11 r0 0xf000000f",
1173 "cc_r11_r0_0xf000000f"},
1174 {{pl, r8, r5, 0x000002ac},
1175 false,
1176 al,
1177 "pl r8 r5 0x000002ac",
1178 "pl_r8_r5_0x000002ac"},
1179 {{gt, r1, r15, 0x000ff000},
1180 false,
1181 al,
1182 "gt r1 r15 0x000ff000",
1183 "gt_r1_r15_0x000ff000"},
1184 {{eq, r1, r2, 0x02ac0000},
1185 false,
1186 al,
1187 "eq r1 r2 0x02ac0000",
1188 "eq_r1_r2_0x02ac0000"},
1189 {{ge, r8, r7, 0x0ff00000},
1190 false,
1191 al,
1192 "ge r8 r7 0x0ff00000",
1193 "ge_r8_r7_0x0ff00000"},
1194 {{le, r15, r14, 0x0000ab00},
1195 false,
1196 al,
1197 "le r15 r14 0x0000ab00",
1198 "le_r15_r14_0x0000ab00"},
1199 {{al, r15, r11, 0x00002ac0},
1200 false,
1201 al,
1202 "al r15 r11 0x00002ac0",
1203 "al_r15_r11_0x00002ac0"},
1204 {{al, r11, r4, 0x000002ac},
1205 false,
1206 al,
1207 "al r11 r4 0x000002ac",
1208 "al_r11_r4_0x000002ac"},
1209 {{le, r13, r12, 0x000003fc},
1210 false,
1211 al,
1212 "le r13 r12 0x000003fc",
1213 "le_r13_r12_0x000003fc"},
1214 {{al, r15, r8, 0x000ff000},
1215 false,
1216 al,
1217 "al r15 r8 0x000ff000",
1218 "al_r15_r8_0x000ff000"},
1219 {{eq, r4, r2, 0x0002ac00},
1220 false,
1221 al,
1222 "eq r4 r2 0x0002ac00",
1223 "eq_r4_r2_0x0002ac00"},
1224 {{ge, r1, r9, 0x002ac000},
1225 false,
1226 al,
1227 "ge r1 r9 0x002ac000",
1228 "ge_r1_r9_0x002ac000"},
1229 {{lt, r12, r5, 0x00000000},
1230 false,
1231 al,
1232 "lt r12 r5 0x00000000",
1233 "lt_r12_r5_0x00000000"},
1234 {{pl, r10, r8, 0x00000ff0},
1235 false,
1236 al,
1237 "pl r10 r8 0x00000ff0",
1238 "pl_r10_r8_0x00000ff0"},
1239 {{ge, r13, r12, 0x00ff0000},
1240 false,
1241 al,
1242 "ge r13 r12 0x00ff0000",
1243 "ge_r13_r12_0x00ff0000"},
1244 {{al, r9, r7, 0x00000ff0},
1245 false,
1246 al,
1247 "al r9 r7 0x00000ff0",
1248 "al_r9_r7_0x00000ff0"},
1249 {{ls, r6, r3, 0x00000000},
1250 false,
1251 al,
1252 "ls r6 r3 0x00000000",
1253 "ls_r6_r3_0x00000000"},
1254 {{al, r1, r2, 0x00002ac0},
1255 false,
1256 al,
1257 "al r1 r2 0x00002ac0",
1258 "al_r1_r2_0x00002ac0"},
1259 {{le, r4, r12, 0x0002ac00},
1260 false,
1261 al,
1262 "le r4 r12 0x0002ac00",
1263 "le_r4_r12_0x0002ac00"},
1264 {{ge, r7, r1, 0x0000ff00},
1265 false,
1266 al,
1267 "ge r7 r1 0x0000ff00",
1268 "ge_r7_r1_0x0000ff00"},
1269 {{le, r10, r14, 0x3fc00000},
1270 false,
1271 al,
1272 "le r10 r14 0x3fc00000",
1273 "le_r10_r14_0x3fc00000"},
1274 {{al, r7, r9, 0x000000ab},
1275 false,
1276 al,
1277 "al r7 r9 0x000000ab",
1278 "al_r7_r9_0x000000ab"},
1279 {{hi, r6, r3, 0x000003fc},
1280 false,
1281 al,
1282 "hi r6 r3 0x000003fc",
1283 "hi_r6_r3_0x000003fc"},
1284 {{cs, r14, r11, 0x000000ff},
1285 false,
1286 al,
1287 "cs r14 r11 0x000000ff",
1288 "cs_r14_r11_0x000000ff"},
1289 {{le, r0, r15, 0xab000000},
1290 false,
1291 al,
1292 "le r0 r15 0xab000000",
1293 "le_r0_r15_0xab000000"},
1294 {{ls, r0, r3, 0xc000002a},
1295 false,
1296 al,
1297 "ls r0 r3 0xc000002a",
1298 "ls_r0_r3_0xc000002a"},
1299 {{le, r5, r6, 0x000002ac},
1300 false,
1301 al,
1302 "le r5 r6 0x000002ac",
1303 "le_r5_r6_0x000002ac"},
1304 {{eq, r5, r9, 0xb000000a},
1305 false,
1306 al,
1307 "eq r5 r9 0xb000000a",
1308 "eq_r5_r9_0xb000000a"},
1309 {{al, r12, r6, 0x000002ac},
1310 false,
1311 al,
1312 "al r12 r6 0x000002ac",
1313 "al_r12_r6_0x000002ac"},
1314 {{vs, r11, r10, 0x0003fc00},
1315 false,
1316 al,
1317 "vs r11 r10 0x0003fc00",
1318 "vs_r11_r10_0x0003fc00"},
1319 {{gt, r8, r5, 0x0003fc00},
1320 false,
1321 al,
1322 "gt r8 r5 0x0003fc00",
1323 "gt_r8_r5_0x0003fc00"},
1324 {{eq, r1, r9, 0x00000000},
1325 false,
1326 al,
1327 "eq r1 r9 0x00000000",
1328 "eq_r1_r9_0x00000000"},
1329 {{ge, r2, r9, 0x3fc00000},
1330 false,
1331 al,
1332 "ge r2 r9 0x3fc00000",
1333 "ge_r2_r9_0x3fc00000"},
1334 {{cs, r4, r13, 0x00ab0000},
1335 false,
1336 al,
1337 "cs r4 r13 0x00ab0000",
1338 "cs_r4_r13_0x00ab0000"},
1339 {{hi, r4, r12, 0x00ab0000},
1340 false,
1341 al,
1342 "hi r4 r12 0x00ab0000",
1343 "hi_r4_r12_0x00ab0000"},
1344 {{ne, r2, r3, 0x003fc000},
1345 false,
1346 al,
1347 "ne r2 r3 0x003fc000",
1348 "ne_r2_r3_0x003fc000"},
1349 {{vs, r0, r11, 0xfc000003},
1350 false,
1351 al,
1352 "vs r0 r11 0xfc000003",
1353 "vs_r0_r11_0xfc000003"},
1354 {{hi, r14, r9, 0x003fc000},
1355 false,
1356 al,
1357 "hi r14 r9 0x003fc000",
1358 "hi_r14_r9_0x003fc000"},
1359 {{vc, r7, r5, 0xab000000},
1360 false,
1361 al,
1362 "vc r7 r5 0xab000000",
1363 "vc_r7_r5_0xab000000"},
1364 {{lt, r15, r8, 0x002ac000},
1365 false,
1366 al,
1367 "lt r15 r8 0x002ac000",
1368 "lt_r15_r8_0x002ac000"},
1369 {{cs, r3, r7, 0x0003fc00},
1370 false,
1371 al,
1372 "cs r3 r7 0x0003fc00",
1373 "cs_r3_r7_0x0003fc00"},
1374 {{cs, r7, r11, 0xb000000a},
1375 false,
1376 al,
1377 "cs r7 r11 0xb000000a",
1378 "cs_r7_r11_0xb000000a"},
1379 {{ge, r0, r11, 0xb000000a},
1380 false,
1381 al,
1382 "ge r0 r11 0xb000000a",
1383 "ge_r0_r11_0xb000000a"},
1384 {{vs, r6, r5, 0x0ab00000},
1385 false,
1386 al,
1387 "vs r6 r5 0x0ab00000",
1388 "vs_r6_r5_0x0ab00000"},
1389 {{le, r10, r1, 0xfc000003},
1390 false,
1391 al,
1392 "le r10 r1 0xfc000003",
1393 "le_r10_r1_0xfc000003"},
1394 {{cc, r3, r6, 0x3fc00000},
1395 false,
1396 al,
1397 "cc r3 r6 0x3fc00000",
1398 "cc_r3_r6_0x3fc00000"},
1399 {{le, r12, r14, 0x00000ab0},
1400 false,
1401 al,
1402 "le r12 r14 0x00000ab0",
1403 "le_r12_r14_0x00000ab0"},
1404 {{al, r15, r12, 0x00003fc0},
1405 false,
1406 al,
1407 "al r15 r12 0x00003fc0",
1408 "al_r15_r12_0x00003fc0"},
1409 {{gt, r12, r10, 0x0000ab00},
1410 false,
1411 al,
1412 "gt r12 r10 0x0000ab00",
1413 "gt_r12_r10_0x0000ab00"},
1414 {{ls, r6, r15, 0x0ff00000},
1415 false,
1416 al,
1417 "ls r6 r15 0x0ff00000",
1418 "ls_r6_r15_0x0ff00000"},
1419 {{mi, r4, r4, 0x00003fc0},
1420 false,
1421 al,
1422 "mi r4 r4 0x00003fc0",
1423 "mi_r4_r4_0x00003fc0"},
1424 {{gt, r8, r9, 0xc000002a},
1425 false,
1426 al,
1427 "gt r8 r9 0xc000002a",
1428 "gt_r8_r9_0xc000002a"},
1429 {{le, r10, r4, 0x000002ac},
1430 false,
1431 al,
1432 "le r10 r4 0x000002ac",
1433 "le_r10_r4_0x000002ac"},
1434 {{vs, r0, r1, 0x000003fc},
1435 false,
1436 al,
1437 "vs r0 r1 0x000003fc",
1438 "vs_r0_r1_0x000003fc"},
1439 {{al, r1, r5, 0x0ff00000},
1440 false,
1441 al,
1442 "al r1 r5 0x0ff00000",
1443 "al_r1_r5_0x0ff00000"},
1444 {{cc, r11, r5, 0xc000002a},
1445 false,
1446 al,
1447 "cc r11 r5 0xc000002a",
1448 "cc_r11_r5_0xc000002a"},
1449 {{vc, r6, r13, 0x003fc000},
1450 false,
1451 al,
1452 "vc r6 r13 0x003fc000",
1453 "vc_r6_r13_0x003fc000"},
1454 {{eq, r1, r15, 0x00003fc0},
1455 false,
1456 al,
1457 "eq r1 r15 0x00003fc0",
1458 "eq_r1_r15_0x00003fc0"},
1459 {{lt, r15, r10, 0x000002ac},
1460 false,
1461 al,
1462 "lt r15 r10 0x000002ac",
1463 "lt_r15_r10_0x000002ac"},
1464 {{ne, r13, r13, 0x003fc000},
1465 false,
1466 al,
1467 "ne r13 r13 0x003fc000",
1468 "ne_r13_r13_0x003fc000"},
1469 {{mi, r11, r7, 0xc000002a},
1470 false,
1471 al,
1472 "mi r11 r7 0xc000002a",
1473 "mi_r11_r7_0xc000002a"},
1474 {{cc, r6, r2, 0x00ff0000},
1475 false,
1476 al,
1477 "cc r6 r2 0x00ff0000",
1478 "cc_r6_r2_0x00ff0000"},
1479 {{gt, r9, r1, 0x0000ab00},
1480 false,
1481 al,
1482 "gt r9 r1 0x0000ab00",
1483 "gt_r9_r1_0x0000ab00"},
1484 {{le, r11, r7, 0x000000ff},
1485 false,
1486 al,
1487 "le r11 r7 0x000000ff",
1488 "le_r11_r7_0x000000ff"},
1489 {{hi, r9, r8, 0x0002ac00},
1490 false,
1491 al,
1492 "hi r9 r8 0x0002ac00",
1493 "hi_r9_r8_0x0002ac00"},
1494 {{vs, r6, r8, 0xff000000},
1495 false,
1496 al,
1497 "vs r6 r8 0xff000000",
1498 "vs_r6_r8_0xff000000"},
1499 {{mi, r10, r4, 0x000ab000},
1500 false,
1501 al,
1502 "mi r10 r4 0x000ab000",
1503 "mi_r10_r4_0x000ab000"},
1504 {{ls, r7, r10, 0xab000000},
1505 false,
1506 al,
1507 "ls r7 r10 0xab000000",
1508 "ls_r7_r10_0xab000000"},
1509 {{lt, r1, r0, 0x00000000},
1510 false,
1511 al,
1512 "lt r1 r0 0x00000000",
1513 "lt_r1_r0_0x00000000"},
1514 {{eq, r2, r13, 0x00002ac0},
1515 false,
1516 al,
1517 "eq r2 r13 0x00002ac0",
1518 "eq_r2_r13_0x00002ac0"},
1519 {{cc, r14, r13, 0x00003fc0},
1520 false,
1521 al,
1522 "cc r14 r13 0x00003fc0",
1523 "cc_r14_r13_0x00003fc0"},
1524 {{le, r9, r4, 0x0ab00000},
1525 false,
1526 al,
1527 "le r9 r4 0x0ab00000",
1528 "le_r9_r4_0x0ab00000"},
1529 {{gt, r4, r7, 0x00000ab0},
1530 false,
1531 al,
1532 "gt r4 r7 0x00000ab0",
1533 "gt_r4_r7_0x00000ab0"},
1534 {{eq, r5, r4, 0xc000003f},
1535 false,
1536 al,
1537 "eq r5 r4 0xc000003f",
1538 "eq_r5_r4_0xc000003f"},
1539 {{al, r2, r13, 0xb000000a},
1540 false,
1541 al,
1542 "al r2 r13 0xb000000a",
1543 "al_r2_r13_0xb000000a"},
1544 {{le, r13, r11, 0x2ac00000},
1545 false,
1546 al,
1547 "le r13 r11 0x2ac00000",
1548 "le_r13_r11_0x2ac00000"},
1549 {{gt, r5, r14, 0xac000002},
1550 false,
1551 al,
1552 "gt r5 r14 0xac000002",
1553 "gt_r5_r14_0xac000002"},
1554 {{vs, r2, r7, 0x000000ab},
1555 false,
1556 al,
1557 "vs r2 r7 0x000000ab",
1558 "vs_r2_r7_0x000000ab"},
1559 {{ne, r6, r1, 0x0ab00000},
1560 false,
1561 al,
1562 "ne r6 r1 0x0ab00000",
1563 "ne_r6_r1_0x0ab00000"},
1564 {{eq, r4, r7, 0x0000ff00},
1565 false,
1566 al,
1567 "eq r4 r7 0x0000ff00",
1568 "eq_r4_r7_0x0000ff00"},
1569 {{cc, r11, r12, 0xc000003f},
1570 false,
1571 al,
1572 "cc r11 r12 0xc000003f",
1573 "cc_r11_r12_0xc000003f"},
1574 {{pl, r7, r9, 0x02ac0000},
1575 false,
1576 al,
1577 "pl r7 r9 0x02ac0000",
1578 "pl_r7_r9_0x02ac0000"},
1579 {{vc, r5, r4, 0x00000000},
1580 false,
1581 al,
1582 "vc r5 r4 0x00000000",
1583 "vc_r5_r4_0x00000000"},
1584 {{le, r7, r1, 0xc000002a},
1585 false,
1586 al,
1587 "le r7 r1 0xc000002a",
1588 "le_r7_r1_0xc000002a"},
1589 {{cs, r3, r10, 0x2ac00000},
1590 false,
1591 al,
1592 "cs r3 r10 0x2ac00000",
1593 "cs_r3_r10_0x2ac00000"},
1594 {{le, r11, r13, 0x00003fc0},
1595 false,
1596 al,
1597 "le r11 r13 0x00003fc0",
1598 "le_r11_r13_0x00003fc0"},
1599 {{pl, r2, r11, 0x000000ff},
1600 false,
1601 al,
1602 "pl r2 r11 0x000000ff",
1603 "pl_r2_r11_0x000000ff"},
1604 {{cs, r14, r11, 0x00000000},
1605 false,
1606 al,
1607 "cs r14 r11 0x00000000",
1608 "cs_r14_r11_0x00000000"},
1609 {{ls, r6, r8, 0x003fc000},
1610 false,
1611 al,
1612 "ls r6 r8 0x003fc000",
1613 "ls_r6_r8_0x003fc000"},
1614 {{al, r6, r8, 0xab000000},
1615 false,
1616 al,
1617 "al r6 r8 0xab000000",
1618 "al_r6_r8_0xab000000"},
1619 {{cc, r4, r2, 0x002ac000},
1620 false,
1621 al,
1622 "cc r4 r2 0x002ac000",
1623 "cc_r4_r2_0x002ac000"},
1624 {{lt, r3, r13, 0x003fc000},
1625 false,
1626 al,
1627 "lt r3 r13 0x003fc000",
1628 "lt_r3_r13_0x003fc000"},
1629 {{lt, r7, r3, 0x02ac0000},
1630 false,
1631 al,
1632 "lt r7 r3 0x02ac0000",
1633 "lt_r7_r3_0x02ac0000"},
1634 {{gt, r12, r1, 0x0000ff00},
1635 false,
1636 al,
1637 "gt r12 r1 0x0000ff00",
1638 "gt_r12_r1_0x0000ff00"},
1639 {{mi, r13, r11, 0x02ac0000},
1640 false,
1641 al,
1642 "mi r13 r11 0x02ac0000",
1643 "mi_r13_r11_0x02ac0000"},
1644 {{al, r9, r0, 0xc000003f},
1645 false,
1646 al,
1647 "al r9 r0 0xc000003f",
1648 "al_r9_r0_0xc000003f"},
1649 {{mi, r12, r9, 0x00003fc0},
1650 false,
1651 al,
1652 "mi r12 r9 0x00003fc0",
1653 "mi_r12_r9_0x00003fc0"},
1654 {{ge, r5, r2, 0x3fc00000},
1655 false,
1656 al,
1657 "ge r5 r2 0x3fc00000",
1658 "ge_r5_r2_0x3fc00000"},
1659 {{gt, r4, r2, 0x002ac000},
1660 false,
1661 al,
1662 "gt r4 r2 0x002ac000",
1663 "gt_r4_r2_0x002ac000"},
1664 {{cs, r6, r13, 0x00003fc0},
1665 false,
1666 al,
1667 "cs r6 r13 0x00003fc0",
1668 "cs_r6_r13_0x00003fc0"},
1669 {{ne, r14, r0, 0xff000000},
1670 false,
1671 al,
1672 "ne r14 r0 0xff000000",
1673 "ne_r14_r0_0xff000000"},
1674 {{ls, r5, r11, 0xc000002a},
1675 false,
1676 al,
1677 "ls r5 r11 0xc000002a",
1678 "ls_r5_r11_0xc000002a"},
1679 {{gt, r11, r6, 0xf000000f},
1680 false,
1681 al,
1682 "gt r11 r6 0xf000000f",
1683 "gt_r11_r6_0xf000000f"},
1684 {{ne, r11, r5, 0x000000ff},
1685 false,
1686 al,
1687 "ne r11 r5 0x000000ff",
1688 "ne_r11_r5_0x000000ff"},
1689 {{eq, r9, r14, 0x0ab00000},
1690 false,
1691 al,
1692 "eq r9 r14 0x0ab00000",
1693 "eq_r9_r14_0x0ab00000"},
1694 {{cs, r0, r10, 0x0002ac00},
1695 false,
1696 al,
1697 "cs r0 r10 0x0002ac00",
1698 "cs_r0_r10_0x0002ac00"},
1699 {{ls, r15, r15, 0x00003fc0},
1700 false,
1701 al,
1702 "ls r15 r15 0x00003fc0",
1703 "ls_r15_r15_0x00003fc0"},
1704 {{eq, r2, r2, 0xc000003f},
1705 false,
1706 al,
1707 "eq r2 r2 0xc000003f",
1708 "eq_r2_r2_0xc000003f"},
1709 {{ls, r10, r3, 0xfc000003},
1710 false,
1711 al,
1712 "ls r10 r3 0xfc000003",
1713 "ls_r10_r3_0xfc000003"},
1714 {{gt, r9, r2, 0x000ab000},
1715 false,
1716 al,
1717 "gt r9 r2 0x000ab000",
1718 "gt_r9_r2_0x000ab000"},
1719 {{vc, r7, r6, 0xb000000a},
1720 false,
1721 al,
1722 "vc r7 r6 0xb000000a",
1723 "vc_r7_r6_0xb000000a"},
1724 {{vs, r9, r0, 0x002ac000},
1725 false,
1726 al,
1727 "vs r9 r0 0x002ac000",
1728 "vs_r9_r0_0x002ac000"},
1729 {{hi, r10, r8, 0x2ac00000},
1730 false,
1731 al,
1732 "hi r10 r8 0x2ac00000",
1733 "hi_r10_r8_0x2ac00000"},
1734 {{vs, r15, r6, 0x003fc000},
1735 false,
1736 al,
1737 "vs r15 r6 0x003fc000",
1738 "vs_r15_r6_0x003fc000"},
1739 {{cc, r1, r8, 0x2ac00000},
1740 false,
1741 al,
1742 "cc r1 r8 0x2ac00000",
1743 "cc_r1_r8_0x2ac00000"},
1744 {{gt, r5, r14, 0x000ab000},
1745 false,
1746 al,
1747 "gt r5 r14 0x000ab000",
1748 "gt_r5_r14_0x000ab000"},
1749 {{ls, r2, r9, 0xc000003f},
1750 false,
1751 al,
1752 "ls r2 r9 0xc000003f",
1753 "ls_r2_r9_0xc000003f"},
1754 {{vs, r1, r10, 0x00000000},
1755 false,
1756 al,
1757 "vs r1 r10 0x00000000",
1758 "vs_r1_r10_0x00000000"},
1759 {{lt, r8, r12, 0x0ff00000},
1760 false,
1761 al,
1762 "lt r8 r12 0x0ff00000",
1763 "lt_r8_r12_0x0ff00000"},
1764 {{cc, r13, r14, 0x00002ac0},
1765 false,
1766 al,
1767 "cc r13 r14 0x00002ac0",
1768 "cc_r13_r14_0x00002ac0"},
1769 {{gt, r0, r3, 0x00003fc0},
1770 false,
1771 al,
1772 "gt r0 r3 0x00003fc0",
1773 "gt_r0_r3_0x00003fc0"},
1774 {{le, r0, r0, 0xc000003f},
1775 false,
1776 al,
1777 "le r0 r0 0xc000003f",
1778 "le_r0_r0_0xc000003f"},
1779 {{vc, r8, r8, 0xff000000},
1780 false,
1781 al,
1782 "vc r8 r8 0xff000000",
1783 "vc_r8_r8_0xff000000"},
1784 {{vc, r0, r5, 0x00002ac0},
1785 false,
1786 al,
1787 "vc r0 r5 0x00002ac0",
1788 "vc_r0_r5_0x00002ac0"},
1789 {{ls, r3, r10, 0x00ff0000},
1790 false,
1791 al,
1792 "ls r3 r10 0x00ff0000",
1793 "ls_r3_r10_0x00ff0000"},
1794 {{cc, r5, r2, 0x03fc0000},
1795 false,
1796 al,
1797 "cc r5 r2 0x03fc0000",
1798 "cc_r5_r2_0x03fc0000"},
1799 {{ls, r13, r8, 0xc000002a},
1800 false,
1801 al,
1802 "ls r13 r8 0xc000002a",
1803 "ls_r13_r8_0xc000002a"},
1804 {{vc, r14, r4, 0x3fc00000},
1805 false,
1806 al,
1807 "vc r14 r4 0x3fc00000",
1808 "vc_r14_r4_0x3fc00000"},
1809 {{eq, r7, r8, 0xac000002},
1810 false,
1811 al,
1812 "eq r7 r8 0xac000002",
1813 "eq_r7_r8_0xac000002"},
1814 {{al, r13, r13, 0x002ac000},
1815 false,
1816 al,
1817 "al r13 r13 0x002ac000",
1818 "al_r13_r13_0x002ac000"},
1819 {{vc, r0, r10, 0x000ff000},
1820 false,
1821 al,
1822 "vc r0 r10 0x000ff000",
1823 "vc_r0_r10_0x000ff000"},
1824 {{vc, r11, r12, 0x00002ac0},
1825 false,
1826 al,
1827 "vc r11 r12 0x00002ac0",
1828 "vc_r11_r12_0x00002ac0"},
1829 {{mi, r15, r4, 0x000ff000},
1830 false,
1831 al,
1832 "mi r15 r4 0x000ff000",
1833 "mi_r15_r4_0x000ff000"},
1834 {{eq, r3, r0, 0xfc000003},
1835 false,
1836 al,
1837 "eq r3 r0 0xfc000003",
1838 "eq_r3_r0_0xfc000003"},
1839 {{mi, r9, r8, 0xab000000},
1840 false,
1841 al,
1842 "mi r9 r8 0xab000000",
1843 "mi_r9_r8_0xab000000"},
1844 {{cc, r5, r7, 0xc000003f},
1845 false,
1846 al,
1847 "cc r5 r7 0xc000003f",
1848 "cc_r5_r7_0xc000003f"},
1849 {{eq, r9, r15, 0x002ac000},
1850 false,
1851 al,
1852 "eq r9 r15 0x002ac000",
1853 "eq_r9_r15_0x002ac000"},
1854 {{ne, r7, r5, 0x00000ab0},
1855 false,
1856 al,
1857 "ne r7 r5 0x00000ab0",
1858 "ne_r7_r5_0x00000ab0"},
1859 {{eq, r15, r12, 0x000002ac},
1860 false,
1861 al,
1862 "eq r15 r12 0x000002ac",
1863 "eq_r15_r12_0x000002ac"},
1864 {{cs, r0, r13, 0x00003fc0},
1865 false,
1866 al,
1867 "cs r0 r13 0x00003fc0",
1868 "cs_r0_r13_0x00003fc0"},
1869 {{gt, r13, r11, 0xac000002},
1870 false,
1871 al,
1872 "gt r13 r11 0xac000002",
1873 "gt_r13_r11_0xac000002"},
1874 {{pl, r4, r10, 0x2ac00000},
1875 false,
1876 al,
1877 "pl r4 r10 0x2ac00000",
1878 "pl_r4_r10_0x2ac00000"},
1879 {{ne, r3, r13, 0xac000002},
1880 false,
1881 al,
1882 "ne r3 r13 0xac000002",
1883 "ne_r3_r13_0xac000002"},
1884 {{eq, r8, r7, 0x000002ac},
1885 false,
1886 al,
1887 "eq r8 r7 0x000002ac",
1888 "eq_r8_r7_0x000002ac"},
1889 {{vs, r7, r6, 0xab000000},
1890 false,
1891 al,
1892 "vs r7 r6 0xab000000",
1893 "vs_r7_r6_0xab000000"},
1894 {{le, r14, r3, 0x00003fc0},
1895 false,
1896 al,
1897 "le r14 r3 0x00003fc0",
1898 "le_r14_r3_0x00003fc0"},
1899 {{mi, r3, r5, 0x0ab00000},
1900 false,
1901 al,
1902 "mi r3 r5 0x0ab00000",
1903 "mi_r3_r5_0x0ab00000"},
1904 {{lt, r9, r1, 0x000000ff},
1905 false,
1906 al,
1907 "lt r9 r1 0x000000ff",
1908 "lt_r9_r1_0x000000ff"},
1909 {{vc, r6, r2, 0xff000000},
1910 false,
1911 al,
1912 "vc r6 r2 0xff000000",
1913 "vc_r6_r2_0xff000000"},
1914 {{mi, r8, r3, 0xfc000003},
1915 false,
1916 al,
1917 "mi r8 r3 0xfc000003",
1918 "mi_r8_r3_0xfc000003"},
1919 {{gt, r14, r11, 0x000000ab},
1920 false,
1921 al,
1922 "gt r14 r11 0x000000ab",
1923 "gt_r14_r11_0x000000ab"},
1924 {{eq, r8, r14, 0x0000ff00},
1925 false,
1926 al,
1927 "eq r8 r14 0x0000ff00",
1928 "eq_r8_r14_0x0000ff00"},
1929 {{vs, r0, r5, 0x000002ac},
1930 false,
1931 al,
1932 "vs r0 r5 0x000002ac",
1933 "vs_r0_r5_0x000002ac"},
1934 {{cs, r15, r15, 0x00000ff0},
1935 false,
1936 al,
1937 "cs r15 r15 0x00000ff0",
1938 "cs_r15_r15_0x00000ff0"},
1939 {{le, r3, r0, 0x000000ff},
1940 false,
1941 al,
1942 "le r3 r0 0x000000ff",
1943 "le_r3_r0_0x000000ff"},
1944 {{vc, r3, r12, 0x000002ac},
1945 false,
1946 al,
1947 "vc r3 r12 0x000002ac",
1948 "vc_r3_r12_0x000002ac"},
1949 {{ne, r15, r9, 0x03fc0000},
1950 false,
1951 al,
1952 "ne r15 r9 0x03fc0000",
1953 "ne_r15_r9_0x03fc0000"},
1954 {{ls, r8, r14, 0x000002ac},
1955 false,
1956 al,
1957 "ls r8 r14 0x000002ac",
1958 "ls_r8_r14_0x000002ac"},
1959 {{eq, r7, r10, 0x03fc0000},
1960 false,
1961 al,
1962 "eq r7 r10 0x03fc0000",
1963 "eq_r7_r10_0x03fc0000"},
1964 {{vc, r0, r7, 0xab000000},
1965 false,
1966 al,
1967 "vc r0 r7 0xab000000",
1968 "vc_r0_r7_0xab000000"},
1969 {{vc, r3, r11, 0xff000000},
1970 false,
1971 al,
1972 "vc r3 r11 0xff000000",
1973 "vc_r3_r11_0xff000000"},
1974 {{cs, r14, r2, 0xfc000003},
1975 false,
1976 al,
1977 "cs r14 r2 0xfc000003",
1978 "cs_r14_r2_0xfc000003"},
1979 {{pl, r3, r11, 0x00ff0000},
1980 false,
1981 al,
1982 "pl r3 r11 0x00ff0000",
1983 "pl_r3_r11_0x00ff0000"},
1984 {{lt, r6, r1, 0x0002ac00},
1985 false,
1986 al,
1987 "lt r6 r1 0x0002ac00",
1988 "lt_r6_r1_0x0002ac00"},
1989 {{al, r15, r1, 0xf000000f},
1990 false,
1991 al,
1992 "al r15 r1 0xf000000f",
1993 "al_r15_r1_0xf000000f"},
1994 {{mi, r12, r7, 0x002ac000},
1995 false,
1996 al,
1997 "mi r12 r7 0x002ac000",
1998 "mi_r12_r7_0x002ac000"},
1999 {{vs, r9, r3, 0x000003fc},
2000 false,
2001 al,
2002 "vs r9 r3 0x000003fc",
2003 "vs_r9_r3_0x000003fc"},
2004 {{cc, r9, r14, 0x000000ff},
2005 false,
2006 al,
2007 "cc r9 r14 0x000000ff",
2008 "cc_r9_r14_0x000000ff"},
2009 {{ls, r9, r12, 0xac000002},
2010 false,
2011 al,
2012 "ls r9 r12 0xac000002",
2013 "ls_r9_r12_0xac000002"},
2014 {{al, r13, r13, 0xfc000003},
2015 false,
2016 al,
2017 "al r13 r13 0xfc000003",
2018 "al_r13_r13_0xfc000003"},
2019 {{lt, r14, r1, 0x02ac0000},
2020 false,
2021 al,
2022 "lt r14 r1 0x02ac0000",
2023 "lt_r14_r1_0x02ac0000"},
2024 {{le, r8, r15, 0x2ac00000},
2025 false,
2026 al,
2027 "le r8 r15 0x2ac00000",
2028 "le_r8_r15_0x2ac00000"},
2029 {{al, r10, r8, 0x0ab00000},
2030 false,
2031 al,
2032 "al r10 r8 0x0ab00000",
2033 "al_r10_r8_0x0ab00000"},
2034 {{eq, r3, r6, 0x0000ab00},
2035 false,
2036 al,
2037 "eq r3 r6 0x0000ab00",
2038 "eq_r3_r6_0x0000ab00"},
2039 {{cs, r6, r9, 0xab000000},
2040 false,
2041 al,
2042 "cs r6 r9 0xab000000",
2043 "cs_r6_r9_0xab000000"},
2044 {{al, r13, r1, 0xfc000003},
2045 false,
2046 al,
2047 "al r13 r1 0xfc000003",
2048 "al_r13_r1_0xfc000003"},
2049 {{ls, r4, r15, 0x000002ac},
2050 false,
2051 al,
2052 "ls r4 r15 0x000002ac",
2053 "ls_r4_r15_0x000002ac"},
2054 {{cs, r4, r10, 0x003fc000},
2055 false,
2056 al,
2057 "cs r4 r10 0x003fc000",
2058 "cs_r4_r10_0x003fc000"},
2059 {{eq, r2, r8, 0x000ab000},
2060 false,
2061 al,
2062 "eq r2 r8 0x000ab000",
2063 "eq_r2_r8_0x000ab000"},
2064 {{eq, r12, r2, 0x0003fc00},
2065 false,
2066 al,
2067 "eq r12 r2 0x0003fc00",
2068 "eq_r12_r2_0x0003fc00"},
2069 {{vs, r12, r10, 0x003fc000},
2070 false,
2071 al,
2072 "vs r12 r10 0x003fc000",
2073 "vs_r12_r10_0x003fc000"},
2074 {{eq, r9, r2, 0xab000000},
2075 false,
2076 al,
2077 "eq r9 r2 0xab000000",
2078 "eq_r9_r2_0xab000000"},
2079 {{cc, r6, r7, 0x0003fc00},
2080 false,
2081 al,
2082 "cc r6 r7 0x0003fc00",
2083 "cc_r6_r7_0x0003fc00"},
2084 {{mi, r8, r15, 0x0000ff00},
2085 false,
2086 al,
2087 "mi r8 r15 0x0000ff00",
2088 "mi_r8_r15_0x0000ff00"},
2089 {{ls, r2, r1, 0x0ff00000},
2090 false,
2091 al,
2092 "ls r2 r1 0x0ff00000",
2093 "ls_r2_r1_0x0ff00000"},
2094 {{cs, r12, r12, 0x00002ac0},
2095 false,
2096 al,
2097 "cs r12 r12 0x00002ac0",
2098 "cs_r12_r12_0x00002ac0"},
2099 {{hi, r1, r12, 0x000003fc},
2100 false,
2101 al,
2102 "hi r1 r12 0x000003fc",
2103 "hi_r1_r12_0x000003fc"},
2104 {{ls, r9, r0, 0x000003fc},
2105 false,
2106 al,
2107 "ls r9 r0 0x000003fc",
2108 "ls_r9_r0_0x000003fc"},
2109 {{ne, r6, r9, 0x00ff0000},
2110 false,
2111 al,
2112 "ne r6 r9 0x00ff0000",
2113 "ne_r6_r9_0x00ff0000"},
2114 {{al, r10, r5, 0x000000ff},
2115 false,
2116 al,
2117 "al r10 r5 0x000000ff",
2118 "al_r10_r5_0x000000ff"},
2119 {{pl, r10, r4, 0xf000000f},
2120 false,
2121 al,
2122 "pl r10 r4 0xf000000f",
2123 "pl_r10_r4_0xf000000f"},
2124 {{hi, r0, r11, 0x03fc0000},
2125 false,
2126 al,
2127 "hi r0 r11 0x03fc0000",
2128 "hi_r0_r11_0x03fc0000"},
2129 {{al, r6, r3, 0x00002ac0},
2130 false,
2131 al,
2132 "al r6 r3 0x00002ac0",
2133 "al_r6_r3_0x00002ac0"},
2134 {{ne, r12, r13, 0x0000ab00},
2135 false,
2136 al,
2137 "ne r12 r13 0x0000ab00",
2138 "ne_r12_r13_0x0000ab00"},
2139 {{mi, r13, r8, 0x00002ac0},
2140 false,
2141 al,
2142 "mi r13 r8 0x00002ac0",
2143 "mi_r13_r8_0x00002ac0"},
2144 {{ge, r13, r2, 0x003fc000},
2145 false,
2146 al,
2147 "ge r13 r2 0x003fc000",
2148 "ge_r13_r2_0x003fc000"},
2149 {{pl, r10, r15, 0x00ff0000},
2150 false,
2151 al,
2152 "pl r10 r15 0x00ff0000",
2153 "pl_r10_r15_0x00ff0000"},
2154 {{vs, r12, r7, 0xff000000},
2155 false,
2156 al,
2157 "vs r12 r7 0xff000000",
2158 "vs_r12_r7_0xff000000"},
2159 {{cs, r1, r3, 0xfc000003},
2160 false,
2161 al,
2162 "cs r1 r3 0xfc000003",
2163 "cs_r1_r3_0xfc000003"},
2164 {{ne, r9, r4, 0x000002ac},
2165 false,
2166 al,
2167 "ne r9 r4 0x000002ac",
2168 "ne_r9_r4_0x000002ac"},
2169 {{vs, r14, r3, 0x02ac0000},
2170 false,
2171 al,
2172 "vs r14 r3 0x02ac0000",
2173 "vs_r14_r3_0x02ac0000"},
2174 {{vs, r0, r2, 0x0ff00000},
2175 false,
2176 al,
2177 "vs r0 r2 0x0ff00000",
2178 "vs_r0_r2_0x0ff00000"},
2179 {{ne, r15, r5, 0x000000ab},
2180 false,
2181 al,
2182 "ne r15 r5 0x000000ab",
2183 "ne_r15_r5_0x000000ab"},
2184 {{vs, r9, r13, 0x000000ab},
2185 false,
2186 al,
2187 "vs r9 r13 0x000000ab",
2188 "vs_r9_r13_0x000000ab"},
2189 {{al, r3, r9, 0x0000ff00},
2190 false,
2191 al,
2192 "al r3 r9 0x0000ff00",
2193 "al_r3_r9_0x0000ff00"},
2194 {{cc, r5, r8, 0xac000002},
2195 false,
2196 al,
2197 "cc r5 r8 0xac000002",
2198 "cc_r5_r8_0xac000002"},
2199 {{ne, r0, r13, 0x00ab0000},
2200 false,
2201 al,
2202 "ne r0 r13 0x00ab0000",
2203 "ne_r0_r13_0x00ab0000"},
2204 {{vs, r3, r12, 0x000ff000},
2205 false,
2206 al,
2207 "vs r3 r12 0x000ff000",
2208 "vs_r3_r12_0x000ff000"},
2209 {{gt, r3, r12, 0x000003fc},
2210 false,
2211 al,
2212 "gt r3 r12 0x000003fc",
2213 "gt_r3_r12_0x000003fc"},
2214 {{ls, r1, r1, 0x002ac000},
2215 false,
2216 al,
2217 "ls r1 r1 0x002ac000",
2218 "ls_r1_r1_0x002ac000"},
2219 {{lt, r9, r10, 0x2ac00000},
2220 false,
2221 al,
2222 "lt r9 r10 0x2ac00000",
2223 "lt_r9_r10_0x2ac00000"},
2224 {{hi, r1, r9, 0x00003fc0},
2225 false,
2226 al,
2227 "hi r1 r9 0x00003fc0",
2228 "hi_r1_r9_0x00003fc0"},
2229 {{ge, r2, r13, 0x00002ac0},
2230 false,
2231 al,
2232 "ge r2 r13 0x00002ac0",
2233 "ge_r2_r13_0x00002ac0"},
2234 {{ls, r2, r7, 0xc000003f},
2235 false,
2236 al,
2237 "ls r2 r7 0xc000003f",
2238 "ls_r2_r7_0xc000003f"},
2239 {{eq, r0, r11, 0x3fc00000},
2240 false,
2241 al,
2242 "eq r0 r11 0x3fc00000",
2243 "eq_r0_r11_0x3fc00000"},
2244 {{vc, r13, r7, 0x0000ab00},
2245 false,
2246 al,
2247 "vc r13 r7 0x0000ab00",
2248 "vc_r13_r7_0x0000ab00"},
2249 {{le, r3, r6, 0x00002ac0},
2250 false,
2251 al,
2252 "le r3 r6 0x00002ac0",
2253 "le_r3_r6_0x00002ac0"},
2254 {{cc, r3, r11, 0x0ab00000},
2255 false,
2256 al,
2257 "cc r3 r11 0x0ab00000",
2258 "cc_r3_r11_0x0ab00000"},
2259 {{ls, r9, r11, 0x000002ac},
2260 false,
2261 al,
2262 "ls r9 r11 0x000002ac",
2263 "ls_r9_r11_0x000002ac"},
2264 {{ne, r11, r4, 0x00000ff0},
2265 false,
2266 al,
2267 "ne r11 r4 0x00000ff0",
2268 "ne_r11_r4_0x00000ff0"},
2269 {{cc, r3, r15, 0xfc000003},
2270 false,
2271 al,
2272 "cc r3 r15 0xfc000003",
2273 "cc_r3_r15_0xfc000003"},
2274 {{ne, r8, r3, 0x00003fc0},
2275 false,
2276 al,
2277 "ne r8 r3 0x00003fc0",
2278 "ne_r8_r3_0x00003fc0"},
2279 {{vs, r3, r10, 0xff000000},
2280 false,
2281 al,
2282 "vs r3 r10 0xff000000",
2283 "vs_r3_r10_0xff000000"},
2284 {{mi, r9, r0, 0x000002ac},
2285 false,
2286 al,
2287 "mi r9 r0 0x000002ac",
2288 "mi_r9_r0_0x000002ac"},
2289 {{cc, r6, r3, 0x0003fc00},
2290 false,
2291 al,
2292 "cc r6 r3 0x0003fc00",
2293 "cc_r6_r3_0x0003fc00"},
2294 {{ge, r11, r11, 0xac000002},
2295 false,
2296 al,
2297 "ge r11 r11 0xac000002",
2298 "ge_r11_r11_0xac000002"},
2299 {{eq, r3, r13, 0x003fc000},
2300 false,
2301 al,
2302 "eq r3 r13 0x003fc000",
2303 "eq_r3_r13_0x003fc000"},
2304 {{le, r15, r4, 0x2ac00000},
2305 false,
2306 al,
2307 "le r15 r4 0x2ac00000",
2308 "le_r15_r4_0x2ac00000"},
2309 {{le, r15, r4, 0x03fc0000},
2310 false,
2311 al,
2312 "le r15 r4 0x03fc0000",
2313 "le_r15_r4_0x03fc0000"},
2314 {{hi, r4, r15, 0xc000002a},
2315 false,
2316 al,
2317 "hi r4 r15 0xc000002a",
2318 "hi_r4_r15_0xc000002a"},
2319 {{ge, r8, r15, 0xac000002},
2320 false,
2321 al,
2322 "ge r8 r15 0xac000002",
2323 "ge_r8_r15_0xac000002"},
2324 {{pl, r10, r7, 0x002ac000},
2325 false,
2326 al,
2327 "pl r10 r7 0x002ac000",
2328 "pl_r10_r7_0x002ac000"},
2329 {{vs, r14, r1, 0x000000ff},
2330 false,
2331 al,
2332 "vs r14 r1 0x000000ff",
2333 "vs_r14_r1_0x000000ff"},
2334 {{hi, r4, r4, 0x00000ab0},
2335 false,
2336 al,
2337 "hi r4 r4 0x00000ab0",
2338 "hi_r4_r4_0x00000ab0"},
2339 {{gt, r0, r2, 0xac000002},
2340 false,
2341 al,
2342 "gt r0 r2 0xac000002",
2343 "gt_r0_r2_0xac000002"},
2344 {{ls, r10, r1, 0x000ab000},
2345 false,
2346 al,
2347 "ls r10 r1 0x000ab000",
2348 "ls_r10_r1_0x000ab000"},
2349 {{ge, r9, r4, 0xc000003f},
2350 false,
2351 al,
2352 "ge r9 r4 0xc000003f",
2353 "ge_r9_r4_0xc000003f"},
2354 {{eq, r12, r13, 0x000ab000},
2355 false,
2356 al,
2357 "eq r12 r13 0x000ab000",
2358 "eq_r12_r13_0x000ab000"},
2359 {{eq, r8, r5, 0x0003fc00},
2360 false,
2361 al,
2362 "eq r8 r5 0x0003fc00",
2363 "eq_r8_r5_0x0003fc00"},
2364 {{lt, r1, r1, 0x0002ac00},
2365 false,
2366 al,
2367 "lt r1 r1 0x0002ac00",
2368 "lt_r1_r1_0x0002ac00"},
2369 {{lt, r14, r14, 0x00000ff0},
2370 false,
2371 al,
2372 "lt r14 r14 0x00000ff0",
2373 "lt_r14_r14_0x00000ff0"},
2374 {{gt, r0, r7, 0x000ff000},
2375 false,
2376 al,
2377 "gt r0 r7 0x000ff000",
2378 "gt_r0_r7_0x000ff000"},
2379 {{eq, r7, r13, 0x0002ac00},
2380 false,
2381 al,
2382 "eq r7 r13 0x0002ac00",
2383 "eq_r7_r13_0x0002ac00"},
2384 {{le, r4, r9, 0x0000ff00},
2385 false,
2386 al,
2387 "le r4 r9 0x0000ff00",
2388 "le_r4_r9_0x0000ff00"},
2389 {{le, r4, r12, 0xab000000},
2390 false,
2391 al,
2392 "le r4 r12 0xab000000",
2393 "le_r4_r12_0xab000000"},
2394 {{mi, r1, r8, 0x02ac0000},
2395 false,
2396 al,
2397 "mi r1 r8 0x02ac0000",
2398 "mi_r1_r8_0x02ac0000"},
2399 {{al, r9, r11, 0xc000003f},
2400 false,
2401 al,
2402 "al r9 r11 0xc000003f",
2403 "al_r9_r11_0xc000003f"},
2404 {{cs, r13, r4, 0x0ff00000},
2405 false,
2406 al,
2407 "cs r13 r4 0x0ff00000",
2408 "cs_r13_r4_0x0ff00000"},
2409 {{lt, r14, r11, 0x0000ff00},
2410 false,
2411 al,
2412 "lt r14 r11 0x0000ff00",
2413 "lt_r14_r11_0x0000ff00"},
2414 {{cc, r2, r13, 0x3fc00000},
2415 false,
2416 al,
2417 "cc r2 r13 0x3fc00000",
2418 "cc_r2_r13_0x3fc00000"},
2419 {{lt, r4, r2, 0xc000002a},
2420 false,
2421 al,
2422 "lt r4 r2 0xc000002a",
2423 "lt_r4_r2_0xc000002a"},
2424 {{vs, r9, r14, 0x00002ac0},
2425 false,
2426 al,
2427 "vs r9 r14 0x00002ac0",
2428 "vs_r9_r14_0x00002ac0"},
2429 {{eq, r1, r5, 0xc000002a},
2430 false,
2431 al,
2432 "eq r1 r5 0xc000002a",
2433 "eq_r1_r5_0xc000002a"},
2434 {{vc, r12, r5, 0x000003fc},
2435 false,
2436 al,
2437 "vc r12 r5 0x000003fc",
2438 "vc_r12_r5_0x000003fc"},
2439 {{mi, r12, r4, 0xfc000003},
2440 false,
2441 al,
2442 "mi r12 r4 0xfc000003",
2443 "mi_r12_r4_0xfc000003"},
2444 {{cc, r4, r15, 0x02ac0000},
2445 false,
2446 al,
2447 "cc r4 r15 0x02ac0000",
2448 "cc_r4_r15_0x02ac0000"},
2449 {{ls, r5, r10, 0x0000ab00},
2450 false,
2451 al,
2452 "ls r5 r10 0x0000ab00",
2453 "ls_r5_r10_0x0000ab00"},
2454 {{cc, r9, r9, 0x000003fc},
2455 false,
2456 al,
2457 "cc r9 r9 0x000003fc",
2458 "cc_r9_r9_0x000003fc"},
2459 {{pl, r5, r13, 0xff000000},
2460 false,
2461 al,
2462 "pl r5 r13 0xff000000",
2463 "pl_r5_r13_0xff000000"},
2464 {{al, r0, r1, 0xac000002},
2465 false,
2466 al,
2467 "al r0 r1 0xac000002",
2468 "al_r0_r1_0xac000002"},
2469 {{al, r12, r13, 0x00ff0000},
2470 false,
2471 al,
2472 "al r12 r13 0x00ff0000",
2473 "al_r12_r13_0x00ff0000"},
2474 {{hi, r6, r2, 0x000ff000},
2475 false,
2476 al,
2477 "hi r6 r2 0x000ff000",
2478 "hi_r6_r2_0x000ff000"},
2479 {{gt, r13, r9, 0x000000ab},
2480 false,
2481 al,
2482 "gt r13 r9 0x000000ab",
2483 "gt_r13_r9_0x000000ab"},
2484 {{hi, r14, r7, 0x0002ac00},
2485 false,
2486 al,
2487 "hi r14 r7 0x0002ac00",
2488 "hi_r14_r7_0x0002ac00"},
2489 {{lt, r4, r10, 0xb000000a},
2490 false,
2491 al,
2492 "lt r4 r10 0xb000000a",
2493 "lt_r4_r10_0xb000000a"},
2494 {{cs, r1, r14, 0x00000ff0},
2495 false,
2496 al,
2497 "cs r1 r14 0x00000ff0",
2498 "cs_r1_r14_0x00000ff0"},
2499 {{hi, r15, r8, 0x0002ac00},
2500 false,
2501 al,
2502 "hi r15 r8 0x0002ac00",
2503 "hi_r15_r8_0x0002ac00"},
2504 {{cs, r4, r10, 0x000000ab},
2505 false,
2506 al,
2507 "cs r4 r10 0x000000ab",
2508 "cs_r4_r10_0x000000ab"},
2509 {{gt, r0, r9, 0x2ac00000},
2510 false,
2511 al,
2512 "gt r0 r9 0x2ac00000",
2513 "gt_r0_r9_0x2ac00000"},
2514 {{cc, r2, r6, 0x0000ab00},
2515 false,
2516 al,
2517 "cc r2 r6 0x0000ab00",
2518 "cc_r2_r6_0x0000ab00"},
2519 {{mi, r3, r9, 0x0000ff00},
2520 false,
2521 al,
2522 "mi r3 r9 0x0000ff00",
2523 "mi_r3_r9_0x0000ff00"},
2524 {{lt, r6, r13, 0xc000002a},
2525 false,
2526 al,
2527 "lt r6 r13 0xc000002a",
2528 "lt_r6_r13_0xc000002a"},
2529 {{pl, r7, r7, 0x003fc000},
2530 false,
2531 al,
2532 "pl r7 r7 0x003fc000",
2533 "pl_r7_r7_0x003fc000"},
2534 {{cc, r1, r6, 0x003fc000},
2535 false,
2536 al,
2537 "cc r1 r6 0x003fc000",
2538 "cc_r1_r6_0x003fc000"},
2539 {{le, r9, r11, 0x000ff000},
2540 false,
2541 al,
2542 "le r9 r11 0x000ff000",
2543 "le_r9_r11_0x000ff000"},
2544 {{pl, r4, r7, 0xb000000a},
2545 false,
2546 al,
2547 "pl r4 r7 0xb000000a",
2548 "pl_r4_r7_0xb000000a"},
2549 {{al, r15, r5, 0x0000ff00},
2550 false,
2551 al,
2552 "al r15 r5 0x0000ff00",
2553 "al_r15_r5_0x0000ff00"},
2554 {{al, r11, r10, 0x00ff0000},
2555 false,
2556 al,
2557 "al r11 r10 0x00ff0000",
2558 "al_r11_r10_0x00ff0000"},
2559 {{pl, r9, r5, 0x00003fc0},
2560 false,
2561 al,
2562 "pl r9 r5 0x00003fc0",
2563 "pl_r9_r5_0x00003fc0"},
2564 {{ls, r6, r11, 0xc000003f},
2565 false,
2566 al,
2567 "ls r6 r11 0xc000003f",
2568 "ls_r6_r11_0xc000003f"},
2569 {{ge, r9, r15, 0x0ab00000},
2570 false,
2571 al,
2572 "ge r9 r15 0x0ab00000",
2573 "ge_r9_r15_0x0ab00000"},
2574 {{le, r9, r10, 0x2ac00000},
2575 false,
2576 al,
2577 "le r9 r10 0x2ac00000",
2578 "le_r9_r10_0x2ac00000"},
2579 {{ne, r0, r3, 0x00002ac0},
2580 false,
2581 al,
2582 "ne r0 r3 0x00002ac0",
2583 "ne_r0_r3_0x00002ac0"},
2584 {{gt, r13, r15, 0x00003fc0},
2585 false,
2586 al,
2587 "gt r13 r15 0x00003fc0",
2588 "gt_r13_r15_0x00003fc0"},
2589 {{ls, r4, r4, 0x00000000},
2590 false,
2591 al,
2592 "ls r4 r4 0x00000000",
2593 "ls_r4_r4_0x00000000"},
2594 {{hi, r6, r8, 0xff000000},
2595 false,
2596 al,
2597 "hi r6 r8 0xff000000",
2598 "hi_r6_r8_0xff000000"},
2599 {{cc, r11, r5, 0x0003fc00},
2600 false,
2601 al,
2602 "cc r11 r5 0x0003fc00",
2603 "cc_r11_r5_0x0003fc00"},
2604 {{vs, r5, r0, 0x00002ac0},
2605 false,
2606 al,
2607 "vs r5 r0 0x00002ac0",
2608 "vs_r5_r0_0x00002ac0"},
2609 {{vs, r1, r12, 0x0000ff00},
2610 false,
2611 al,
2612 "vs r1 r12 0x0000ff00",
2613 "vs_r1_r12_0x0000ff00"}};
2614
2615 // These headers each contain an array of `TestResult` with the reference output
2616 // values. The reference arrays are names `kReference{mnemonic}`.
2617 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-adc-a32.h"
2618 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-adcs-a32.h"
2619 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-add-a32.h"
2620 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-adds-a32.h"
2621 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-and-a32.h"
2622 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-ands-a32.h"
2623 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-bic-a32.h"
2624 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-bics-a32.h"
2625 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-eor-a32.h"
2626 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-eors-a32.h"
2627 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-orr-a32.h"
2628 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-orrs-a32.h"
2629 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-rsb-a32.h"
2630 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-rsbs-a32.h"
2631 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-rsc-a32.h"
2632 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-rscs-a32.h"
2633 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-sbc-a32.h"
2634 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-sbcs-a32.h"
2635 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-sub-a32.h"
2636 #include "aarch32/traces/assembler-cond-rd-rn-operand-const-subs-a32.h"
2637
2638
2639 // The maximum number of errors to report in detail for each test.
2640 const unsigned kErrorReportLimit = 8;
2641
2642 typedef void (MacroAssembler::*Fn)(Condition cond,
2643 Register rd,
2644 Register rn,
2645 const Operand& op);
2646
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])2647 void TestHelper(Fn instruction,
2648 const char* mnemonic,
2649 const TestResult reference[]) {
2650 unsigned total_error_count = 0;
2651 MacroAssembler masm(BUF_SIZE);
2652
2653 masm.UseA32();
2654
2655 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
2656 // Values to pass to the macro-assembler.
2657 Condition cond = kTests[i].operands.cond;
2658 Register rd = kTests[i].operands.rd;
2659 Register rn = kTests[i].operands.rn;
2660 uint32_t immediate = kTests[i].operands.immediate;
2661 Operand op(immediate);
2662
2663 int32_t start = masm.GetCursorOffset();
2664 {
2665 // We never generate more that 4 bytes, as IT instructions are only
2666 // allowed for narrow encodings.
2667 ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
2668 if (kTests[i].in_it_block) {
2669 masm.it(kTests[i].it_condition);
2670 }
2671 (masm.*instruction)(cond, rd, rn, op);
2672 }
2673 int32_t end = masm.GetCursorOffset();
2674
2675 const byte* result_ptr =
2676 masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
2677 VIXL_ASSERT(start < end);
2678 uint32_t result_size = end - start;
2679
2680 if (Test::generate_test_trace()) {
2681 // Print the result bytes.
2682 printf("const byte kInstruction_%s_%s[] = {\n",
2683 mnemonic,
2684 kTests[i].identifier);
2685 for (uint32_t j = 0; j < result_size; j++) {
2686 if (j == 0) {
2687 printf(" 0x%02" PRIx8, result_ptr[j]);
2688 } else {
2689 printf(", 0x%02" PRIx8, result_ptr[j]);
2690 }
2691 }
2692 // This comment is meant to be used by external tools to validate
2693 // the encoding. We can parse the comment to figure out what
2694 // instruction this corresponds to.
2695 if (kTests[i].in_it_block) {
2696 printf(" // It %s; %s %s\n};\n",
2697 kTests[i].it_condition.GetName(),
2698 mnemonic,
2699 kTests[i].operands_description);
2700 } else {
2701 printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
2702 }
2703 } else {
2704 // Check we've emitted the exact same encoding as present in the
2705 // trace file. Only print up to `kErrorReportLimit` errors.
2706 if (((result_size != reference[i].size) ||
2707 (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
2708 0)) &&
2709 (++total_error_count <= kErrorReportLimit)) {
2710 printf("Error when testing \"%s\" with operands \"%s\":\n",
2711 mnemonic,
2712 kTests[i].operands_description);
2713 printf(" Expected: ");
2714 for (uint32_t j = 0; j < reference[i].size; j++) {
2715 if (j == 0) {
2716 printf("0x%02" PRIx8, reference[i].encoding[j]);
2717 } else {
2718 printf(", 0x%02" PRIx8, reference[i].encoding[j]);
2719 }
2720 }
2721 printf("\n");
2722 printf(" Found: ");
2723 for (uint32_t j = 0; j < result_size; j++) {
2724 if (j == 0) {
2725 printf("0x%02" PRIx8, result_ptr[j]);
2726 } else {
2727 printf(", 0x%02" PRIx8, result_ptr[j]);
2728 }
2729 }
2730 printf("\n");
2731 }
2732 }
2733 }
2734
2735 masm.FinalizeCode();
2736
2737 if (Test::generate_test_trace()) {
2738 // Finalize the trace file by writing the final `TestResult` array
2739 // which links all generated instruction encodings.
2740 printf("const TestResult kReference%s[] = {\n", mnemonic);
2741 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
2742 printf(" {\n");
2743 printf(" ARRAY_SIZE(kInstruction_%s_%s),\n",
2744 mnemonic,
2745 kTests[i].identifier);
2746 printf(" kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
2747 printf(" },\n");
2748 }
2749 printf("};\n");
2750 } else {
2751 if (total_error_count > kErrorReportLimit) {
2752 printf("%u other errors follow.\n",
2753 total_error_count - kErrorReportLimit);
2754 }
2755 // Crash if the test failed.
2756 VIXL_CHECK(total_error_count == 0);
2757 }
2758 }
2759
2760 // Instantiate tests for each instruction in the list.
2761 #define TEST(mnemonic) \
2762 void Test_##mnemonic() { \
2763 TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
2764 } \
2765 Test test_##mnemonic("AARCH32_ASSEMBLER_COND_RD_RN_OPERAND_CONST_" #mnemonic \
2766 "_A32", \
2767 &Test_##mnemonic);
2768 FOREACH_INSTRUCTION(TEST)
2769 #undef TEST
2770
2771 } // namespace
2772 #endif
2773
2774 } // namespace aarch32
2775 } // namespace vixl
2776