1 // Copyright 2016, VIXL authors
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 //   * Redistributions of source code must retain the above copyright notice,
8 //     this list of conditions and the following disclaimer.
9 //   * Redistributions in binary form must reproduce the above copyright notice,
10 //     this list of conditions and the following disclaimer in the documentation
11 //     and/or other materials provided with the distribution.
12 //   * Neither the name of ARM Limited nor the names of its contributors may be
13 //     used to endorse or promote products derived from this software without
14 //     specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 
27 
28 // -----------------------------------------------------------------------------
29 // This file is auto generated from the
30 // test/aarch32/config/template-assembler-aarch32.cc.in template file using
31 // tools/generate_tests.py.
32 //
33 // PLEASE DO NOT EDIT.
34 // -----------------------------------------------------------------------------
35 
36 
37 #include "test-runner.h"
38 
39 #include "test-utils.h"
40 #include "test-utils-aarch32.h"
41 
42 #include "aarch32/assembler-aarch32.h"
43 #include "aarch32/macro-assembler-aarch32.h"
44 
45 #define BUF_SIZE (4096)
46 
47 namespace vixl {
48 namespace aarch32 {
49 
50 // List of instruction mnemonics.
51 #define FOREACH_INSTRUCTION(M) \
52   M(adc)                       \
53   M(adcs)                      \
54   M(add)                       \
55   M(adds)                      \
56   M(and_)                      \
57   M(ands)                      \
58   M(bic)                       \
59   M(bics)                      \
60   M(eor)                       \
61   M(eors)                      \
62   M(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
81 namespace {
82 
83 // Values to be passed to the assembler to produce the instruction under test.
84 struct Operands {
85   Condition cond;
86   Register rd;
87   Register rn;
88   uint32_t immediate;
89 };
90 
91 // This structure contains all data needed to test one specific
92 // instruction.
93 struct TestData {
94   // The `operands` field represents what to pass to the assembler to
95   // produce the instruction.
96   Operands operands;
97   // True if we need to generate an IT instruction for this test to be valid.
98   bool in_it_block;
99   // The condition to give the IT instruction, this will be set to "al" by
100   // default.
101   Condition it_condition;
102   // Description of the operands, used for error reporting.
103   const char* operands_description;
104   // Unique identifier, used for generating traces.
105   const char* identifier;
106 };
107 
108 struct TestResult {
109   size_t size;
110   const byte* encoding;
111 };
112 
113 // Each element of this array produce one instruction encoding.
114 const TestData kTests[] = {{{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.
2640 const unsigned kErrorReportLimit = 8;
2641 
2642 typedef void (MacroAssembler::*Fn)(Condition cond,
2643                                    Register rd,
2644                                    Register rn,
2645                                    const Operand& op);
2646 
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])2647 void TestHelper(Fn instruction,
2648                 const char* mnemonic,
2649                 const TestResult reference[]) {
2650   unsigned total_error_count = 0;
2651   MacroAssembler masm(BUF_SIZE);
2652 
2653   masm.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);
2768 FOREACH_INSTRUCTION(TEST)
2769 #undef TEST
2770 
2771 }  // namespace
2772 #endif
2773 
2774 }  // namespace aarch32
2775 }  // namespace vixl
2776