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(orn)                       \
63  M(orns)                      \
64  M(orr)                       \
65  M(orrs)                      \
66  M(rsb)                       \
67  M(rsbs)                      \
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_T32
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[] = {{{al, r13, r14, 0x02ac0000},
115                            false,
116                            al,
117                            "al r13 r14 0x02ac0000",
118                            "al_r13_r14_0x02ac0000"},
119                           {{al, r10, r1, 0x00156000},
120                            false,
121                            al,
122                            "al r10 r1 0x00156000",
123                            "al_r10_r1_0x00156000"},
124                           {{al, r10, r0, 0x000003fc},
125                            false,
126                            al,
127                            "al r10 r0 0x000003fc",
128                            "al_r10_r0_0x000003fc"},
129                           {{al, r1, r11, 0x2ac00000},
130                            false,
131                            al,
132                            "al r1 r11 0x2ac00000",
133                            "al_r1_r11_0x2ac00000"},
134                           {{al, r8, r6, 0x00156000},
135                            false,
136                            al,
137                            "al r8 r6 0x00156000",
138                            "al_r8_r6_0x00156000"},
139                           {{al, r7, r12, 0x00ff0000},
140                            false,
141                            al,
142                            "al r7 r12 0x00ff0000",
143                            "al_r7_r12_0x00ff0000"},
144                           {{al, r12, r3, 0x00ff0000},
145                            false,
146                            al,
147                            "al r12 r3 0x00ff0000",
148                            "al_r12_r3_0x00ff0000"},
149                           {{al, r4, r7, 0x0000ff00},
150                            false,
151                            al,
152                            "al r4 r7 0x0000ff00",
153                            "al_r4_r7_0x0000ff00"},
154                           {{al, r11, r13, 0x0ab00000},
155                            false,
156                            al,
157                            "al r11 r13 0x0ab00000",
158                            "al_r11_r13_0x0ab00000"},
159                           {{al, r6, r12, 0xff00ff00},
160                            false,
161                            al,
162                            "al r6 r12 0xff00ff00",
163                            "al_r6_r12_0xff00ff00"},
164                           {{al, r12, r8, 0x003fc000},
165                            false,
166                            al,
167                            "al r12 r8 0x003fc000",
168                            "al_r12_r8_0x003fc000"},
169                           {{al, r5, r12, 0x00ab00ab},
170                            false,
171                            al,
172                            "al r5 r12 0x00ab00ab",
173                            "al_r5_r12_0x00ab00ab"},
174                           {{al, r7, r6, 0x00ab00ab},
175                            false,
176                            al,
177                            "al r7 r6 0x00ab00ab",
178                            "al_r7_r6_0x00ab00ab"},
179                           {{al, r0, r1, 0x00ab00ab},
180                            false,
181                            al,
182                            "al r0 r1 0x00ab00ab",
183                            "al_r0_r1_0x00ab00ab"},
184                           {{al, r9, r9, 0x000001fe},
185                            false,
186                            al,
187                            "al r9 r9 0x000001fe",
188                            "al_r9_r9_0x000001fe"},
189                           {{al, r2, r8, 0xab00ab00},
190                            false,
191                            al,
192                            "al r2 r8 0xab00ab00",
193                            "al_r2_r8_0xab00ab00"},
194                           {{al, r9, r10, 0x00ff0000},
195                            false,
196                            al,
197                            "al r9 r10 0x00ff0000",
198                            "al_r9_r10_0x00ff0000"},
199                           {{al, r8, r8, 0x55800000},
200                            false,
201                            al,
202                            "al r8 r8 0x55800000",
203                            "al_r8_r8_0x55800000"},
204                           {{al, r6, r7, 0x00ab00ab},
205                            false,
206                            al,
207                            "al r6 r7 0x00ab00ab",
208                            "al_r6_r7_0x00ab00ab"},
209                           {{al, r5, r9, 0xff000000},
210                            false,
211                            al,
212                            "al r5 r9 0xff000000",
213                            "al_r5_r9_0xff000000"},
214                           {{al, r8, r8, 0x00ab0000},
215                            false,
216                            al,
217                            "al r8 r8 0x00ab0000",
218                            "al_r8_r8_0x00ab0000"},
219                           {{al, r5, r8, 0xab00ab00},
220                            false,
221                            al,
222                            "al r5 r8 0xab00ab00",
223                            "al_r5_r8_0xab00ab00"},
224                           {{al, r0, r12, 0xab000000},
225                            false,
226                            al,
227                            "al r0 r12 0xab000000",
228                            "al_r0_r12_0xab000000"},
229                           {{al, r13, r11, 0xab000000},
230                            false,
231                            al,
232                            "al r13 r11 0xab000000",
233                            "al_r13_r11_0xab000000"},
234                           {{al, r14, r3, 0xab00ab00},
235                            false,
236                            al,
237                            "al r14 r3 0xab00ab00",
238                            "al_r14_r3_0xab00ab00"},
239                           {{al, r0, r1, 0x0003fc00},
240                            false,
241                            al,
242                            "al r0 r1 0x0003fc00",
243                            "al_r0_r1_0x0003fc00"},
244                           {{al, r14, r13, 0x0ab00000},
245                            false,
246                            al,
247                            "al r14 r13 0x0ab00000",
248                            "al_r14_r13_0x0ab00000"},
249                           {{al, r6, r0, 0x0002ac00},
250                            false,
251                            al,
252                            "al r6 r0 0x0002ac00",
253                            "al_r6_r0_0x0002ac00"},
254                           {{al, r6, r8, 0x55800000},
255                            false,
256                            al,
257                            "al r6 r8 0x55800000",
258                            "al_r6_r8_0x55800000"},
259                           {{al, r2, r14, 0x01560000},
260                            false,
261                            al,
262                            "al r2 r14 0x01560000",
263                            "al_r2_r14_0x01560000"},
264                           {{al, r5, r13, 0x03fc0000},
265                            false,
266                            al,
267                            "al r5 r13 0x03fc0000",
268                            "al_r5_r13_0x03fc0000"},
269                           {{al, r7, r6, 0x00000ab0},
270                            false,
271                            al,
272                            "al r7 r6 0x00000ab0",
273                            "al_r7_r6_0x00000ab0"},
274                           {{al, r3, r14, 0x007f8000},
275                            false,
276                            al,
277                            "al r3 r14 0x007f8000",
278                            "al_r3_r14_0x007f8000"},
279                           {{al, r9, r4, 0x00558000},
280                            false,
281                            al,
282                            "al r9 r4 0x00558000",
283                            "al_r9_r4_0x00558000"},
284                           {{al, r10, r11, 0x00002ac0},
285                            false,
286                            al,
287                            "al r10 r11 0x00002ac0",
288                            "al_r10_r11_0x00002ac0"},
289                           {{al, r1, r5, 0x003fc000},
290                            false,
291                            al,
292                            "al r1 r5 0x003fc000",
293                            "al_r1_r5_0x003fc000"},
294                           {{al, r7, r7, 0x00003fc0},
295                            false,
296                            al,
297                            "al r7 r7 0x00003fc0",
298                            "al_r7_r7_0x00003fc0"},
299                           {{al, r5, r3, 0x000007f8},
300                            false,
301                            al,
302                            "al r5 r3 0x000007f8",
303                            "al_r5_r3_0x000007f8"},
304                           {{al, r4, r3, 0x00001560},
305                            false,
306                            al,
307                            "al r4 r3 0x00001560",
308                            "al_r4_r3_0x00001560"},
309                           {{al, r5, r3, 0x03fc0000},
310                            false,
311                            al,
312                            "al r5 r3 0x03fc0000",
313                            "al_r5_r3_0x03fc0000"},
314                           {{al, r2, r6, 0x55800000},
315                            false,
316                            al,
317                            "al r2 r6 0x55800000",
318                            "al_r2_r6_0x55800000"},
319                           {{al, r13, r5, 0x0000ab00},
320                            false,
321                            al,
322                            "al r13 r5 0x0000ab00",
323                            "al_r13_r5_0x0000ab00"},
324                           {{al, r0, r11, 0xab00ab00},
325                            false,
326                            al,
327                            "al r0 r11 0xab00ab00",
328                            "al_r0_r11_0xab00ab00"},
329                           {{al, r14, r12, 0x00ff00ff},
330                            false,
331                            al,
332                            "al r14 r12 0x00ff00ff",
333                            "al_r14_r12_0x00ff00ff"},
334                           {{al, r13, r8, 0x7f800000},
335                            false,
336                            al,
337                            "al r13 r8 0x7f800000",
338                            "al_r13_r8_0x7f800000"},
339                           {{al, r1, r2, 0x15600000},
340                            false,
341                            al,
342                            "al r1 r2 0x15600000",
343                            "al_r1_r2_0x15600000"},
344                           {{al, r7, r6, 0xab000000},
345                            false,
346                            al,
347                            "al r7 r6 0xab000000",
348                            "al_r7_r6_0xab000000"},
349                           {{al, r1, r9, 0x00000ff0},
350                            false,
351                            al,
352                            "al r1 r9 0x00000ff0",
353                            "al_r1_r9_0x00000ff0"},
354                           {{al, r12, r8, 0x0007f800},
355                            false,
356                            al,
357                            "al r12 r8 0x0007f800",
358                            "al_r12_r8_0x0007f800"},
359                           {{al, r0, r8, 0x00ab0000},
360                            false,
361                            al,
362                            "al r0 r8 0x00ab0000",
363                            "al_r0_r8_0x00ab0000"},
364                           {{al, r11, r11, 0x000000ff},
365                            false,
366                            al,
367                            "al r11 r11 0x000000ff",
368                            "al_r11_r11_0x000000ff"},
369                           {{al, r12, r13, 0xff000000},
370                            false,
371                            al,
372                            "al r12 r13 0xff000000",
373                            "al_r12_r13_0xff000000"},
374                           {{al, r1, r3, 0x0ab00000},
375                            false,
376                            al,
377                            "al r1 r3 0x0ab00000",
378                            "al_r1_r3_0x0ab00000"},
379                           {{al, r2, r10, 0x0001fe00},
380                            false,
381                            al,
382                            "al r2 r10 0x0001fe00",
383                            "al_r2_r10_0x0001fe00"},
384                           {{al, r14, r2, 0x01fe0000},
385                            false,
386                            al,
387                            "al r14 r2 0x01fe0000",
388                            "al_r14_r2_0x01fe0000"},
389                           {{al, r3, r4, 0x000000ff},
390                            false,
391                            al,
392                            "al r3 r4 0x000000ff",
393                            "al_r3_r4_0x000000ff"},
394                           {{al, r3, r13, 0x00000558},
395                            false,
396                            al,
397                            "al r3 r13 0x00000558",
398                            "al_r3_r13_0x00000558"},
399                           {{al, r13, r10, 0x00055800},
400                            false,
401                            al,
402                            "al r13 r10 0x00055800",
403                            "al_r13_r10_0x00055800"},
404                           {{al, r1, r10, 0xff000000},
405                            false,
406                            al,
407                            "al r1 r10 0xff000000",
408                            "al_r1_r10_0xff000000"},
409                           {{al, r0, r7, 0x2ac00000},
410                            false,
411                            al,
412                            "al r0 r7 0x2ac00000",
413                            "al_r0_r7_0x2ac00000"},
414                           {{al, r12, r1, 0xab000000},
415                            false,
416                            al,
417                            "al r12 r1 0xab000000",
418                            "al_r12_r1_0xab000000"},
419                           {{al, r9, r14, 0x00003fc0},
420                            false,
421                            al,
422                            "al r9 r14 0x00003fc0",
423                            "al_r9_r14_0x00003fc0"},
424                           {{al, r7, r2, 0x2ac00000},
425                            false,
426                            al,
427                            "al r7 r2 0x2ac00000",
428                            "al_r7_r2_0x2ac00000"},
429                           {{al, r14, r4, 0x00001fe0},
430                            false,
431                            al,
432                            "al r14 r4 0x00001fe0",
433                            "al_r14_r4_0x00001fe0"},
434                           {{al, r12, r8, 0x00007f80},
435                            false,
436                            al,
437                            "al r12 r8 0x00007f80",
438                            "al_r12_r8_0x00007f80"},
439                           {{al, r7, r10, 0x00000ab0},
440                            false,
441                            al,
442                            "al r7 r10 0x00000ab0",
443                            "al_r7_r10_0x00000ab0"},
444                           {{al, r13, r6, 0x00ab0000},
445                            false,
446                            al,
447                            "al r13 r6 0x00ab0000",
448                            "al_r13_r6_0x00ab0000"},
449                           {{al, r7, r9, 0x0000ff00},
450                            false,
451                            al,
452                            "al r7 r9 0x0000ff00",
453                            "al_r7_r9_0x0000ff00"},
454                           {{al, r2, r12, 0xff00ff00},
455                            false,
456                            al,
457                            "al r2 r12 0xff00ff00",
458                            "al_r2_r12_0xff00ff00"},
459                           {{al, r1, r6, 0x00000156},
460                            false,
461                            al,
462                            "al r1 r6 0x00000156",
463                            "al_r1_r6_0x00000156"},
464                           {{al, r7, r5, 0x03fc0000},
465                            false,
466                            al,
467                            "al r7 r5 0x03fc0000",
468                            "al_r7_r5_0x03fc0000"},
469                           {{al, r2, r9, 0x01fe0000},
470                            false,
471                            al,
472                            "al r2 r9 0x01fe0000",
473                            "al_r2_r9_0x01fe0000"},
474                           {{al, r10, r12, 0x00002ac0},
475                            false,
476                            al,
477                            "al r10 r12 0x00002ac0",
478                            "al_r10_r12_0x00002ac0"},
479                           {{al, r14, r10, 0x7f800000},
480                            false,
481                            al,
482                            "al r14 r10 0x7f800000",
483                            "al_r14_r10_0x7f800000"},
484                           {{al, r2, r8, 0x02ac0000},
485                            false,
486                            al,
487                            "al r2 r8 0x02ac0000",
488                            "al_r2_r8_0x02ac0000"},
489                           {{al, r4, r9, 0x000001fe},
490                            false,
491                            al,
492                            "al r4 r9 0x000001fe",
493                            "al_r4_r9_0x000001fe"},
494                           {{al, r10, r10, 0x000001fe},
495                            false,
496                            al,
497                            "al r10 r10 0x000001fe",
498                            "al_r10_r10_0x000001fe"},
499                           {{al, r6, r6, 0x3fc00000},
500                            false,
501                            al,
502                            "al r6 r6 0x3fc00000",
503                            "al_r6_r6_0x3fc00000"},
504                           {{al, r4, r12, 0x000003fc},
505                            false,
506                            al,
507                            "al r4 r12 0x000003fc",
508                            "al_r4_r12_0x000003fc"},
509                           {{al, r0, r2, 0x0000ff00},
510                            false,
511                            al,
512                            "al r0 r2 0x0000ff00",
513                            "al_r0_r2_0x0000ff00"},
514                           {{al, r9, r0, 0x003fc000},
515                            false,
516                            al,
517                            "al r9 r0 0x003fc000",
518                            "al_r9_r0_0x003fc000"},
519                           {{al, r7, r4, 0x000002ac},
520                            false,
521                            al,
522                            "al r7 r4 0x000002ac",
523                            "al_r7_r4_0x000002ac"},
524                           {{al, r6, r6, 0x7f800000},
525                            false,
526                            al,
527                            "al r6 r6 0x7f800000",
528                            "al_r6_r6_0x7f800000"},
529                           {{al, r6, r8, 0x00015600},
530                            false,
531                            al,
532                            "al r6 r8 0x00015600",
533                            "al_r6_r8_0x00015600"},
534                           {{al, r10, r0, 0x00000ff0},
535                            false,
536                            al,
537                            "al r10 r0 0x00000ff0",
538                            "al_r10_r0_0x00000ff0"},
539                           {{al, r8, r1, 0xffffffff},
540                            false,
541                            al,
542                            "al r8 r1 0xffffffff",
543                            "al_r8_r1_0xffffffff"},
544                           {{al, r3, r7, 0x00ab00ab},
545                            false,
546                            al,
547                            "al r3 r7 0x00ab00ab",
548                            "al_r3_r7_0x00ab00ab"},
549                           {{al, r8, r11, 0x01fe0000},
550                            false,
551                            al,
552                            "al r8 r11 0x01fe0000",
553                            "al_r8_r11_0x01fe0000"},
554                           {{al, r3, r1, 0x00ff0000},
555                            false,
556                            al,
557                            "al r3 r1 0x00ff0000",
558                            "al_r3_r1_0x00ff0000"},
559                           {{al, r5, r4, 0x000001fe},
560                            false,
561                            al,
562                            "al r5 r4 0x000001fe",
563                            "al_r5_r4_0x000001fe"},
564                           {{al, r7, r10, 0x00000558},
565                            false,
566                            al,
567                            "al r7 r10 0x00000558",
568                            "al_r7_r10_0x00000558"},
569                           {{al, r8, r13, 0x00001560},
570                            false,
571                            al,
572                            "al r8 r13 0x00001560",
573                            "al_r8_r13_0x00001560"},
574                           {{al, r9, r4, 0x00002ac0},
575                            false,
576                            al,
577                            "al r9 r4 0x00002ac0",
578                            "al_r9_r4_0x00002ac0"},
579                           {{al, r9, r7, 0x03fc0000},
580                            false,
581                            al,
582                            "al r9 r7 0x03fc0000",
583                            "al_r9_r7_0x03fc0000"},
584                           {{al, r11, r12, 0x2ac00000},
585                            false,
586                            al,
587                            "al r11 r12 0x2ac00000",
588                            "al_r11_r12_0x2ac00000"},
589                           {{al, r13, r10, 0x00001fe0},
590                            false,
591                            al,
592                            "al r13 r10 0x00001fe0",
593                            "al_r13_r10_0x00001fe0"},
594                           {{al, r11, r10, 0x00558000},
595                            false,
596                            al,
597                            "al r11 r10 0x00558000",
598                            "al_r11_r10_0x00558000"},
599                           {{al, r3, r2, 0x000000ab},
600                            false,
601                            al,
602                            "al r3 r2 0x000000ab",
603                            "al_r3_r2_0x000000ab"},
604                           {{al, r0, r8, 0x00000ab0},
605                            false,
606                            al,
607                            "al r0 r8 0x00000ab0",
608                            "al_r0_r8_0x00000ab0"},
609                           {{al, r9, r7, 0xab000000},
610                            false,
611                            al,
612                            "al r9 r7 0xab000000",
613                            "al_r9_r7_0xab000000"},
614                           {{al, r11, r7, 0x0ff00000},
615                            false,
616                            al,
617                            "al r11 r7 0x0ff00000",
618                            "al_r11_r7_0x0ff00000"},
619                           {{al, r10, r2, 0x7f800000},
620                            false,
621                            al,
622                            "al r10 r2 0x7f800000",
623                            "al_r10_r2_0x7f800000"},
624                           {{al, r3, r1, 0x05580000},
625                            false,
626                            al,
627                            "al r3 r1 0x05580000",
628                            "al_r3_r1_0x05580000"},
629                           {{al, r1, r4, 0x0ab00000},
630                            false,
631                            al,
632                            "al r1 r4 0x0ab00000",
633                            "al_r1_r4_0x0ab00000"},
634                           {{al, r4, r9, 0x00005580},
635                            false,
636                            al,
637                            "al r4 r9 0x00005580",
638                            "al_r4_r9_0x00005580"},
639                           {{al, r3, r2, 0x001fe000},
640                            false,
641                            al,
642                            "al r3 r2 0x001fe000",
643                            "al_r3_r2_0x001fe000"},
644                           {{al, r14, r6, 0x00000156},
645                            false,
646                            al,
647                            "al r14 r6 0x00000156",
648                            "al_r14_r6_0x00000156"},
649                           {{al, r14, r3, 0x00000ab0},
650                            false,
651                            al,
652                            "al r14 r3 0x00000ab0",
653                            "al_r14_r3_0x00000ab0"},
654                           {{al, r12, r13, 0x000001fe},
655                            false,
656                            al,
657                            "al r12 r13 0x000001fe",
658                            "al_r12_r13_0x000001fe"},
659                           {{al, r12, r10, 0x1fe00000},
660                            false,
661                            al,
662                            "al r12 r10 0x1fe00000",
663                            "al_r12_r10_0x1fe00000"},
664                           {{al, r0, r9, 0x2ac00000},
665                            false,
666                            al,
667                            "al r0 r9 0x2ac00000",
668                            "al_r0_r9_0x2ac00000"},
669                           {{al, r11, r6, 0x00000156},
670                            false,
671                            al,
672                            "al r11 r6 0x00000156",
673                            "al_r11_r6_0x00000156"},
674                           {{al, r2, r4, 0x3fc00000},
675                            false,
676                            al,
677                            "al r2 r4 0x3fc00000",
678                            "al_r2_r4_0x3fc00000"},
679                           {{al, r8, r13, 0x00002ac0},
680                            false,
681                            al,
682                            "al r8 r13 0x00002ac0",
683                            "al_r8_r13_0x00002ac0"},
684                           {{al, r1, r5, 0x00ff00ff},
685                            false,
686                            al,
687                            "al r1 r5 0x00ff00ff",
688                            "al_r1_r5_0x00ff00ff"},
689                           {{al, r6, r1, 0x0007f800},
690                            false,
691                            al,
692                            "al r6 r1 0x0007f800",
693                            "al_r6_r1_0x0007f800"},
694                           {{al, r5, r1, 0x00001fe0},
695                            false,
696                            al,
697                            "al r5 r1 0x00001fe0",
698                            "al_r5_r1_0x00001fe0"},
699                           {{al, r8, r11, 0xab00ab00},
700                            false,
701                            al,
702                            "al r8 r11 0xab00ab00",
703                            "al_r8_r11_0xab00ab00"},
704                           {{al, r5, r0, 0xff00ff00},
705                            false,
706                            al,
707                            "al r5 r0 0xff00ff00",
708                            "al_r5_r0_0xff00ff00"},
709                           {{al, r14, r13, 0x000000ab},
710                            false,
711                            al,
712                            "al r14 r13 0x000000ab",
713                            "al_r14_r13_0x000000ab"},
714                           {{al, r2, r4, 0x05580000},
715                            false,
716                            al,
717                            "al r2 r4 0x05580000",
718                            "al_r2_r4_0x05580000"},
719                           {{al, r14, r10, 0x07f80000},
720                            false,
721                            al,
722                            "al r14 r10 0x07f80000",
723                            "al_r14_r10_0x07f80000"},
724                           {{al, r10, r3, 0x55800000},
725                            false,
726                            al,
727                            "al r10 r3 0x55800000",
728                            "al_r10_r3_0x55800000"},
729                           {{al, r0, r11, 0x7f800000},
730                            false,
731                            al,
732                            "al r0 r11 0x7f800000",
733                            "al_r0_r11_0x7f800000"},
734                           {{al, r3, r12, 0xffffffff},
735                            false,
736                            al,
737                            "al r3 r12 0xffffffff",
738                            "al_r3_r12_0xffffffff"},
739                           {{al, r2, r3, 0x00000558},
740                            false,
741                            al,
742                            "al r2 r3 0x00000558",
743                            "al_r2_r3_0x00000558"},
744                           {{al, r2, r2, 0x0003fc00},
745                            false,
746                            al,
747                            "al r2 r2 0x0003fc00",
748                            "al_r2_r2_0x0003fc00"},
749                           {{al, r14, r10, 0x15600000},
750                            false,
751                            al,
752                            "al r14 r10 0x15600000",
753                            "al_r14_r10_0x15600000"},
754                           {{al, r3, r13, 0x00000156},
755                            false,
756                            al,
757                            "al r3 r13 0x00000156",
758                            "al_r3_r13_0x00000156"},
759                           {{al, r10, r5, 0x1fe00000},
760                            false,
761                            al,
762                            "al r10 r5 0x1fe00000",
763                            "al_r10_r5_0x1fe00000"},
764                           {{al, r1, r5, 0x00055800},
765                            false,
766                            al,
767                            "al r1 r5 0x00055800",
768                            "al_r1_r5_0x00055800"},
769                           {{al, r8, r6, 0xff000000},
770                            false,
771                            al,
772                            "al r8 r6 0xff000000",
773                            "al_r8_r6_0xff000000"},
774                           {{al, r3, r7, 0x002ac000},
775                            false,
776                            al,
777                            "al r3 r7 0x002ac000",
778                            "al_r3_r7_0x002ac000"},
779                           {{al, r6, r4, 0x00ff00ff},
780                            false,
781                            al,
782                            "al r6 r4 0x00ff00ff",
783                            "al_r6_r4_0x00ff00ff"},
784                           {{al, r0, r8, 0x0007f800},
785                            false,
786                            al,
787                            "al r0 r8 0x0007f800",
788                            "al_r0_r8_0x0007f800"},
789                           {{al, r0, r3, 0xff000000},
790                            false,
791                            al,
792                            "al r0 r3 0xff000000",
793                            "al_r0_r3_0xff000000"},
794                           {{al, r11, r1, 0xabababab},
795                            false,
796                            al,
797                            "al r11 r1 0xabababab",
798                            "al_r11_r1_0xabababab"},
799                           {{al, r14, r10, 0x000001fe},
800                            false,
801                            al,
802                            "al r14 r10 0x000001fe",
803                            "al_r14_r10_0x000001fe"},
804                           {{al, r4, r11, 0x002ac000},
805                            false,
806                            al,
807                            "al r4 r11 0x002ac000",
808                            "al_r4_r11_0x002ac000"},
809                           {{al, r11, r12, 0x000000ab},
810                            false,
811                            al,
812                            "al r11 r12 0x000000ab",
813                            "al_r11_r12_0x000000ab"},
814                           {{al, r3, r4, 0x003fc000},
815                            false,
816                            al,
817                            "al r3 r4 0x003fc000",
818                            "al_r3_r4_0x003fc000"},
819                           {{al, r3, r13, 0x0ff00000},
820                            false,
821                            al,
822                            "al r3 r13 0x0ff00000",
823                            "al_r3_r13_0x0ff00000"},
824                           {{al, r5, r4, 0x00001fe0},
825                            false,
826                            al,
827                            "al r5 r4 0x00001fe0",
828                            "al_r5_r4_0x00001fe0"},
829                           {{al, r6, r12, 0x002ac000},
830                            false,
831                            al,
832                            "al r6 r12 0x002ac000",
833                            "al_r6_r12_0x002ac000"},
834                           {{al, r13, r13, 0x1fe00000},
835                            false,
836                            al,
837                            "al r13 r13 0x1fe00000",
838                            "al_r13_r13_0x1fe00000"},
839                           {{al, r0, r8, 0x01560000},
840                            false,
841                            al,
842                            "al r0 r8 0x01560000",
843                            "al_r0_r8_0x01560000"},
844                           {{al, r9, r7, 0x00055800},
845                            false,
846                            al,
847                            "al r9 r7 0x00055800",
848                            "al_r9_r7_0x00055800"},
849                           {{al, r6, r0, 0x00000156},
850                            false,
851                            al,
852                            "al r6 r0 0x00000156",
853                            "al_r6_r0_0x00000156"},
854                           {{al, r14, r12, 0x00055800},
855                            false,
856                            al,
857                            "al r14 r12 0x00055800",
858                            "al_r14_r12_0x00055800"},
859                           {{al, r14, r0, 0xab00ab00},
860                            false,
861                            al,
862                            "al r14 r0 0xab00ab00",
863                            "al_r14_r0_0xab00ab00"},
864                           {{al, r14, r2, 0x00ab0000},
865                            false,
866                            al,
867                            "al r14 r2 0x00ab0000",
868                            "al_r14_r2_0x00ab0000"},
869                           {{al, r0, r3, 0x000000ab},
870                            false,
871                            al,
872                            "al r0 r3 0x000000ab",
873                            "al_r0_r3_0x000000ab"},
874                           {{al, r13, r4, 0x003fc000},
875                            false,
876                            al,
877                            "al r13 r4 0x003fc000",
878                            "al_r13_r4_0x003fc000"},
879                           {{al, r4, r2, 0x00001560},
880                            false,
881                            al,
882                            "al r4 r2 0x00001560",
883                            "al_r4_r2_0x00001560"},
884                           {{al, r14, r4, 0x2ac00000},
885                            false,
886                            al,
887                            "al r14 r4 0x2ac00000",
888                            "al_r14_r4_0x2ac00000"},
889                           {{al, r4, r11, 0x000003fc},
890                            false,
891                            al,
892                            "al r4 r11 0x000003fc",
893                            "al_r4_r11_0x000003fc"},
894                           {{al, r6, r8, 0x001fe000},
895                            false,
896                            al,
897                            "al r6 r8 0x001fe000",
898                            "al_r6_r8_0x001fe000"},
899                           {{al, r12, r14, 0x00000558},
900                            false,
901                            al,
902                            "al r12 r14 0x00000558",
903                            "al_r12_r14_0x00000558"},
904                           {{al, r0, r13, 0x0ff00000},
905                            false,
906                            al,
907                            "al r0 r13 0x0ff00000",
908                            "al_r0_r13_0x0ff00000"},
909                           {{al, r3, r11, 0xabababab},
910                            false,
911                            al,
912                            "al r3 r11 0xabababab",
913                            "al_r3_r11_0xabababab"},
914                           {{al, r4, r1, 0x000001fe},
915                            false,
916                            al,
917                            "al r4 r1 0x000001fe",
918                            "al_r4_r1_0x000001fe"},
919                           {{al, r0, r5, 0x000002ac},
920                            false,
921                            al,
922                            "al r0 r5 0x000002ac",
923                            "al_r0_r5_0x000002ac"},
924                           {{al, r8, r5, 0x0003fc00},
925                            false,
926                            al,
927                            "al r8 r5 0x0003fc00",
928                            "al_r8_r5_0x0003fc00"},
929                           {{al, r7, r13, 0x0002ac00},
930                            false,
931                            al,
932                            "al r7 r13 0x0002ac00",
933                            "al_r7_r13_0x0002ac00"},
934                           {{al, r10, r6, 0x00015600},
935                            false,
936                            al,
937                            "al r10 r6 0x00015600",
938                            "al_r10_r6_0x00015600"},
939                           {{al, r12, r10, 0x00ff0000},
940                            false,
941                            al,
942                            "al r12 r10 0x00ff0000",
943                            "al_r12_r10_0x00ff0000"},
944                           {{al, r12, r12, 0x00005580},
945                            false,
946                            al,
947                            "al r12 r12 0x00005580",
948                            "al_r12_r12_0x00005580"},
949                           {{al, r0, r4, 0x02ac0000},
950                            false,
951                            al,
952                            "al r0 r4 0x02ac0000",
953                            "al_r0_r4_0x02ac0000"},
954                           {{al, r9, r9, 0x02ac0000},
955                            false,
956                            al,
957                            "al r9 r9 0x02ac0000",
958                            "al_r9_r9_0x02ac0000"},
959                           {{al, r7, r4, 0x00000558},
960                            false,
961                            al,
962                            "al r7 r4 0x00000558",
963                            "al_r7_r4_0x00000558"},
964                           {{al, r12, r14, 0x07f80000},
965                            false,
966                            al,
967                            "al r12 r14 0x07f80000",
968                            "al_r12_r14_0x07f80000"},
969                           {{al, r7, r2, 0xab00ab00},
970                            false,
971                            al,
972                            "al r7 r2 0xab00ab00",
973                            "al_r7_r2_0xab00ab00"},
974                           {{al, r1, r12, 0xff000000},
975                            false,
976                            al,
977                            "al r1 r12 0xff000000",
978                            "al_r1_r12_0xff000000"},
979                           {{al, r8, r0, 0x7f800000},
980                            false,
981                            al,
982                            "al r8 r0 0x7f800000",
983                            "al_r8_r0_0x7f800000"},
984                           {{al, r7, r0, 0x00000ab0},
985                            false,
986                            al,
987                            "al r7 r0 0x00000ab0",
988                            "al_r7_r0_0x00000ab0"},
989                           {{al, r1, r0, 0x00005580},
990                            false,
991                            al,
992                            "al r1 r0 0x00005580",
993                            "al_r1_r0_0x00005580"},
994                           {{al, r14, r1, 0x001fe000},
995                            false,
996                            al,
997                            "al r14 r1 0x001fe000",
998                            "al_r14_r1_0x001fe000"},
999                           {{al, r13, r13, 0x0002ac00},
1000                            false,
1001                            al,
1002                            "al r13 r13 0x0002ac00",
1003                            "al_r13_r13_0x0002ac00"},
1004                           {{al, r8, r12, 0x0002ac00},
1005                            false,
1006                            al,
1007                            "al r8 r12 0x0002ac00",
1008                            "al_r8_r12_0x0002ac00"},
1009                           {{al, r10, r10, 0x00ff00ff},
1010                            false,
1011                            al,
1012                            "al r10 r10 0x00ff00ff",
1013                            "al_r10_r10_0x00ff00ff"},
1014                           {{al, r4, r4, 0x002ac000},
1015                            false,
1016                            al,
1017                            "al r4 r4 0x002ac000",
1018                            "al_r4_r4_0x002ac000"},
1019                           {{al, r12, r5, 0x000ab000},
1020                            false,
1021                            al,
1022                            "al r12 r5 0x000ab000",
1023                            "al_r12_r5_0x000ab000"},
1024                           {{al, r1, r2, 0x000003fc},
1025                            false,
1026                            al,
1027                            "al r1 r2 0x000003fc",
1028                            "al_r1_r2_0x000003fc"},
1029                           {{al, r10, r11, 0x001fe000},
1030                            false,
1031                            al,
1032                            "al r10 r11 0x001fe000",
1033                            "al_r10_r11_0x001fe000"},
1034                           {{al, r11, r2, 0x05580000},
1035                            false,
1036                            al,
1037                            "al r11 r2 0x05580000",
1038                            "al_r11_r2_0x05580000"},
1039                           {{al, r2, r6, 0x000000ab},
1040                            false,
1041                            al,
1042                            "al r2 r6 0x000000ab",
1043                            "al_r2_r6_0x000000ab"},
1044                           {{al, r6, r3, 0x0000ff00},
1045                            false,
1046                            al,
1047                            "al r6 r3 0x0000ff00",
1048                            "al_r6_r3_0x0000ff00"},
1049                           {{al, r13, r0, 0x00156000},
1050                            false,
1051                            al,
1052                            "al r13 r0 0x00156000",
1053                            "al_r13_r0_0x00156000"},
1054                           {{al, r2, r9, 0x00002ac0},
1055                            false,
1056                            al,
1057                            "al r2 r9 0x00002ac0",
1058                            "al_r2_r9_0x00002ac0"},
1059                           {{al, r11, r7, 0x00055800},
1060                            false,
1061                            al,
1062                            "al r11 r7 0x00055800",
1063                            "al_r11_r7_0x00055800"},
1064                           {{al, r10, r9, 0x00001fe0},
1065                            false,
1066                            al,
1067                            "al r10 r9 0x00001fe0",
1068                            "al_r10_r9_0x00001fe0"},
1069                           {{al, r10, r11, 0x00156000},
1070                            false,
1071                            al,
1072                            "al r10 r11 0x00156000",
1073                            "al_r10_r11_0x00156000"},
1074                           {{al, r12, r10, 0xff00ff00},
1075                            false,
1076                            al,
1077                            "al r12 r10 0xff00ff00",
1078                            "al_r12_r10_0xff00ff00"},
1079                           {{al, r7, r14, 0x00ab00ab},
1080                            false,
1081                            al,
1082                            "al r7 r14 0x00ab00ab",
1083                            "al_r7_r14_0x00ab00ab"},
1084                           {{al, r14, r7, 0x002ac000},
1085                            false,
1086                            al,
1087                            "al r14 r7 0x002ac000",
1088                            "al_r14_r7_0x002ac000"},
1089                           {{al, r5, r6, 0x000ff000},
1090                            false,
1091                            al,
1092                            "al r5 r6 0x000ff000",
1093                            "al_r5_r6_0x000ff000"},
1094                           {{al, r8, r1, 0xff000000},
1095                            false,
1096                            al,
1097                            "al r8 r1 0xff000000",
1098                            "al_r8_r1_0xff000000"},
1099                           {{al, r8, r0, 0x000002ac},
1100                            false,
1101                            al,
1102                            "al r8 r0 0x000002ac",
1103                            "al_r8_r0_0x000002ac"},
1104                           {{al, r12, r6, 0x00002ac0},
1105                            false,
1106                            al,
1107                            "al r12 r6 0x00002ac0",
1108                            "al_r12_r6_0x00002ac0"},
1109                           {{al, r14, r2, 0x3fc00000},
1110                            false,
1111                            al,
1112                            "al r14 r2 0x3fc00000",
1113                            "al_r14_r2_0x3fc00000"},
1114                           {{al, r3, r3, 0x01560000},
1115                            false,
1116                            al,
1117                            "al r3 r3 0x01560000",
1118                            "al_r3_r3_0x01560000"},
1119                           {{al, r3, r12, 0x0001fe00},
1120                            false,
1121                            al,
1122                            "al r3 r12 0x0001fe00",
1123                            "al_r3_r12_0x0001fe00"},
1124                           {{al, r8, r10, 0x000002ac},
1125                            false,
1126                            al,
1127                            "al r8 r10 0x000002ac",
1128                            "al_r8_r10_0x000002ac"},
1129                           {{al, r9, r9, 0x002ac000},
1130                            false,
1131                            al,
1132                            "al r9 r9 0x002ac000",
1133                            "al_r9_r9_0x002ac000"},
1134                           {{al, r0, r6, 0x00156000},
1135                            false,
1136                            al,
1137                            "al r0 r6 0x00156000",
1138                            "al_r0_r6_0x00156000"},
1139                           {{al, r14, r7, 0x0ff00000},
1140                            false,
1141                            al,
1142                            "al r14 r7 0x0ff00000",
1143                            "al_r14_r7_0x0ff00000"},
1144                           {{al, r1, r3, 0x00005580},
1145                            false,
1146                            al,
1147                            "al r1 r3 0x00005580",
1148                            "al_r1_r3_0x00005580"},
1149                           {{al, r14, r7, 0x000001fe},
1150                            false,
1151                            al,
1152                            "al r14 r7 0x000001fe",
1153                            "al_r14_r7_0x000001fe"},
1154                           {{al, r9, r5, 0x03fc0000},
1155                            false,
1156                            al,
1157                            "al r9 r5 0x03fc0000",
1158                            "al_r9_r5_0x03fc0000"},
1159                           {{al, r7, r14, 0x002ac000},
1160                            false,
1161                            al,
1162                            "al r7 r14 0x002ac000",
1163                            "al_r7_r14_0x002ac000"},
1164                           {{al, r8, r9, 0x00000558},
1165                            false,
1166                            al,
1167                            "al r8 r9 0x00000558",
1168                            "al_r8_r9_0x00000558"},
1169                           {{al, r14, r1, 0x007f8000},
1170                            false,
1171                            al,
1172                            "al r14 r1 0x007f8000",
1173                            "al_r14_r1_0x007f8000"},
1174                           {{al, r11, r0, 0xab00ab00},
1175                            false,
1176                            al,
1177                            "al r11 r0 0xab00ab00",
1178                            "al_r11_r0_0xab00ab00"},
1179                           {{al, r11, r8, 0x00000156},
1180                            false,
1181                            al,
1182                            "al r11 r8 0x00000156",
1183                            "al_r11_r8_0x00000156"},
1184                           {{al, r4, r10, 0x00055800},
1185                            false,
1186                            al,
1187                            "al r4 r10 0x00055800",
1188                            "al_r4_r10_0x00055800"},
1189                           {{al, r2, r7, 0x00007f80},
1190                            false,
1191                            al,
1192                            "al r2 r7 0x00007f80",
1193                            "al_r2_r7_0x00007f80"},
1194                           {{al, r0, r6, 0x00558000},
1195                            false,
1196                            al,
1197                            "al r0 r6 0x00558000",
1198                            "al_r0_r6_0x00558000"},
1199                           {{al, r4, r2, 0x00558000},
1200                            false,
1201                            al,
1202                            "al r4 r2 0x00558000",
1203                            "al_r4_r2_0x00558000"},
1204                           {{al, r2, r3, 0x0007f800},
1205                            false,
1206                            al,
1207                            "al r2 r3 0x0007f800",
1208                            "al_r2_r3_0x0007f800"},
1209                           {{al, r14, r14, 0xab00ab00},
1210                            false,
1211                            al,
1212                            "al r14 r14 0xab00ab00",
1213                            "al_r14_r14_0xab00ab00"},
1214                           {{al, r0, r13, 0x000000ff},
1215                            false,
1216                            al,
1217                            "al r0 r13 0x000000ff",
1218                            "al_r0_r13_0x000000ff"},
1219                           {{al, r10, r9, 0xab00ab00},
1220                            false,
1221                            al,
1222                            "al r10 r9 0xab00ab00",
1223                            "al_r10_r9_0xab00ab00"},
1224                           {{al, r1, r1, 0x3fc00000},
1225                            false,
1226                            al,
1227                            "al r1 r1 0x3fc00000",
1228                            "al_r1_r1_0x3fc00000"},
1229                           {{al, r8, r6, 0x002ac000},
1230                            false,
1231                            al,
1232                            "al r8 r6 0x002ac000",
1233                            "al_r8_r6_0x002ac000"},
1234                           {{al, r12, r4, 0x55800000},
1235                            false,
1236                            al,
1237                            "al r12 r4 0x55800000",
1238                            "al_r12_r4_0x55800000"},
1239                           {{al, r6, r10, 0x2ac00000},
1240                            false,
1241                            al,
1242                            "al r6 r10 0x2ac00000",
1243                            "al_r6_r10_0x2ac00000"},
1244                           {{al, r7, r9, 0x001fe000},
1245                            false,
1246                            al,
1247                            "al r7 r9 0x001fe000",
1248                            "al_r7_r9_0x001fe000"},
1249                           {{al, r4, r12, 0x00005580},
1250                            false,
1251                            al,
1252                            "al r4 r12 0x00005580",
1253                            "al_r4_r12_0x00005580"},
1254                           {{al, r9, r8, 0x0ab00000},
1255                            false,
1256                            al,
1257                            "al r9 r8 0x0ab00000",
1258                            "al_r9_r8_0x0ab00000"},
1259                           {{al, r2, r4, 0xff00ff00},
1260                            false,
1261                            al,
1262                            "al r2 r4 0xff00ff00",
1263                            "al_r2_r4_0xff00ff00"},
1264                           {{al, r8, r14, 0x00001fe0},
1265                            false,
1266                            al,
1267                            "al r8 r14 0x00001fe0",
1268                            "al_r8_r14_0x00001fe0"},
1269                           {{al, r5, r3, 0x003fc000},
1270                            false,
1271                            al,
1272                            "al r5 r3 0x003fc000",
1273                            "al_r5_r3_0x003fc000"},
1274                           {{al, r2, r10, 0x00ff00ff},
1275                            false,
1276                            al,
1277                            "al r2 r10 0x00ff00ff",
1278                            "al_r2_r10_0x00ff00ff"},
1279                           {{al, r11, r12, 0x15600000},
1280                            false,
1281                            al,
1282                            "al r11 r12 0x15600000",
1283                            "al_r11_r12_0x15600000"},
1284                           {{al, r1, r5, 0x00002ac0},
1285                            false,
1286                            al,
1287                            "al r1 r5 0x00002ac0",
1288                            "al_r1_r5_0x00002ac0"},
1289                           {{al, r3, r7, 0x2ac00000},
1290                            false,
1291                            al,
1292                            "al r3 r7 0x2ac00000",
1293                            "al_r3_r7_0x2ac00000"},
1294                           {{al, r5, r1, 0xffffffff},
1295                            false,
1296                            al,
1297                            "al r5 r1 0xffffffff",
1298                            "al_r5_r1_0xffffffff"},
1299                           {{al, r4, r10, 0xff00ff00},
1300                            false,
1301                            al,
1302                            "al r4 r10 0xff00ff00",
1303                            "al_r4_r10_0xff00ff00"},
1304                           {{al, r1, r2, 0x00001fe0},
1305                            false,
1306                            al,
1307                            "al r1 r2 0x00001fe0",
1308                            "al_r1_r2_0x00001fe0"},
1309                           {{al, r5, r14, 0x000000ff},
1310                            false,
1311                            al,
1312                            "al r5 r14 0x000000ff",
1313                            "al_r5_r14_0x000000ff"},
1314                           {{al, r14, r0, 0x000ab000},
1315                            false,
1316                            al,
1317                            "al r14 r0 0x000ab000",
1318                            "al_r14_r0_0x000ab000"},
1319                           {{al, r10, r3, 0x00ab0000},
1320                            false,
1321                            al,
1322                            "al r10 r3 0x00ab0000",
1323                            "al_r10_r3_0x00ab0000"},
1324                           {{al, r10, r12, 0x03fc0000},
1325                            false,
1326                            al,
1327                            "al r10 r12 0x03fc0000",
1328                            "al_r10_r12_0x03fc0000"},
1329                           {{al, r8, r11, 0x0007f800},
1330                            false,
1331                            al,
1332                            "al r8 r11 0x0007f800",
1333                            "al_r8_r11_0x0007f800"},
1334                           {{al, r9, r13, 0x0001fe00},
1335                            false,
1336                            al,
1337                            "al r9 r13 0x0001fe00",
1338                            "al_r9_r13_0x0001fe00"},
1339                           {{al, r12, r13, 0x02ac0000},
1340                            false,
1341                            al,
1342                            "al r12 r13 0x02ac0000",
1343                            "al_r12_r13_0x02ac0000"},
1344                           {{al, r3, r9, 0x00ab00ab},
1345                            false,
1346                            al,
1347                            "al r3 r9 0x00ab00ab",
1348                            "al_r3_r9_0x00ab00ab"},
1349                           {{al, r10, r1, 0x3fc00000},
1350                            false,
1351                            al,
1352                            "al r10 r1 0x3fc00000",
1353                            "al_r10_r1_0x3fc00000"},
1354                           {{al, r6, r8, 0x00000558},
1355                            false,
1356                            al,
1357                            "al r6 r8 0x00000558",
1358                            "al_r6_r8_0x00000558"},
1359                           {{al, r6, r12, 0x0000ab00},
1360                            false,
1361                            al,
1362                            "al r6 r12 0x0000ab00",
1363                            "al_r6_r12_0x0000ab00"},
1364                           {{al, r14, r13, 0x000ab000},
1365                            false,
1366                            al,
1367                            "al r14 r13 0x000ab000",
1368                            "al_r14_r13_0x000ab000"},
1369                           {{al, r1, r5, 0x1fe00000},
1370                            false,
1371                            al,
1372                            "al r1 r5 0x1fe00000",
1373                            "al_r1_r5_0x1fe00000"},
1374                           {{al, r11, r3, 0x02ac0000},
1375                            false,
1376                            al,
1377                            "al r11 r3 0x02ac0000",
1378                            "al_r11_r3_0x02ac0000"},
1379                           {{al, r9, r5, 0x55800000},
1380                            false,
1381                            al,
1382                            "al r9 r5 0x55800000",
1383                            "al_r9_r5_0x55800000"},
1384                           {{al, r5, r5, 0x000ab000},
1385                            false,
1386                            al,
1387                            "al r5 r5 0x000ab000",
1388                            "al_r5_r5_0x000ab000"},
1389                           {{al, r0, r12, 0x003fc000},
1390                            false,
1391                            al,
1392                            "al r0 r12 0x003fc000",
1393                            "al_r0_r12_0x003fc000"},
1394                           {{al, r10, r4, 0x0000ab00},
1395                            false,
1396                            al,
1397                            "al r10 r4 0x0000ab00",
1398                            "al_r10_r4_0x0000ab00"},
1399                           {{al, r3, r2, 0x0000ff00},
1400                            false,
1401                            al,
1402                            "al r3 r2 0x0000ff00",
1403                            "al_r3_r2_0x0000ff00"},
1404                           {{al, r14, r8, 0x3fc00000},
1405                            false,
1406                            al,
1407                            "al r14 r8 0x3fc00000",
1408                            "al_r14_r8_0x3fc00000"},
1409                           {{al, r10, r13, 0x05580000},
1410                            false,
1411                            al,
1412                            "al r10 r13 0x05580000",
1413                            "al_r10_r13_0x05580000"},
1414                           {{al, r4, r13, 0x00156000},
1415                            false,
1416                            al,
1417                            "al r4 r13 0x00156000",
1418                            "al_r4_r13_0x00156000"},
1419                           {{al, r7, r2, 0x000002ac},
1420                            false,
1421                            al,
1422                            "al r7 r2 0x000002ac",
1423                            "al_r7_r2_0x000002ac"},
1424                           {{al, r5, r10, 0x000002ac},
1425                            false,
1426                            al,
1427                            "al r5 r10 0x000002ac",
1428                            "al_r5_r10_0x000002ac"},
1429                           {{al, r7, r0, 0xab000000},
1430                            false,
1431                            al,
1432                            "al r7 r0 0xab000000",
1433                            "al_r7_r0_0xab000000"},
1434                           {{al, r1, r10, 0x000002ac},
1435                            false,
1436                            al,
1437                            "al r1 r10 0x000002ac",
1438                            "al_r1_r10_0x000002ac"},
1439                           {{al, r11, r9, 0x00002ac0},
1440                            false,
1441                            al,
1442                            "al r11 r9 0x00002ac0",
1443                            "al_r11_r9_0x00002ac0"},
1444                           {{al, r4, r0, 0x000001fe},
1445                            false,
1446                            al,
1447                            "al r4 r0 0x000001fe",
1448                            "al_r4_r0_0x000001fe"},
1449                           {{al, r11, r9, 0x0003fc00},
1450                            false,
1451                            al,
1452                            "al r11 r9 0x0003fc00",
1453                            "al_r11_r9_0x0003fc00"},
1454                           {{al, r8, r3, 0x00005580},
1455                            false,
1456                            al,
1457                            "al r8 r3 0x00005580",
1458                            "al_r8_r3_0x00005580"},
1459                           {{al, r4, r4, 0xffffffff},
1460                            false,
1461                            al,
1462                            "al r4 r4 0xffffffff",
1463                            "al_r4_r4_0xffffffff"},
1464                           {{al, r1, r9, 0x00000558},
1465                            false,
1466                            al,
1467                            "al r1 r9 0x00000558",
1468                            "al_r1_r9_0x00000558"},
1469                           {{al, r9, r2, 0x00ab0000},
1470                            false,
1471                            al,
1472                            "al r9 r2 0x00ab0000",
1473                            "al_r9_r2_0x00ab0000"},
1474                           {{al, r11, r6, 0x00003fc0},
1475                            false,
1476                            al,
1477                            "al r11 r6 0x00003fc0",
1478                            "al_r11_r6_0x00003fc0"},
1479                           {{al, r11, r11, 0x01fe0000},
1480                            false,
1481                            al,
1482                            "al r11 r11 0x01fe0000",
1483                            "al_r11_r11_0x01fe0000"},
1484                           {{al, r6, r10, 0x0001fe00},
1485                            false,
1486                            al,
1487                            "al r6 r10 0x0001fe00",
1488                            "al_r6_r10_0x0001fe00"},
1489                           {{al, r8, r3, 0x00000156},
1490                            false,
1491                            al,
1492                            "al r8 r3 0x00000156",
1493                            "al_r8_r3_0x00000156"},
1494                           {{al, r12, r12, 0x0002ac00},
1495                            false,
1496                            al,
1497                            "al r12 r12 0x0002ac00",
1498                            "al_r12_r12_0x0002ac00"},
1499                           {{al, r8, r6, 0x7f800000},
1500                            false,
1501                            al,
1502                            "al r8 r6 0x7f800000",
1503                            "al_r8_r6_0x7f800000"},
1504                           {{al, r5, r13, 0x000002ac},
1505                            false,
1506                            al,
1507                            "al r5 r13 0x000002ac",
1508                            "al_r5_r13_0x000002ac"},
1509                           {{al, r5, r13, 0x15600000},
1510                            false,
1511                            al,
1512                            "al r5 r13 0x15600000",
1513                            "al_r5_r13_0x15600000"},
1514                           {{al, r8, r8, 0x000000ab},
1515                            false,
1516                            al,
1517                            "al r8 r8 0x000000ab",
1518                            "al_r8_r8_0x000000ab"},
1519                           {{al, r12, r14, 0x00156000},
1520                            false,
1521                            al,
1522                            "al r12 r14 0x00156000",
1523                            "al_r12_r14_0x00156000"},
1524                           {{al, r1, r7, 0x003fc000},
1525                            false,
1526                            al,
1527                            "al r1 r7 0x003fc000",
1528                            "al_r1_r7_0x003fc000"},
1529                           {{al, r8, r0, 0x00003fc0},
1530                            false,
1531                            al,
1532                            "al r8 r0 0x00003fc0",
1533                            "al_r8_r0_0x00003fc0"},
1534                           {{al, r14, r11, 0x0007f800},
1535                            false,
1536                            al,
1537                            "al r14 r11 0x0007f800",
1538                            "al_r14_r11_0x0007f800"},
1539                           {{al, r3, r8, 0x00ab00ab},
1540                            false,
1541                            al,
1542                            "al r3 r8 0x00ab00ab",
1543                            "al_r3_r8_0x00ab00ab"},
1544                           {{al, r14, r8, 0x55800000},
1545                            false,
1546                            al,
1547                            "al r14 r8 0x55800000",
1548                            "al_r14_r8_0x55800000"},
1549                           {{al, r7, r8, 0x000ff000},
1550                            false,
1551                            al,
1552                            "al r7 r8 0x000ff000",
1553                            "al_r7_r8_0x000ff000"},
1554                           {{al, r4, r11, 0x01fe0000},
1555                            false,
1556                            al,
1557                            "al r4 r11 0x01fe0000",
1558                            "al_r4_r11_0x01fe0000"},
1559                           {{al, r2, r4, 0x01560000},
1560                            false,
1561                            al,
1562                            "al r2 r4 0x01560000",
1563                            "al_r2_r4_0x01560000"},
1564                           {{al, r4, r3, 0xffffffff},
1565                            false,
1566                            al,
1567                            "al r4 r3 0xffffffff",
1568                            "al_r4_r3_0xffffffff"},
1569                           {{al, r7, r8, 0xab000000},
1570                            false,
1571                            al,
1572                            "al r7 r8 0xab000000",
1573                            "al_r7_r8_0xab000000"},
1574                           {{al, r0, r13, 0x00000ab0},
1575                            false,
1576                            al,
1577                            "al r0 r13 0x00000ab0",
1578                            "al_r0_r13_0x00000ab0"},
1579                           {{al, r1, r2, 0x000001fe},
1580                            false,
1581                            al,
1582                            "al r1 r2 0x000001fe",
1583                            "al_r1_r2_0x000001fe"},
1584                           {{al, r8, r14, 0x02ac0000},
1585                            false,
1586                            al,
1587                            "al r8 r14 0x02ac0000",
1588                            "al_r8_r14_0x02ac0000"},
1589                           {{al, r4, r5, 0x00558000},
1590                            false,
1591                            al,
1592                            "al r4 r5 0x00558000",
1593                            "al_r4_r5_0x00558000"},
1594                           {{al, r6, r7, 0xff00ff00},
1595                            false,
1596                            al,
1597                            "al r6 r7 0xff00ff00",
1598                            "al_r6_r7_0xff00ff00"},
1599                           {{al, r8, r12, 0x001fe000},
1600                            false,
1601                            al,
1602                            "al r8 r12 0x001fe000",
1603                            "al_r8_r12_0x001fe000"},
1604                           {{al, r6, r4, 0x07f80000},
1605                            false,
1606                            al,
1607                            "al r6 r4 0x07f80000",
1608                            "al_r6_r4_0x07f80000"},
1609                           {{al, r4, r0, 0x00001fe0},
1610                            false,
1611                            al,
1612                            "al r4 r0 0x00001fe0",
1613                            "al_r4_r0_0x00001fe0"},
1614                           {{al, r14, r3, 0xff00ff00},
1615                            false,
1616                            al,
1617                            "al r14 r3 0xff00ff00",
1618                            "al_r14_r3_0xff00ff00"},
1619                           {{al, r0, r6, 0xab000000},
1620                            false,
1621                            al,
1622                            "al r0 r6 0xab000000",
1623                            "al_r0_r6_0xab000000"},
1624                           {{al, r12, r13, 0x00000ab0},
1625                            false,
1626                            al,
1627                            "al r12 r13 0x00000ab0",
1628                            "al_r12_r13_0x00000ab0"},
1629                           {{al, r12, r8, 0x00000558},
1630                            false,
1631                            al,
1632                            "al r12 r8 0x00000558",
1633                            "al_r12_r8_0x00000558"},
1634                           {{al, r3, r12, 0x0003fc00},
1635                            false,
1636                            al,
1637                            "al r3 r12 0x0003fc00",
1638                            "al_r3_r12_0x0003fc00"},
1639                           {{al, r2, r11, 0x7f800000},
1640                            false,
1641                            al,
1642                            "al r2 r11 0x7f800000",
1643                            "al_r2_r11_0x7f800000"},
1644                           {{al, r10, r4, 0x15600000},
1645                            false,
1646                            al,
1647                            "al r10 r4 0x15600000",
1648                            "al_r10_r4_0x15600000"},
1649                           {{al, r8, r7, 0x0ab00000},
1650                            false,
1651                            al,
1652                            "al r8 r7 0x0ab00000",
1653                            "al_r8_r7_0x0ab00000"},
1654                           {{al, r10, r6, 0x000000ff},
1655                            false,
1656                            al,
1657                            "al r10 r6 0x000000ff",
1658                            "al_r10_r6_0x000000ff"},
1659                           {{al, r3, r4, 0xff00ff00},
1660                            false,
1661                            al,
1662                            "al r3 r4 0xff00ff00",
1663                            "al_r3_r4_0xff00ff00"},
1664                           {{al, r14, r10, 0x00ab0000},
1665                            false,
1666                            al,
1667                            "al r14 r10 0x00ab0000",
1668                            "al_r14_r10_0x00ab0000"},
1669                           {{al, r8, r3, 0x0002ac00},
1670                            false,
1671                            al,
1672                            "al r8 r3 0x0002ac00",
1673                            "al_r8_r3_0x0002ac00"},
1674                           {{al, r8, r8, 0x00000558},
1675                            false,
1676                            al,
1677                            "al r8 r8 0x00000558",
1678                            "al_r8_r8_0x00000558"},
1679                           {{al, r12, r4, 0x00015600},
1680                            false,
1681                            al,
1682                            "al r12 r4 0x00015600",
1683                            "al_r12_r4_0x00015600"},
1684                           {{al, r8, r1, 0x002ac000},
1685                            false,
1686                            al,
1687                            "al r8 r1 0x002ac000",
1688                            "al_r8_r1_0x002ac000"},
1689                           {{al, r8, r5, 0x000000ab},
1690                            false,
1691                            al,
1692                            "al r8 r5 0x000000ab",
1693                            "al_r8_r5_0x000000ab"},
1694                           {{al, r6, r6, 0x000000ab},
1695                            false,
1696                            al,
1697                            "al r6 r6 0x000000ab",
1698                            "al_r6_r6_0x000000ab"},
1699                           {{al, r5, r7, 0x00002ac0},
1700                            false,
1701                            al,
1702                            "al r5 r7 0x00002ac0",
1703                            "al_r5_r7_0x00002ac0"},
1704                           {{al, r11, r4, 0x00000ff0},
1705                            false,
1706                            al,
1707                            "al r11 r4 0x00000ff0",
1708                            "al_r11_r4_0x00000ff0"},
1709                           {{al, r9, r9, 0x00000ff0},
1710                            false,
1711                            al,
1712                            "al r9 r9 0x00000ff0",
1713                            "al_r9_r9_0x00000ff0"},
1714                           {{al, r0, r8, 0x00ff0000},
1715                            false,
1716                            al,
1717                            "al r0 r8 0x00ff0000",
1718                            "al_r0_r8_0x00ff0000"},
1719                           {{al, r9, r11, 0x000000ab},
1720                            false,
1721                            al,
1722                            "al r9 r11 0x000000ab",
1723                            "al_r9_r11_0x000000ab"},
1724                           {{al, r7, r5, 0x000000ff},
1725                            false,
1726                            al,
1727                            "al r7 r5 0x000000ff",
1728                            "al_r7_r5_0x000000ff"},
1729                           {{al, r14, r0, 0x15600000},
1730                            false,
1731                            al,
1732                            "al r14 r0 0x15600000",
1733                            "al_r14_r0_0x15600000"},
1734                           {{al, r10, r9, 0x00000156},
1735                            false,
1736                            al,
1737                            "al r10 r9 0x00000156",
1738                            "al_r10_r9_0x00000156"},
1739                           {{al, r3, r7, 0x00ff0000},
1740                            false,
1741                            al,
1742                            "al r3 r7 0x00ff0000",
1743                            "al_r3_r7_0x00ff0000"},
1744                           {{al, r6, r11, 0xab00ab00},
1745                            false,
1746                            al,
1747                            "al r6 r11 0xab00ab00",
1748                            "al_r6_r11_0xab00ab00"},
1749                           {{al, r5, r2, 0x002ac000},
1750                            false,
1751                            al,
1752                            "al r5 r2 0x002ac000",
1753                            "al_r5_r2_0x002ac000"},
1754                           {{al, r9, r14, 0x55800000},
1755                            false,
1756                            al,
1757                            "al r9 r14 0x55800000",
1758                            "al_r9_r14_0x55800000"},
1759                           {{al, r10, r13, 0x15600000},
1760                            false,
1761                            al,
1762                            "al r10 r13 0x15600000",
1763                            "al_r10_r13_0x15600000"},
1764                           {{al, r13, r7, 0x0ff00000},
1765                            false,
1766                            al,
1767                            "al r13 r7 0x0ff00000",
1768                            "al_r13_r7_0x0ff00000"},
1769                           {{al, r12, r5, 0xffffffff},
1770                            false,
1771                            al,
1772                            "al r12 r5 0xffffffff",
1773                            "al_r12_r5_0xffffffff"},
1774                           {{al, r8, r10, 0x00000156},
1775                            false,
1776                            al,
1777                            "al r8 r10 0x00000156",
1778                            "al_r8_r10_0x00000156"},
1779                           {{al, r7, r6, 0x00005580},
1780                            false,
1781                            al,
1782                            "al r7 r6 0x00005580",
1783                            "al_r7_r6_0x00005580"},
1784                           {{al, r6, r6, 0x0ab00000},
1785                            false,
1786                            al,
1787                            "al r6 r6 0x0ab00000",
1788                            "al_r6_r6_0x0ab00000"},
1789                           {{al, r3, r7, 0x01fe0000},
1790                            false,
1791                            al,
1792                            "al r3 r7 0x01fe0000",
1793                            "al_r3_r7_0x01fe0000"},
1794                           {{al, r14, r9, 0x00558000},
1795                            false,
1796                            al,
1797                            "al r14 r9 0x00558000",
1798                            "al_r14_r9_0x00558000"},
1799                           {{al, r3, r13, 0x000007f8},
1800                            false,
1801                            al,
1802                            "al r3 r13 0x000007f8",
1803                            "al_r3_r13_0x000007f8"},
1804                           {{al, r10, r2, 0x00055800},
1805                            false,
1806                            al,
1807                            "al r10 r2 0x00055800",
1808                            "al_r10_r2_0x00055800"},
1809                           {{al, r5, r14, 0x00005580},
1810                            false,
1811                            al,
1812                            "al r5 r14 0x00005580",
1813                            "al_r5_r14_0x00005580"},
1814                           {{al, r9, r12, 0xab000000},
1815                            false,
1816                            al,
1817                            "al r9 r12 0xab000000",
1818                            "al_r9_r12_0xab000000"},
1819                           {{al, r2, r14, 0x00000156},
1820                            false,
1821                            al,
1822                            "al r2 r14 0x00000156",
1823                            "al_r2_r14_0x00000156"},
1824                           {{al, r6, r10, 0x000ff000},
1825                            false,
1826                            al,
1827                            "al r6 r10 0x000ff000",
1828                            "al_r6_r10_0x000ff000"},
1829                           {{al, r6, r7, 0x000007f8},
1830                            false,
1831                            al,
1832                            "al r6 r7 0x000007f8",
1833                            "al_r6_r7_0x000007f8"},
1834                           {{al, r8, r3, 0x7f800000},
1835                            false,
1836                            al,
1837                            "al r8 r3 0x7f800000",
1838                            "al_r8_r3_0x7f800000"},
1839                           {{al, r0, r12, 0x15600000},
1840                            false,
1841                            al,
1842                            "al r0 r12 0x15600000",
1843                            "al_r0_r12_0x15600000"},
1844                           {{al, r1, r6, 0x00558000},
1845                            false,
1846                            al,
1847                            "al r1 r6 0x00558000",
1848                            "al_r1_r6_0x00558000"},
1849                           {{al, r3, r8, 0x55800000},
1850                            false,
1851                            al,
1852                            "al r3 r8 0x55800000",
1853                            "al_r3_r8_0x55800000"},
1854                           {{al, r1, r14, 0x000003fc},
1855                            false,
1856                            al,
1857                            "al r1 r14 0x000003fc",
1858                            "al_r1_r14_0x000003fc"},
1859                           {{al, r0, r2, 0x0ab00000},
1860                            false,
1861                            al,
1862                            "al r0 r2 0x0ab00000",
1863                            "al_r0_r2_0x0ab00000"},
1864                           {{al, r10, r12, 0x00000156},
1865                            false,
1866                            al,
1867                            "al r10 r12 0x00000156",
1868                            "al_r10_r12_0x00000156"},
1869                           {{al, r12, r14, 0x03fc0000},
1870                            false,
1871                            al,
1872                            "al r12 r14 0x03fc0000",
1873                            "al_r12_r14_0x03fc0000"},
1874                           {{al, r2, r5, 0x0001fe00},
1875                            false,
1876                            al,
1877                            "al r2 r5 0x0001fe00",
1878                            "al_r2_r5_0x0001fe00"},
1879                           {{al, r5, r11, 0x000ab000},
1880                            false,
1881                            al,
1882                            "al r5 r11 0x000ab000",
1883                            "al_r5_r11_0x000ab000"},
1884                           {{al, r14, r14, 0x0001fe00},
1885                            false,
1886                            al,
1887                            "al r14 r14 0x0001fe00",
1888                            "al_r14_r14_0x0001fe00"},
1889                           {{al, r13, r2, 0x00003fc0},
1890                            false,
1891                            al,
1892                            "al r13 r2 0x00003fc0",
1893                            "al_r13_r2_0x00003fc0"},
1894                           {{al, r0, r8, 0xab000000},
1895                            false,
1896                            al,
1897                            "al r0 r8 0xab000000",
1898                            "al_r0_r8_0xab000000"},
1899                           {{al, r12, r0, 0x000000ab},
1900                            false,
1901                            al,
1902                            "al r12 r0 0x000000ab",
1903                            "al_r12_r0_0x000000ab"},
1904                           {{al, r11, r10, 0x002ac000},
1905                            false,
1906                            al,
1907                            "al r11 r10 0x002ac000",
1908                            "al_r11_r10_0x002ac000"},
1909                           {{al, r12, r11, 0x00ab0000},
1910                            false,
1911                            al,
1912                            "al r12 r11 0x00ab0000",
1913                            "al_r12_r11_0x00ab0000"},
1914                           {{al, r2, r9, 0x0ff00000},
1915                            false,
1916                            al,
1917                            "al r2 r9 0x0ff00000",
1918                            "al_r2_r9_0x0ff00000"},
1919                           {{al, r7, r4, 0x000001fe},
1920                            false,
1921                            al,
1922                            "al r7 r4 0x000001fe",
1923                            "al_r7_r4_0x000001fe"},
1924                           {{al, r7, r6, 0x0000ff00},
1925                            false,
1926                            al,
1927                            "al r7 r6 0x0000ff00",
1928                            "al_r7_r6_0x0000ff00"},
1929                           {{al, r11, r14, 0x05580000},
1930                            false,
1931                            al,
1932                            "al r11 r14 0x05580000",
1933                            "al_r11_r14_0x05580000"},
1934                           {{al, r6, r10, 0x00000558},
1935                            false,
1936                            al,
1937                            "al r6 r10 0x00000558",
1938                            "al_r6_r10_0x00000558"},
1939                           {{al, r11, r6, 0x0001fe00},
1940                            false,
1941                            al,
1942                            "al r11 r6 0x0001fe00",
1943                            "al_r11_r6_0x0001fe00"},
1944                           {{al, r11, r12, 0xab00ab00},
1945                            false,
1946                            al,
1947                            "al r11 r12 0xab00ab00",
1948                            "al_r11_r12_0xab00ab00"},
1949                           {{al, r1, r8, 0x7f800000},
1950                            false,
1951                            al,
1952                            "al r1 r8 0x7f800000",
1953                            "al_r1_r8_0x7f800000"},
1954                           {{al, r4, r3, 0x0000ff00},
1955                            false,
1956                            al,
1957                            "al r4 r3 0x0000ff00",
1958                            "al_r4_r3_0x0000ff00"},
1959                           {{al, r5, r4, 0x00ff00ff},
1960                            false,
1961                            al,
1962                            "al r5 r4 0x00ff00ff",
1963                            "al_r5_r4_0x00ff00ff"},
1964                           {{al, r12, r11, 0x2ac00000},
1965                            false,
1966                            al,
1967                            "al r12 r11 0x2ac00000",
1968                            "al_r12_r11_0x2ac00000"},
1969                           {{al, r1, r6, 0xab00ab00},
1970                            false,
1971                            al,
1972                            "al r1 r6 0xab00ab00",
1973                            "al_r1_r6_0xab00ab00"},
1974                           {{al, r6, r3, 0x000000ab},
1975                            false,
1976                            al,
1977                            "al r6 r3 0x000000ab",
1978                            "al_r6_r3_0x000000ab"},
1979                           {{al, r2, r11, 0x0007f800},
1980                            false,
1981                            al,
1982                            "al r2 r11 0x0007f800",
1983                            "al_r2_r11_0x0007f800"},
1984                           {{al, r3, r0, 0x00001560},
1985                            false,
1986                            al,
1987                            "al r3 r0 0x00001560",
1988                            "al_r3_r0_0x00001560"},
1989                           {{al, r1, r14, 0x00000558},
1990                            false,
1991                            al,
1992                            "al r1 r14 0x00000558",
1993                            "al_r1_r14_0x00000558"},
1994                           {{al, r10, r8, 0x00558000},
1995                            false,
1996                            al,
1997                            "al r10 r8 0x00558000",
1998                            "al_r10_r8_0x00558000"},
1999                           {{al, r0, r8, 0x000ff000},
2000                            false,
2001                            al,
2002                            "al r0 r8 0x000ff000",
2003                            "al_r0_r8_0x000ff000"},
2004                           {{al, r13, r6, 0x007f8000},
2005                            false,
2006                            al,
2007                            "al r13 r6 0x007f8000",
2008                            "al_r13_r6_0x007f8000"},
2009                           {{al, r3, r10, 0x000002ac},
2010                            false,
2011                            al,
2012                            "al r3 r10 0x000002ac",
2013                            "al_r3_r10_0x000002ac"},
2014                           {{al, r12, r2, 0x0003fc00},
2015                            false,
2016                            al,
2017                            "al r12 r2 0x0003fc00",
2018                            "al_r12_r2_0x0003fc00"},
2019                           {{al, r5, r5, 0x02ac0000},
2020                            false,
2021                            al,
2022                            "al r5 r5 0x02ac0000",
2023                            "al_r5_r5_0x02ac0000"},
2024                           {{al, r11, r12, 0x001fe000},
2025                            false,
2026                            al,
2027                            "al r11 r12 0x001fe000",
2028                            "al_r11_r12_0x001fe000"},
2029                           {{al, r0, r14, 0x001fe000},
2030                            false,
2031                            al,
2032                            "al r0 r14 0x001fe000",
2033                            "al_r0_r14_0x001fe000"},
2034                           {{al, r0, r14, 0x02ac0000},
2035                            false,
2036                            al,
2037                            "al r0 r14 0x02ac0000",
2038                            "al_r0_r14_0x02ac0000"},
2039                           {{al, r6, r7, 0x0ff00000},
2040                            false,
2041                            al,
2042                            "al r6 r7 0x0ff00000",
2043                            "al_r6_r7_0x0ff00000"},
2044                           {{al, r10, r13, 0x00000156},
2045                            false,
2046                            al,
2047                            "al r10 r13 0x00000156",
2048                            "al_r10_r13_0x00000156"},
2049                           {{al, r3, r7, 0x000007f8},
2050                            false,
2051                            al,
2052                            "al r3 r7 0x000007f8",
2053                            "al_r3_r7_0x000007f8"},
2054                           {{al, r4, r10, 0x000000ab},
2055                            false,
2056                            al,
2057                            "al r4 r10 0x000000ab",
2058                            "al_r4_r10_0x000000ab"},
2059                           {{al, r0, r6, 0x00000558},
2060                            false,
2061                            al,
2062                            "al r0 r6 0x00000558",
2063                            "al_r0_r6_0x00000558"},
2064                           {{al, r1, r1, 0x05580000},
2065                            false,
2066                            al,
2067                            "al r1 r1 0x05580000",
2068                            "al_r1_r1_0x05580000"},
2069                           {{al, r8, r2, 0x00001560},
2070                            false,
2071                            al,
2072                            "al r8 r2 0x00001560",
2073                            "al_r8_r2_0x00001560"},
2074                           {{al, r9, r5, 0x0001fe00},
2075                            false,
2076                            al,
2077                            "al r9 r5 0x0001fe00",
2078                            "al_r9_r5_0x0001fe00"},
2079                           {{al, r13, r9, 0x0ab00000},
2080                            false,
2081                            al,
2082                            "al r13 r9 0x0ab00000",
2083                            "al_r13_r9_0x0ab00000"},
2084                           {{al, r13, r9, 0x00007f80},
2085                            false,
2086                            al,
2087                            "al r13 r9 0x00007f80",
2088                            "al_r13_r9_0x00007f80"},
2089                           {{al, r10, r5, 0x0000ab00},
2090                            false,
2091                            al,
2092                            "al r10 r5 0x0000ab00",
2093                            "al_r10_r5_0x0000ab00"},
2094                           {{al, r6, r13, 0x007f8000},
2095                            false,
2096                            al,
2097                            "al r6 r13 0x007f8000",
2098                            "al_r6_r13_0x007f8000"},
2099                           {{al, r5, r9, 0x000ab000},
2100                            false,
2101                            al,
2102                            "al r5 r9 0x000ab000",
2103                            "al_r5_r9_0x000ab000"},
2104                           {{al, r4, r4, 0x000000ab},
2105                            false,
2106                            al,
2107                            "al r4 r4 0x000000ab",
2108                            "al_r4_r4_0x000000ab"},
2109                           {{al, r13, r5, 0xab00ab00},
2110                            false,
2111                            al,
2112                            "al r13 r5 0xab00ab00",
2113                            "al_r13_r5_0xab00ab00"},
2114                           {{al, r12, r3, 0x00005580},
2115                            false,
2116                            al,
2117                            "al r12 r3 0x00005580",
2118                            "al_r12_r3_0x00005580"},
2119                           {{al, r0, r10, 0x55800000},
2120                            false,
2121                            al,
2122                            "al r0 r10 0x55800000",
2123                            "al_r0_r10_0x55800000"},
2124                           {{al, r2, r8, 0x00ab00ab},
2125                            false,
2126                            al,
2127                            "al r2 r8 0x00ab00ab",
2128                            "al_r2_r8_0x00ab00ab"},
2129                           {{al, r11, r5, 0x0003fc00},
2130                            false,
2131                            al,
2132                            "al r11 r5 0x0003fc00",
2133                            "al_r11_r5_0x0003fc00"},
2134                           {{al, r11, r0, 0x00ab0000},
2135                            false,
2136                            al,
2137                            "al r11 r0 0x00ab0000",
2138                            "al_r11_r0_0x00ab0000"},
2139                           {{al, r10, r2, 0x000002ac},
2140                            false,
2141                            al,
2142                            "al r10 r2 0x000002ac",
2143                            "al_r10_r2_0x000002ac"},
2144                           {{al, r11, r12, 0x00055800},
2145                            false,
2146                            al,
2147                            "al r11 r12 0x00055800",
2148                            "al_r11_r12_0x00055800"},
2149                           {{al, r5, r13, 0x00000ff0},
2150                            false,
2151                            al,
2152                            "al r5 r13 0x00000ff0",
2153                            "al_r5_r13_0x00000ff0"},
2154                           {{al, r4, r14, 0x15600000},
2155                            false,
2156                            al,
2157                            "al r4 r14 0x15600000",
2158                            "al_r4_r14_0x15600000"},
2159                           {{al, r10, r1, 0x00003fc0},
2160                            false,
2161                            al,
2162                            "al r10 r1 0x00003fc0",
2163                            "al_r10_r1_0x00003fc0"},
2164                           {{al, r14, r8, 0xff000000},
2165                            false,
2166                            al,
2167                            "al r14 r8 0xff000000",
2168                            "al_r14_r8_0xff000000"},
2169                           {{al, r12, r0, 0x00ff0000},
2170                            false,
2171                            al,
2172                            "al r12 r0 0x00ff0000",
2173                            "al_r12_r0_0x00ff0000"},
2174                           {{al, r4, r5, 0x3fc00000},
2175                            false,
2176                            al,
2177                            "al r4 r5 0x3fc00000",
2178                            "al_r4_r5_0x3fc00000"},
2179                           {{al, r14, r10, 0x3fc00000},
2180                            false,
2181                            al,
2182                            "al r14 r10 0x3fc00000",
2183                            "al_r14_r10_0x3fc00000"},
2184                           {{al, r10, r1, 0x00015600},
2185                            false,
2186                            al,
2187                            "al r10 r1 0x00015600",
2188                            "al_r10_r1_0x00015600"},
2189                           {{al, r4, r3, 0xff000000},
2190                            false,
2191                            al,
2192                            "al r4 r3 0xff000000",
2193                            "al_r4_r3_0xff000000"},
2194                           {{al, r10, r10, 0x02ac0000},
2195                            false,
2196                            al,
2197                            "al r10 r10 0x02ac0000",
2198                            "al_r10_r10_0x02ac0000"},
2199                           {{al, r9, r9, 0x000ff000},
2200                            false,
2201                            al,
2202                            "al r9 r9 0x000ff000",
2203                            "al_r9_r9_0x000ff000"},
2204                           {{al, r13, r7, 0x0002ac00},
2205                            false,
2206                            al,
2207                            "al r13 r7 0x0002ac00",
2208                            "al_r13_r7_0x0002ac00"},
2209                           {{al, r7, r8, 0x00001fe0},
2210                            false,
2211                            al,
2212                            "al r7 r8 0x00001fe0",
2213                            "al_r7_r8_0x00001fe0"},
2214                           {{al, r2, r4, 0x00001560},
2215                            false,
2216                            al,
2217                            "al r2 r4 0x00001560",
2218                            "al_r2_r4_0x00001560"},
2219                           {{al, r13, r7, 0x00156000},
2220                            false,
2221                            al,
2222                            "al r13 r7 0x00156000",
2223                            "al_r13_r7_0x00156000"},
2224                           {{al, r9, r9, 0x000003fc},
2225                            false,
2226                            al,
2227                            "al r9 r9 0x000003fc",
2228                            "al_r9_r9_0x000003fc"},
2229                           {{al, r0, r3, 0x000ab000},
2230                            false,
2231                            al,
2232                            "al r0 r3 0x000ab000",
2233                            "al_r0_r3_0x000ab000"},
2234                           {{al, r10, r12, 0x0000ab00},
2235                            false,
2236                            al,
2237                            "al r10 r12 0x0000ab00",
2238                            "al_r10_r12_0x0000ab00"},
2239                           {{al, r1, r13, 0x00002ac0},
2240                            false,
2241                            al,
2242                            "al r1 r13 0x00002ac0",
2243                            "al_r1_r13_0x00002ac0"},
2244                           {{al, r3, r10, 0x001fe000},
2245                            false,
2246                            al,
2247                            "al r3 r10 0x001fe000",
2248                            "al_r3_r10_0x001fe000"},
2249                           {{al, r4, r12, 0x00ff00ff},
2250                            false,
2251                            al,
2252                            "al r4 r12 0x00ff00ff",
2253                            "al_r4_r12_0x00ff00ff"},
2254                           {{al, r12, r5, 0x003fc000},
2255                            false,
2256                            al,
2257                            "al r12 r5 0x003fc000",
2258                            "al_r12_r5_0x003fc000"},
2259                           {{al, r11, r2, 0x0001fe00},
2260                            false,
2261                            al,
2262                            "al r11 r2 0x0001fe00",
2263                            "al_r11_r2_0x0001fe00"},
2264                           {{al, r8, r6, 0x0007f800},
2265                            false,
2266                            al,
2267                            "al r8 r6 0x0007f800",
2268                            "al_r8_r6_0x0007f800"},
2269                           {{al, r11, r1, 0x000000ff},
2270                            false,
2271                            al,
2272                            "al r11 r1 0x000000ff",
2273                            "al_r11_r1_0x000000ff"},
2274                           {{al, r5, r2, 0x007f8000},
2275                            false,
2276                            al,
2277                            "al r5 r2 0x007f8000",
2278                            "al_r5_r2_0x007f8000"},
2279                           {{al, r8, r10, 0xab000000},
2280                            false,
2281                            al,
2282                            "al r8 r10 0xab000000",
2283                            "al_r8_r10_0xab000000"},
2284                           {{al, r10, r3, 0x000ff000},
2285                            false,
2286                            al,
2287                            "al r10 r3 0x000ff000",
2288                            "al_r10_r3_0x000ff000"},
2289                           {{al, r6, r0, 0x00ff0000},
2290                            false,
2291                            al,
2292                            "al r6 r0 0x00ff0000",
2293                            "al_r6_r0_0x00ff0000"},
2294                           {{al, r7, r14, 0x0ff00000},
2295                            false,
2296                            al,
2297                            "al r7 r14 0x0ff00000",
2298                            "al_r7_r14_0x0ff00000"},
2299                           {{al, r8, r3, 0x00001560},
2300                            false,
2301                            al,
2302                            "al r8 r3 0x00001560",
2303                            "al_r8_r3_0x00001560"},
2304                           {{al, r13, r9, 0x00000558},
2305                            false,
2306                            al,
2307                            "al r13 r9 0x00000558",
2308                            "al_r13_r9_0x00000558"},
2309                           {{al, r8, r7, 0x00001fe0},
2310                            false,
2311                            al,
2312                            "al r8 r7 0x00001fe0",
2313                            "al_r8_r7_0x00001fe0"},
2314                           {{al, r13, r3, 0x0003fc00},
2315                            false,
2316                            al,
2317                            "al r13 r3 0x0003fc00",
2318                            "al_r13_r3_0x0003fc00"},
2319                           {{al, r4, r14, 0x000000ab},
2320                            false,
2321                            al,
2322                            "al r4 r14 0x000000ab",
2323                            "al_r4_r14_0x000000ab"},
2324                           {{al, r14, r7, 0x000000ab},
2325                            false,
2326                            al,
2327                            "al r14 r7 0x000000ab",
2328                            "al_r14_r7_0x000000ab"},
2329                           {{al, r11, r9, 0x00558000},
2330                            false,
2331                            al,
2332                            "al r11 r9 0x00558000",
2333                            "al_r11_r9_0x00558000"},
2334                           {{al, r3, r10, 0x0000ff00},
2335                            false,
2336                            al,
2337                            "al r3 r10 0x0000ff00",
2338                            "al_r3_r10_0x0000ff00"},
2339                           {{al, r4, r12, 0x003fc000},
2340                            false,
2341                            al,
2342                            "al r4 r12 0x003fc000",
2343                            "al_r4_r12_0x003fc000"},
2344                           {{al, r11, r1, 0x002ac000},
2345                            false,
2346                            al,
2347                            "al r11 r1 0x002ac000",
2348                            "al_r11_r1_0x002ac000"},
2349                           {{al, r12, r0, 0x7f800000},
2350                            false,
2351                            al,
2352                            "al r12 r0 0x7f800000",
2353                            "al_r12_r0_0x7f800000"},
2354                           {{al, r3, r9, 0x00003fc0},
2355                            false,
2356                            al,
2357                            "al r3 r9 0x00003fc0",
2358                            "al_r3_r9_0x00003fc0"},
2359                           {{al, r6, r6, 0x0ff00000},
2360                            false,
2361                            al,
2362                            "al r6 r6 0x0ff00000",
2363                            "al_r6_r6_0x0ff00000"},
2364                           {{al, r1, r11, 0xff000000},
2365                            false,
2366                            al,
2367                            "al r1 r11 0xff000000",
2368                            "al_r1_r11_0xff000000"},
2369                           {{al, r2, r10, 0x0007f800},
2370                            false,
2371                            al,
2372                            "al r2 r10 0x0007f800",
2373                            "al_r2_r10_0x0007f800"},
2374                           {{al, r12, r10, 0x000002ac},
2375                            false,
2376                            al,
2377                            "al r12 r10 0x000002ac",
2378                            "al_r12_r10_0x000002ac"},
2379                           {{al, r10, r8, 0x000003fc},
2380                            false,
2381                            al,
2382                            "al r10 r8 0x000003fc",
2383                            "al_r10_r8_0x000003fc"},
2384                           {{al, r9, r0, 0x55800000},
2385                            false,
2386                            al,
2387                            "al r9 r0 0x55800000",
2388                            "al_r9_r0_0x55800000"},
2389                           {{al, r8, r7, 0x1fe00000},
2390                            false,
2391                            al,
2392                            "al r8 r7 0x1fe00000",
2393                            "al_r8_r7_0x1fe00000"},
2394                           {{al, r4, r0, 0x15600000},
2395                            false,
2396                            al,
2397                            "al r4 r0 0x15600000",
2398                            "al_r4_r0_0x15600000"},
2399                           {{al, r4, r0, 0xff00ff00},
2400                            false,
2401                            al,
2402                            "al r4 r0 0xff00ff00",
2403                            "al_r4_r0_0xff00ff00"},
2404                           {{al, r1, r14, 0x00007f80},
2405                            false,
2406                            al,
2407                            "al r1 r14 0x00007f80",
2408                            "al_r1_r14_0x00007f80"},
2409                           {{al, r7, r3, 0x00ff00ff},
2410                            false,
2411                            al,
2412                            "al r7 r3 0x00ff00ff",
2413                            "al_r7_r3_0x00ff00ff"},
2414                           {{al, r10, r2, 0x00001560},
2415                            false,
2416                            al,
2417                            "al r10 r2 0x00001560",
2418                            "al_r10_r2_0x00001560"},
2419                           {{al, r0, r14, 0xabababab},
2420                            false,
2421                            al,
2422                            "al r0 r14 0xabababab",
2423                            "al_r0_r14_0xabababab"},
2424                           {{al, r3, r4, 0x007f8000},
2425                            false,
2426                            al,
2427                            "al r3 r4 0x007f8000",
2428                            "al_r3_r4_0x007f8000"},
2429                           {{al, r0, r2, 0x003fc000},
2430                            false,
2431                            al,
2432                            "al r0 r2 0x003fc000",
2433                            "al_r0_r2_0x003fc000"},
2434                           {{al, r13, r6, 0x0002ac00},
2435                            false,
2436                            al,
2437                            "al r13 r6 0x0002ac00",
2438                            "al_r13_r6_0x0002ac00"},
2439                           {{al, r11, r5, 0x00001fe0},
2440                            false,
2441                            al,
2442                            "al r11 r5 0x00001fe0",
2443                            "al_r11_r5_0x00001fe0"},
2444                           {{al, r1, r13, 0x00005580},
2445                            false,
2446                            al,
2447                            "al r1 r13 0x00005580",
2448                            "al_r1_r13_0x00005580"},
2449                           {{al, r13, r8, 0x000007f8},
2450                            false,
2451                            al,
2452                            "al r13 r8 0x000007f8",
2453                            "al_r13_r8_0x000007f8"},
2454                           {{al, r6, r4, 0x0ab00000},
2455                            false,
2456                            al,
2457                            "al r6 r4 0x0ab00000",
2458                            "al_r6_r4_0x0ab00000"},
2459                           {{al, r14, r10, 0x1fe00000},
2460                            false,
2461                            al,
2462                            "al r14 r10 0x1fe00000",
2463                            "al_r14_r10_0x1fe00000"},
2464                           {{al, r7, r6, 0xff00ff00},
2465                            false,
2466                            al,
2467                            "al r7 r6 0xff00ff00",
2468                            "al_r7_r6_0xff00ff00"},
2469                           {{al, r11, r5, 0xffffffff},
2470                            false,
2471                            al,
2472                            "al r11 r5 0xffffffff",
2473                            "al_r11_r5_0xffffffff"},
2474                           {{al, r0, r12, 0xffffffff},
2475                            false,
2476                            al,
2477                            "al r0 r12 0xffffffff",
2478                            "al_r0_r12_0xffffffff"},
2479                           {{al, r12, r2, 0x15600000},
2480                            false,
2481                            al,
2482                            "al r12 r2 0x15600000",
2483                            "al_r12_r2_0x15600000"},
2484                           {{al, r3, r12, 0x000ff000},
2485                            false,
2486                            al,
2487                            "al r3 r12 0x000ff000",
2488                            "al_r3_r12_0x000ff000"},
2489                           {{al, r6, r8, 0x00055800},
2490                            false,
2491                            al,
2492                            "al r6 r8 0x00055800",
2493                            "al_r6_r8_0x00055800"},
2494                           {{al, r12, r7, 0x05580000},
2495                            false,
2496                            al,
2497                            "al r12 r7 0x05580000",
2498                            "al_r12_r7_0x05580000"},
2499                           {{al, r8, r5, 0x007f8000},
2500                            false,
2501                            al,
2502                            "al r8 r5 0x007f8000",
2503                            "al_r8_r5_0x007f8000"},
2504                           {{al, r4, r1, 0x000ab000},
2505                            false,
2506                            al,
2507                            "al r4 r1 0x000ab000",
2508                            "al_r4_r1_0x000ab000"},
2509                           {{al, r13, r12, 0x02ac0000},
2510                            false,
2511                            al,
2512                            "al r13 r12 0x02ac0000",
2513                            "al_r13_r12_0x02ac0000"},
2514                           {{al, r9, r8, 0x000000ff},
2515                            false,
2516                            al,
2517                            "al r9 r8 0x000000ff",
2518                            "al_r9_r8_0x000000ff"},
2519                           {{al, r1, r11, 0x00005580},
2520                            false,
2521                            al,
2522                            "al r1 r11 0x00005580",
2523                            "al_r1_r11_0x00005580"},
2524                           {{al, r10, r12, 0x02ac0000},
2525                            false,
2526                            al,
2527                            "al r10 r12 0x02ac0000",
2528                            "al_r10_r12_0x02ac0000"},
2529                           {{al, r7, r9, 0x00ab00ab},
2530                            false,
2531                            al,
2532                            "al r7 r9 0x00ab00ab",
2533                            "al_r7_r9_0x00ab00ab"},
2534                           {{al, r0, r5, 0x0000ab00},
2535                            false,
2536                            al,
2537                            "al r0 r5 0x0000ab00",
2538                            "al_r0_r5_0x0000ab00"},
2539                           {{al, r13, r9, 0x00558000},
2540                            false,
2541                            al,
2542                            "al r13 r9 0x00558000",
2543                            "al_r13_r9_0x00558000"},
2544                           {{al, r0, r1, 0x002ac000},
2545                            false,
2546                            al,
2547                            "al r0 r1 0x002ac000",
2548                            "al_r0_r1_0x002ac000"},
2549                           {{al, r14, r1, 0x00000ab0},
2550                            false,
2551                            al,
2552                            "al r14 r1 0x00000ab0",
2553                            "al_r14_r1_0x00000ab0"},
2554                           {{al, r2, r2, 0x00000558},
2555                            false,
2556                            al,
2557                            "al r2 r2 0x00000558",
2558                            "al_r2_r2_0x00000558"},
2559                           {{al, r10, r13, 0x00ab00ab},
2560                            false,
2561                            al,
2562                            "al r10 r13 0x00ab00ab",
2563                            "al_r10_r13_0x00ab00ab"},
2564                           {{al, r4, r6, 0x00001560},
2565                            false,
2566                            al,
2567                            "al r4 r6 0x00001560",
2568                            "al_r4_r6_0x00001560"},
2569                           {{al, r10, r0, 0x00156000},
2570                            false,
2571                            al,
2572                            "al r10 r0 0x00156000",
2573                            "al_r10_r0_0x00156000"},
2574                           {{al, r10, r13, 0x00156000},
2575                            false,
2576                            al,
2577                            "al r10 r13 0x00156000",
2578                            "al_r10_r13_0x00156000"},
2579                           {{al, r11, r2, 0x001fe000},
2580                            false,
2581                            al,
2582                            "al r11 r2 0x001fe000",
2583                            "al_r11_r2_0x001fe000"},
2584                           {{al, r4, r5, 0x2ac00000},
2585                            false,
2586                            al,
2587                            "al r4 r5 0x2ac00000",
2588                            "al_r4_r5_0x2ac00000"},
2589                           {{al, r8, r8, 0x02ac0000},
2590                            false,
2591                            al,
2592                            "al r8 r8 0x02ac0000",
2593                            "al_r8_r8_0x02ac0000"},
2594                           {{al, r9, r1, 0x7f800000},
2595                            false,
2596                            al,
2597                            "al r9 r1 0x7f800000",
2598                            "al_r9_r1_0x7f800000"},
2599                           {{al, r8, r9, 0xff00ff00},
2600                            false,
2601                            al,
2602                            "al r8 r9 0xff00ff00",
2603                            "al_r8_r9_0xff00ff00"},
2604                           {{al, r12, r7, 0x00ff00ff},
2605                            false,
2606                            al,
2607                            "al r12 r7 0x00ff00ff",
2608                            "al_r12_r7_0x00ff00ff"},
2609                           {{al, r9, r10, 0x00156000},
2610                            false,
2611                            al,
2612                            "al r9 r10 0x00156000",
2613                            "al_r9_r10_0x00156000"}};
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-t32.h"
2618#include "aarch32/traces/assembler-cond-rd-rn-operand-const-adcs-t32.h"
2619#include "aarch32/traces/assembler-cond-rd-rn-operand-const-add-t32.h"
2620#include "aarch32/traces/assembler-cond-rd-rn-operand-const-adds-t32.h"
2621#include "aarch32/traces/assembler-cond-rd-rn-operand-const-and-t32.h"
2622#include "aarch32/traces/assembler-cond-rd-rn-operand-const-ands-t32.h"
2623#include "aarch32/traces/assembler-cond-rd-rn-operand-const-bic-t32.h"
2624#include "aarch32/traces/assembler-cond-rd-rn-operand-const-bics-t32.h"
2625#include "aarch32/traces/assembler-cond-rd-rn-operand-const-eor-t32.h"
2626#include "aarch32/traces/assembler-cond-rd-rn-operand-const-eors-t32.h"
2627#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orn-t32.h"
2628#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orns-t32.h"
2629#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orr-t32.h"
2630#include "aarch32/traces/assembler-cond-rd-rn-operand-const-orrs-t32.h"
2631#include "aarch32/traces/assembler-cond-rd-rn-operand-const-rsb-t32.h"
2632#include "aarch32/traces/assembler-cond-rd-rn-operand-const-rsbs-t32.h"
2633#include "aarch32/traces/assembler-cond-rd-rn-operand-const-sbc-t32.h"
2634#include "aarch32/traces/assembler-cond-rd-rn-operand-const-sbcs-t32.h"
2635#include "aarch32/traces/assembler-cond-rd-rn-operand-const-sub-t32.h"
2636#include "aarch32/traces/assembler-cond-rd-rn-operand-const-subs-t32.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.UseT32();
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                       "_T32",                                                 \
2767                       &Test_##mnemonic);
2768FOREACH_INSTRUCTION(TEST)
2769#undef TEST
2770
2771}  // namespace
2772#endif
2773
2774}  // namespace aarch32
2775}  // namespace vixl
2776