• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-a32-can-use-pc-cmn.h"
1566 #include "aarch32/traces/assembler-cond-rd-operand-const-a32-can-use-pc-cmp.h"
1567 #include "aarch32/traces/assembler-cond-rd-operand-const-a32-can-use-pc-teq.h"
1568 #include "aarch32/traces/assembler-cond-rd-operand-const-a32-can-use-pc-tst.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_A32_CAN_USE_PC_" #mnemonic,  \
1697       &Test_##mnemonic);
1698 FOREACH_INSTRUCTION(TEST)
1699 #undef TEST
1700 
1701 }  // namespace
1702 #endif
1703 
1704 }  // namespace aarch32
1705 }  // namespace vixl
1706