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
47namespace vixl {
48namespace 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
81namespace {
82
83// Values to be passed to the assembler to produce the instruction under test.
84struct 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.
93struct 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
108struct TestResult {
109  size_t size;
110  const byte* encoding;
111};
112
113// Each element of this array produce one instruction encoding.
114const 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.
2640const unsigned kErrorReportLimit = 8;
2641
2642typedef void (MacroAssembler::*Fn)(Condition cond,
2643                                   Register rd,
2644                                   Register rn,
2645                                   const Operand& op);
2646
2647void 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);
2768FOREACH_INSTRUCTION(TEST)
2769#undef TEST
2770
2771}  // namespace
2772#endif
2773
2774}  // namespace aarch32
2775}  // namespace vixl
2776