test-assembler-cond-rd-operand-rn-shift-amount-1to31-t32.cc revision 9a9331faeba996d6c85e6e2a6355ccfc22c6cab6
1// Copyright 2016, VIXL authors
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are met:
6//
7//   * Redistributions of source code must retain the above copyright notice,
8//     this list of conditions and the following disclaimer.
9//   * Redistributions in binary form must reproduce the above copyright notice,
10//     this list of conditions and the following disclaimer in the documentation
11//     and/or other materials provided with the distribution.
12//   * Neither the name of ARM Limited nor the names of its contributors may be
13//     used to endorse or promote products derived from this software without
14//     specific prior written permission.
15//
16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27
28// -----------------------------------------------------------------------------
29// This file is auto generated from the
30// test/aarch32/config/template-assembler-aarch32.cc.in template file using
31// tools/generate_tests.py.
32//
33// PLEASE DO NOT EDIT.
34// -----------------------------------------------------------------------------
35
36
37#include "test-runner.h"
38
39#include "test-utils.h"
40#include "test-utils-aarch32.h"
41
42#include "aarch32/assembler-aarch32.h"
43#include "aarch32/macro-assembler-aarch32.h"
44
45#define BUF_SIZE (4096)
46
47namespace vixl {
48namespace aarch32 {
49
50// List of instruction mnemonics.
51#define FOREACH_INSTRUCTION(M) \
52  M(cmn)                       \
53  M(cmp)                       \
54  M(mov)                       \
55  M(movs)                      \
56  M(mvn)                       \
57  M(mvns)                      \
58  M(teq)                       \
59  M(tst)
60
61
62// The following definitions are defined again in each generated test, therefore
63// we need to place them in an anomymous namespace. It expresses that they are
64// local to this file only, and the compiler is not allowed to share these types
65// across test files during template instantiation. Specifically, `Operands` has
66// various layouts across generated tests so it absolutely cannot be shared.
67
68#ifdef VIXL_INCLUDE_TARGET_T32
69namespace {
70
71// Values to be passed to the assembler to produce the instruction under test.
72struct Operands {
73  Condition cond;
74  Register rd;
75  Register rn;
76  ShiftType shift;
77  uint32_t amount;
78};
79
80// This structure contains all data needed to test one specific
81// instruction.
82struct TestData {
83  // The `operands` field represents what to pass to the assembler to
84  // produce the instruction.
85  Operands operands;
86  // True if we need to generate an IT instruction for this test to be valid.
87  bool in_it_block;
88  // The condition to give the IT instruction, this will be set to "al" by
89  // default.
90  Condition it_condition;
91  // Description of the operands, used for error reporting.
92  const char* operands_description;
93  // Unique identifier, used for generating traces.
94  const char* identifier;
95};
96
97struct TestResult {
98  size_t size;
99  const byte* encoding;
100};
101
102// Each element of this array produce one instruction encoding.
103const TestData kTests[] = {
104    {{al, r14, r8, ROR, 21}, false, al, "al r14 r8 ROR 21", "al_r14_r8_ROR_21"},
105    {{al, r5, r13, ROR, 4}, false, al, "al r5 r13 ROR 4", "al_r5_r13_ROR_4"},
106    {{al, r0, r3, ROR, 4}, false, al, "al r0 r3 ROR 4", "al_r0_r3_ROR_4"},
107    {{al, r3, r14, ROR, 7}, false, al, "al r3 r14 ROR 7", "al_r3_r14_ROR_7"},
108    {{al, r2, r6, LSL, 30}, false, al, "al r2 r6 LSL 30", "al_r2_r6_LSL_30"},
109    {{al, r11, r4, LSL, 26}, false, al, "al r11 r4 LSL 26", "al_r11_r4_LSL_26"},
110    {{al, r7, r0, LSL, 30}, false, al, "al r7 r0 LSL 30", "al_r7_r0_LSL_30"},
111    {{al, r0, r9, ROR, 17}, false, al, "al r0 r9 ROR 17", "al_r0_r9_ROR_17"},
112    {{al, r11, r3, ROR, 31}, false, al, "al r11 r3 ROR 31", "al_r11_r3_ROR_31"},
113    {{al, r8, r8, ROR, 20}, false, al, "al r8 r8 ROR 20", "al_r8_r8_ROR_20"},
114    {{al, r11, r13, LSL, 24},
115     false,
116     al,
117     "al r11 r13 LSL 24",
118     "al_r11_r13_LSL_24"},
119    {{al, r1, r3, ROR, 27}, false, al, "al r1 r3 ROR 27", "al_r1_r3_ROR_27"},
120    {{al, r9, r10, ROR, 5}, false, al, "al r9 r10 ROR 5", "al_r9_r10_ROR_5"},
121    {{al, r3, r11, ROR, 25}, false, al, "al r3 r11 ROR 25", "al_r3_r11_ROR_25"},
122    {{al, r2, r6, LSL, 7}, false, al, "al r2 r6 LSL 7", "al_r2_r6_LSL_7"},
123    {{al, r3, r12, ROR, 8}, false, al, "al r3 r12 ROR 8", "al_r3_r12_ROR_8"},
124    {{al, r0, r0, LSL, 14}, false, al, "al r0 r0 LSL 14", "al_r0_r0_LSL_14"},
125    {{al, r8, r10, ROR, 2}, false, al, "al r8 r10 ROR 2", "al_r8_r10_ROR_2"},
126    {{al, r0, r8, LSL, 31}, false, al, "al r0 r8 LSL 31", "al_r0_r8_LSL_31"},
127    {{al, r1, r14, ROR, 27}, false, al, "al r1 r14 ROR 27", "al_r1_r14_ROR_27"},
128    {{al, r14, r2, ROR, 27}, false, al, "al r14 r2 ROR 27", "al_r14_r2_ROR_27"},
129    {{al, r3, r10, LSL, 25}, false, al, "al r3 r10 LSL 25", "al_r3_r10_LSL_25"},
130    {{al, r13, r8, ROR, 6}, false, al, "al r13 r8 ROR 6", "al_r13_r8_ROR_6"},
131    {{al, r5, r12, ROR, 7}, false, al, "al r5 r12 ROR 7", "al_r5_r12_ROR_7"},
132    {{al, r7, r8, LSL, 10}, false, al, "al r7 r8 LSL 10", "al_r7_r8_LSL_10"},
133    {{al, r9, r12, ROR, 10}, false, al, "al r9 r12 ROR 10", "al_r9_r12_ROR_10"},
134    {{al, r8, r6, ROR, 12}, false, al, "al r8 r6 ROR 12", "al_r8_r6_ROR_12"},
135    {{al, r8, r10, LSL, 7}, false, al, "al r8 r10 LSL 7", "al_r8_r10_LSL_7"},
136    {{al, r5, r12, ROR, 8}, false, al, "al r5 r12 ROR 8", "al_r5_r12_ROR_8"},
137    {{al, r0, r13, LSL, 21}, false, al, "al r0 r13 LSL 21", "al_r0_r13_LSL_21"},
138    {{al, r2, r0, LSL, 7}, false, al, "al r2 r0 LSL 7", "al_r2_r0_LSL_7"},
139    {{al, r10, r2, LSL, 22}, false, al, "al r10 r2 LSL 22", "al_r10_r2_LSL_22"},
140    {{al, r4, r11, ROR, 2}, false, al, "al r4 r11 ROR 2", "al_r4_r11_ROR_2"},
141    {{al, r11, r14, LSL, 14},
142     false,
143     al,
144     "al r11 r14 LSL 14",
145     "al_r11_r14_LSL_14"},
146    {{al, r8, r0, LSL, 23}, false, al, "al r8 r0 LSL 23", "al_r8_r0_LSL_23"},
147    {{al, r10, r4, LSL, 12}, false, al, "al r10 r4 LSL 12", "al_r10_r4_LSL_12"},
148    {{al, r4, r5, ROR, 28}, false, al, "al r4 r5 ROR 28", "al_r4_r5_ROR_28"},
149    {{al, r1, r5, LSL, 25}, false, al, "al r1 r5 LSL 25", "al_r1_r5_LSL_25"},
150    {{al, r7, r10, ROR, 16}, false, al, "al r7 r10 ROR 16", "al_r7_r10_ROR_16"},
151    {{al, r3, r0, LSL, 31}, false, al, "al r3 r0 LSL 31", "al_r3_r0_LSL_31"},
152    {{al, r2, r2, LSL, 2}, false, al, "al r2 r2 LSL 2", "al_r2_r2_LSL_2"},
153    {{al, r8, r1, LSL, 9}, false, al, "al r8 r1 LSL 9", "al_r8_r1_LSL_9"},
154    {{al, r13, r6, LSL, 6}, false, al, "al r13 r6 LSL 6", "al_r13_r6_LSL_6"},
155    {{al, r0, r8, LSL, 13}, false, al, "al r0 r8 LSL 13", "al_r0_r8_LSL_13"},
156    {{al, r11, r8, ROR, 3}, false, al, "al r11 r8 ROR 3", "al_r11_r8_ROR_3"},
157    {{al, r8, r1, LSL, 13}, false, al, "al r8 r1 LSL 13", "al_r8_r1_LSL_13"},
158    {{al, r6, r2, LSL, 13}, false, al, "al r6 r2 LSL 13", "al_r6_r2_LSL_13"},
159    {{al, r4, r1, LSL, 16}, false, al, "al r4 r1 LSL 16", "al_r4_r1_LSL_16"},
160    {{al, r0, r4, LSL, 9}, false, al, "al r0 r4 LSL 9", "al_r0_r4_LSL_9"},
161    {{al, r11, r8, ROR, 8}, false, al, "al r11 r8 ROR 8", "al_r11_r8_ROR_8"},
162    {{al, r9, r12, LSL, 5}, false, al, "al r9 r12 LSL 5", "al_r9_r12_LSL_5"},
163    {{al, r13, r9, ROR, 13}, false, al, "al r13 r9 ROR 13", "al_r13_r9_ROR_13"},
164    {{al, r2, r0, ROR, 23}, false, al, "al r2 r0 ROR 23", "al_r2_r0_ROR_23"},
165    {{al, r7, r8, ROR, 6}, false, al, "al r7 r8 ROR 6", "al_r7_r8_ROR_6"},
166    {{al, r2, r6, LSL, 11}, false, al, "al r2 r6 LSL 11", "al_r2_r6_LSL_11"},
167    {{al, r2, r13, LSL, 12}, false, al, "al r2 r13 LSL 12", "al_r2_r13_LSL_12"},
168    {{al, r7, r4, LSL, 13}, false, al, "al r7 r4 LSL 13", "al_r7_r4_LSL_13"},
169    {{al, r8, r4, LSL, 1}, false, al, "al r8 r4 LSL 1", "al_r8_r4_LSL_1"},
170    {{al, r14, r4, LSL, 8}, false, al, "al r14 r4 LSL 8", "al_r14_r4_LSL_8"},
171    {{al, r7, r9, ROR, 20}, false, al, "al r7 r9 ROR 20", "al_r7_r9_ROR_20"},
172    {{al, r4, r3, ROR, 6}, false, al, "al r4 r3 ROR 6", "al_r4_r3_ROR_6"},
173    {{al, r3, r12, LSL, 2}, false, al, "al r3 r12 LSL 2", "al_r3_r12_LSL_2"},
174    {{al, r12, r9, ROR, 7}, false, al, "al r12 r9 ROR 7", "al_r12_r9_ROR_7"},
175    {{al, r0, r2, LSL, 17}, false, al, "al r0 r2 LSL 17", "al_r0_r2_LSL_17"},
176    {{al, r14, r3, LSL, 28}, false, al, "al r14 r3 LSL 28", "al_r14_r3_LSL_28"},
177    {{al, r14, r12, ROR, 15},
178     false,
179     al,
180     "al r14 r12 ROR 15",
181     "al_r14_r12_ROR_15"},
182    {{al, r8, r0, ROR, 8}, false, al, "al r8 r0 ROR 8", "al_r8_r0_ROR_8"},
183    {{al, r2, r11, LSL, 20}, false, al, "al r2 r11 LSL 20", "al_r2_r11_LSL_20"},
184    {{al, r8, r13, LSL, 30}, false, al, "al r8 r13 LSL 30", "al_r8_r13_LSL_30"},
185    {{al, r2, r9, LSL, 24}, false, al, "al r2 r9 LSL 24", "al_r2_r9_LSL_24"},
186    {{al, r12, r1, LSL, 2}, false, al, "al r12 r1 LSL 2", "al_r12_r1_LSL_2"},
187    {{al, r7, r1, ROR, 7}, false, al, "al r7 r1 ROR 7", "al_r7_r1_ROR_7"},
188    {{al, r11, r7, ROR, 30}, false, al, "al r11 r7 ROR 30", "al_r11_r7_ROR_30"},
189    {{al, r0, r9, ROR, 22}, false, al, "al r0 r9 ROR 22", "al_r0_r9_ROR_22"},
190    {{al, r14, r9, ROR, 17}, false, al, "al r14 r9 ROR 17", "al_r14_r9_ROR_17"},
191    {{al, r3, r14, LSL, 3}, false, al, "al r3 r14 LSL 3", "al_r3_r14_LSL_3"},
192    {{al, r0, r0, ROR, 30}, false, al, "al r0 r0 ROR 30", "al_r0_r0_ROR_30"},
193    {{al, r9, r8, LSL, 4}, false, al, "al r9 r8 LSL 4", "al_r9_r8_LSL_4"},
194    {{al, r8, r13, LSL, 16}, false, al, "al r8 r13 LSL 16", "al_r8_r13_LSL_16"},
195    {{al, r0, r8, ROR, 28}, false, al, "al r0 r8 ROR 28", "al_r0_r8_ROR_28"},
196    {{al, r11, r10, LSL, 23},
197     false,
198     al,
199     "al r11 r10 LSL 23",
200     "al_r11_r10_LSL_23"},
201    {{al, r11, r4, LSL, 27}, false, al, "al r11 r4 LSL 27", "al_r11_r4_LSL_27"},
202    {{al, r2, r2, LSL, 30}, false, al, "al r2 r2 LSL 30", "al_r2_r2_LSL_30"},
203    {{al, r5, r4, LSL, 17}, false, al, "al r5 r4 LSL 17", "al_r5_r4_LSL_17"},
204    {{al, r11, r12, LSL, 1}, false, al, "al r11 r12 LSL 1", "al_r11_r12_LSL_1"},
205    {{al, r0, r14, ROR, 21}, false, al, "al r0 r14 ROR 21", "al_r0_r14_ROR_21"},
206    {{al, r11, r5, ROR, 21}, false, al, "al r11 r5 ROR 21", "al_r11_r5_ROR_21"},
207    {{al, r6, r14, LSL, 14}, false, al, "al r6 r14 LSL 14", "al_r6_r14_LSL_14"},
208    {{al, r1, r9, LSL, 24}, false, al, "al r1 r9 LSL 24", "al_r1_r9_LSL_24"},
209    {{al, r5, r2, LSL, 22}, false, al, "al r5 r2 LSL 22", "al_r5_r2_LSL_22"},
210    {{al, r3, r5, LSL, 4}, false, al, "al r3 r5 LSL 4", "al_r3_r5_LSL_4"},
211    {{al, r8, r0, LSL, 5}, false, al, "al r8 r0 LSL 5", "al_r8_r0_LSL_5"},
212    {{al, r5, r14, ROR, 13}, false, al, "al r5 r14 ROR 13", "al_r5_r14_ROR_13"},
213    {{al, r12, r11, LSL, 27},
214     false,
215     al,
216     "al r12 r11 LSL 27",
217     "al_r12_r11_LSL_27"},
218    {{al, r10, r14, LSL, 20},
219     false,
220     al,
221     "al r10 r14 LSL 20",
222     "al_r10_r14_LSL_20"},
223    {{al, r5, r9, ROR, 4}, false, al, "al r5 r9 ROR 4", "al_r5_r9_ROR_4"},
224    {{al, r8, r11, ROR, 11}, false, al, "al r8 r11 ROR 11", "al_r8_r11_ROR_11"},
225    {{al, r4, r1, LSL, 24}, false, al, "al r4 r1 LSL 24", "al_r4_r1_LSL_24"},
226    {{al, r7, r10, ROR, 4}, false, al, "al r7 r10 ROR 4", "al_r7_r10_ROR_4"},
227    {{al, r3, r0, ROR, 11}, false, al, "al r3 r0 ROR 11", "al_r3_r0_ROR_11"},
228    {{al, r3, r10, ROR, 23}, false, al, "al r3 r10 ROR 23", "al_r3_r10_ROR_23"},
229    {{al, r2, r8, LSL, 15}, false, al, "al r2 r8 LSL 15", "al_r2_r8_LSL_15"},
230    {{al, r3, r6, LSL, 18}, false, al, "al r3 r6 LSL 18", "al_r3_r6_LSL_18"},
231    {{al, r10, r2, ROR, 7}, false, al, "al r10 r2 ROR 7", "al_r10_r2_ROR_7"},
232    {{al, r6, r6, ROR, 14}, false, al, "al r6 r6 ROR 14", "al_r6_r6_ROR_14"},
233    {{al, r1, r8, LSL, 25}, false, al, "al r1 r8 LSL 25", "al_r1_r8_LSL_25"},
234    {{al, r0, r14, LSL, 13}, false, al, "al r0 r14 LSL 13", "al_r0_r14_LSL_13"},
235    {{al, r14, r1, LSL, 13}, false, al, "al r14 r1 LSL 13", "al_r14_r1_LSL_13"},
236    {{al, r8, r11, ROR, 8}, false, al, "al r8 r11 ROR 8", "al_r8_r11_ROR_8"},
237    {{al, r0, r12, ROR, 6}, false, al, "al r0 r12 ROR 6", "al_r0_r12_ROR_6"},
238    {{al, r0, r12, LSL, 26}, false, al, "al r0 r12 LSL 26", "al_r0_r12_LSL_26"},
239    {{al, r11, r2, LSL, 10}, false, al, "al r11 r2 LSL 10", "al_r11_r2_LSL_10"},
240    {{al, r12, r7, LSL, 3}, false, al, "al r12 r7 LSL 3", "al_r12_r7_LSL_3"},
241    {{al, r6, r10, LSL, 25}, false, al, "al r6 r10 LSL 25", "al_r6_r10_LSL_25"},
242    {{al, r12, r7, ROR, 8}, false, al, "al r12 r7 ROR 8", "al_r12_r7_ROR_8"},
243    {{al, r3, r3, ROR, 24}, false, al, "al r3 r3 ROR 24", "al_r3_r3_ROR_24"},
244    {{al, r9, r12, LSL, 24}, false, al, "al r9 r12 LSL 24", "al_r9_r12_LSL_24"},
245    {{al, r14, r10, LSL, 27},
246     false,
247     al,
248     "al r14 r10 LSL 27",
249     "al_r14_r10_LSL_27"},
250    {{al, r6, r5, ROR, 4}, false, al, "al r6 r5 ROR 4", "al_r6_r5_ROR_4"},
251    {{al, r7, r4, LSL, 21}, false, al, "al r7 r4 LSL 21", "al_r7_r4_LSL_21"},
252    {{al, r2, r4, ROR, 31}, false, al, "al r2 r4 ROR 31", "al_r2_r4_ROR_31"},
253    {{al, r11, r7, ROR, 8}, false, al, "al r11 r7 ROR 8", "al_r11_r7_ROR_8"},
254    {{al, r5, r2, ROR, 17}, false, al, "al r5 r2 ROR 17", "al_r5_r2_ROR_17"},
255    {{al, r1, r11, LSL, 13}, false, al, "al r1 r11 LSL 13", "al_r1_r11_LSL_13"},
256    {{al, r7, r11, ROR, 2}, false, al, "al r7 r11 ROR 2", "al_r7_r11_ROR_2"},
257    {{al, r1, r7, ROR, 29}, false, al, "al r1 r7 ROR 29", "al_r1_r7_ROR_29"},
258    {{al, r4, r1, LSL, 31}, false, al, "al r4 r1 LSL 31", "al_r4_r1_LSL_31"},
259    {{al, r11, r13, ROR, 11},
260     false,
261     al,
262     "al r11 r13 ROR 11",
263     "al_r11_r13_ROR_11"},
264    {{al, r13, r1, ROR, 14}, false, al, "al r13 r1 ROR 14", "al_r13_r1_ROR_14"},
265    {{al, r1, r14, ROR, 21}, false, al, "al r1 r14 ROR 21", "al_r1_r14_ROR_21"},
266    {{al, r7, r12, LSL, 5}, false, al, "al r7 r12 LSL 5", "al_r7_r12_LSL_5"},
267    {{al, r10, r3, LSL, 2}, false, al, "al r10 r3 LSL 2", "al_r10_r3_LSL_2"},
268    {{al, r12, r10, ROR, 25},
269     false,
270     al,
271     "al r12 r10 ROR 25",
272     "al_r12_r10_ROR_25"},
273    {{al, r2, r7, LSL, 6}, false, al, "al r2 r7 LSL 6", "al_r2_r7_LSL_6"},
274    {{al, r5, r0, LSL, 23}, false, al, "al r5 r0 LSL 23", "al_r5_r0_LSL_23"},
275    {{al, r2, r8, ROR, 18}, false, al, "al r2 r8 ROR 18", "al_r2_r8_ROR_18"},
276    {{al, r0, r1, ROR, 15}, false, al, "al r0 r1 ROR 15", "al_r0_r1_ROR_15"},
277    {{al, r14, r4, ROR, 20}, false, al, "al r14 r4 ROR 20", "al_r14_r4_ROR_20"},
278    {{al, r5, r10, LSL, 15}, false, al, "al r5 r10 LSL 15", "al_r5_r10_LSL_15"},
279    {{al, r0, r1, ROR, 28}, false, al, "al r0 r1 ROR 28", "al_r0_r1_ROR_28"},
280    {{al, r11, r2, LSL, 9}, false, al, "al r11 r2 LSL 9", "al_r11_r2_LSL_9"},
281    {{al, r9, r10, LSL, 19}, false, al, "al r9 r10 LSL 19", "al_r9_r10_LSL_19"},
282    {{al, r4, r11, LSL, 8}, false, al, "al r4 r11 LSL 8", "al_r4_r11_LSL_8"},
283    {{al, r12, r14, LSL, 12},
284     false,
285     al,
286     "al r12 r14 LSL 12",
287     "al_r12_r14_LSL_12"},
288    {{al, r5, r9, LSL, 8}, false, al, "al r5 r9 LSL 8", "al_r5_r9_LSL_8"},
289    {{al, r12, r14, LSL, 16},
290     false,
291     al,
292     "al r12 r14 LSL 16",
293     "al_r12_r14_LSL_16"},
294    {{al, r13, r13, LSL, 23},
295     false,
296     al,
297     "al r13 r13 LSL 23",
298     "al_r13_r13_LSL_23"},
299    {{al, r3, r12, ROR, 19}, false, al, "al r3 r12 ROR 19", "al_r3_r12_ROR_19"},
300    {{al, r2, r5, ROR, 24}, false, al, "al r2 r5 ROR 24", "al_r2_r5_ROR_24"},
301    {{al, r3, r2, ROR, 11}, false, al, "al r3 r2 ROR 11", "al_r3_r2_ROR_11"},
302    {{al, r1, r13, ROR, 1}, false, al, "al r1 r13 ROR 1", "al_r1_r13_ROR_1"},
303    {{al, r6, r7, LSL, 11}, false, al, "al r6 r7 LSL 11", "al_r6_r7_LSL_11"},
304    {{al, r3, r14, LSL, 2}, false, al, "al r3 r14 LSL 2", "al_r3_r14_LSL_2"},
305    {{al, r0, r10, LSL, 20}, false, al, "al r0 r10 LSL 20", "al_r0_r10_LSL_20"},
306    {{al, r3, r0, LSL, 19}, false, al, "al r3 r0 LSL 19", "al_r3_r0_LSL_19"},
307    {{al, r14, r0, ROR, 21}, false, al, "al r14 r0 ROR 21", "al_r14_r0_ROR_21"},
308    {{al, r12, r13, LSL, 16},
309     false,
310     al,
311     "al r12 r13 LSL 16",
312     "al_r12_r13_LSL_16"},
313    {{al, r8, r5, ROR, 28}, false, al, "al r8 r5 ROR 28", "al_r8_r5_ROR_28"},
314    {{al, r8, r1, LSL, 25}, false, al, "al r8 r1 LSL 25", "al_r8_r1_LSL_25"},
315    {{al, r6, r4, LSL, 25}, false, al, "al r6 r4 LSL 25", "al_r6_r4_LSL_25"},
316    {{al, r7, r12, ROR, 26}, false, al, "al r7 r12 ROR 26", "al_r7_r12_ROR_26"},
317    {{al, r8, r14, LSL, 12}, false, al, "al r8 r14 LSL 12", "al_r8_r14_LSL_12"},
318    {{al, r6, r6, ROR, 2}, false, al, "al r6 r6 ROR 2", "al_r6_r6_ROR_2"},
319    {{al, r11, r11, LSL, 13},
320     false,
321     al,
322     "al r11 r11 LSL 13",
323     "al_r11_r11_LSL_13"},
324    {{al, r1, r12, ROR, 25}, false, al, "al r1 r12 ROR 25", "al_r1_r12_ROR_25"},
325    {{al, r9, r5, LSL, 20}, false, al, "al r9 r5 LSL 20", "al_r9_r5_LSL_20"},
326    {{al, r12, r11, LSL, 20},
327     false,
328     al,
329     "al r12 r11 LSL 20",
330     "al_r12_r11_LSL_20"},
331    {{al, r8, r3, ROR, 31}, false, al, "al r8 r3 ROR 31", "al_r8_r3_ROR_31"},
332    {{al, r0, r14, ROR, 3}, false, al, "al r0 r14 ROR 3", "al_r0_r14_ROR_3"},
333    {{al, r13, r14, LSL, 30},
334     false,
335     al,
336     "al r13 r14 LSL 30",
337     "al_r13_r14_LSL_30"},
338    {{al, r3, r6, ROR, 24}, false, al, "al r3 r6 ROR 24", "al_r3_r6_ROR_24"},
339    {{al, r10, r10, LSL, 23},
340     false,
341     al,
342     "al r10 r10 LSL 23",
343     "al_r10_r10_LSL_23"},
344    {{al, r9, r1, LSL, 7}, false, al, "al r9 r1 LSL 7", "al_r9_r1_LSL_7"},
345    {{al, r6, r13, ROR, 27}, false, al, "al r6 r13 ROR 27", "al_r6_r13_ROR_27"},
346    {{al, r1, r14, LSL, 21}, false, al, "al r1 r14 LSL 21", "al_r1_r14_LSL_21"},
347    {{al, r9, r14, ROR, 12}, false, al, "al r9 r14 ROR 12", "al_r9_r14_ROR_12"},
348    {{al, r14, r2, LSL, 17}, false, al, "al r14 r2 LSL 17", "al_r14_r2_LSL_17"},
349    {{al, r11, r14, LSL, 11},
350     false,
351     al,
352     "al r11 r14 LSL 11",
353     "al_r11_r14_LSL_11"},
354    {{al, r11, r7, ROR, 2}, false, al, "al r11 r7 ROR 2", "al_r11_r7_ROR_2"},
355    {{al, r8, r7, ROR, 20}, false, al, "al r8 r7 ROR 20", "al_r8_r7_ROR_20"},
356    {{al, r10, r11, LSL, 5}, false, al, "al r10 r11 LSL 5", "al_r10_r11_LSL_5"},
357    {{al, r5, r11, ROR, 16}, false, al, "al r5 r11 ROR 16", "al_r5_r11_ROR_16"},
358    {{al, r8, r3, LSL, 23}, false, al, "al r8 r3 LSL 23", "al_r8_r3_LSL_23"},
359    {{al, r2, r8, LSL, 23}, false, al, "al r2 r8 LSL 23", "al_r2_r8_LSL_23"},
360    {{al, r2, r13, LSL, 28}, false, al, "al r2 r13 LSL 28", "al_r2_r13_LSL_28"},
361    {{al, r1, r0, LSL, 20}, false, al, "al r1 r0 LSL 20", "al_r1_r0_LSL_20"},
362    {{al, r9, r8, ROR, 21}, false, al, "al r9 r8 ROR 21", "al_r9_r8_ROR_21"},
363    {{al, r5, r14, LSL, 22}, false, al, "al r5 r14 LSL 22", "al_r5_r14_LSL_22"},
364    {{al, r4, r9, ROR, 7}, false, al, "al r4 r9 ROR 7", "al_r4_r9_ROR_7"},
365    {{al, r2, r12, ROR, 9}, false, al, "al r2 r12 ROR 9", "al_r2_r12_ROR_9"},
366    {{al, r4, r10, LSL, 31}, false, al, "al r4 r10 LSL 31", "al_r4_r10_LSL_31"},
367    {{al, r4, r2, LSL, 8}, false, al, "al r4 r2 LSL 8", "al_r4_r2_LSL_8"},
368    {{al, r10, r6, LSL, 27}, false, al, "al r10 r6 LSL 27", "al_r10_r6_LSL_27"},
369    {{al, r12, r7, ROR, 7}, false, al, "al r12 r7 ROR 7", "al_r12_r7_ROR_7"},
370    {{al, r5, r1, ROR, 9}, false, al, "al r5 r1 ROR 9", "al_r5_r1_ROR_9"},
371    {{al, r13, r13, LSL, 29},
372     false,
373     al,
374     "al r13 r13 LSL 29",
375     "al_r13_r13_LSL_29"},
376    {{al, r0, r12, ROR, 28}, false, al, "al r0 r12 ROR 28", "al_r0_r12_ROR_28"},
377    {{al, r9, r6, ROR, 26}, false, al, "al r9 r6 ROR 26", "al_r9_r6_ROR_26"},
378    {{al, r1, r8, ROR, 14}, false, al, "al r1 r8 ROR 14", "al_r1_r8_ROR_14"},
379    {{al, r9, r5, LSL, 19}, false, al, "al r9 r5 LSL 19", "al_r9_r5_LSL_19"},
380    {{al, r10, r5, LSL, 23}, false, al, "al r10 r5 LSL 23", "al_r10_r5_LSL_23"},
381    {{al, r2, r12, ROR, 2}, false, al, "al r2 r12 ROR 2", "al_r2_r12_ROR_2"},
382    {{al, r5, r10, ROR, 18}, false, al, "al r5 r10 ROR 18", "al_r5_r10_ROR_18"},
383    {{al, r13, r12, ROR, 12},
384     false,
385     al,
386     "al r13 r12 ROR 12",
387     "al_r13_r12_ROR_12"},
388    {{al, r9, r10, LSL, 15}, false, al, "al r9 r10 LSL 15", "al_r9_r10_LSL_15"},
389    {{al, r9, r2, LSL, 26}, false, al, "al r9 r2 LSL 26", "al_r9_r2_LSL_26"},
390    {{al, r2, r3, LSL, 19}, false, al, "al r2 r3 LSL 19", "al_r2_r3_LSL_19"},
391    {{al, r7, r10, ROR, 28}, false, al, "al r7 r10 ROR 28", "al_r7_r10_ROR_28"},
392    {{al, r14, r6, ROR, 6}, false, al, "al r14 r6 ROR 6", "al_r14_r6_ROR_6"},
393    {{al, r5, r1, ROR, 16}, false, al, "al r5 r1 ROR 16", "al_r5_r1_ROR_16"},
394    {{al, r4, r6, ROR, 10}, false, al, "al r4 r6 ROR 10", "al_r4_r6_ROR_10"},
395    {{al, r7, r12, LSL, 10}, false, al, "al r7 r12 LSL 10", "al_r7_r12_LSL_10"},
396    {{al, r0, r14, LSL, 28}, false, al, "al r0 r14 LSL 28", "al_r0_r14_LSL_28"},
397    {{al, r8, r2, LSL, 27}, false, al, "al r8 r2 LSL 27", "al_r8_r2_LSL_27"},
398    {{al, r8, r12, ROR, 1}, false, al, "al r8 r12 ROR 1", "al_r8_r12_ROR_1"},
399    {{al, r8, r4, ROR, 4}, false, al, "al r8 r4 ROR 4", "al_r8_r4_ROR_4"},
400    {{al, r3, r5, ROR, 20}, false, al, "al r3 r5 ROR 20", "al_r3_r5_ROR_20"},
401    {{al, r6, r13, LSL, 5}, false, al, "al r6 r13 LSL 5", "al_r6_r13_LSL_5"},
402    {{al, r9, r9, LSL, 4}, false, al, "al r9 r9 LSL 4", "al_r9_r9_LSL_4"},
403    {{al, r13, r13, ROR, 7}, false, al, "al r13 r13 ROR 7", "al_r13_r13_ROR_7"},
404    {{al, r3, r7, LSL, 11}, false, al, "al r3 r7 LSL 11", "al_r3_r7_LSL_11"},
405    {{al, r1, r3, ROR, 15}, false, al, "al r1 r3 ROR 15", "al_r1_r3_ROR_15"},
406    {{al, r2, r0, LSL, 30}, false, al, "al r2 r0 LSL 30", "al_r2_r0_LSL_30"},
407    {{al, r11, r13, ROR, 16},
408     false,
409     al,
410     "al r11 r13 ROR 16",
411     "al_r11_r13_ROR_16"},
412    {{al, r3, r0, LSL, 15}, false, al, "al r3 r0 LSL 15", "al_r3_r0_LSL_15"},
413    {{al, r2, r0, LSL, 8}, false, al, "al r2 r0 LSL 8", "al_r2_r0_LSL_8"},
414    {{al, r4, r13, ROR, 5}, false, al, "al r4 r13 ROR 5", "al_r4_r13_ROR_5"},
415    {{al, r13, r0, ROR, 29}, false, al, "al r13 r0 ROR 29", "al_r13_r0_ROR_29"},
416    {{al, r6, r2, ROR, 18}, false, al, "al r6 r2 ROR 18", "al_r6_r2_ROR_18"},
417    {{al, r1, r2, LSL, 2}, false, al, "al r1 r2 LSL 2", "al_r1_r2_LSL_2"},
418    {{al, r7, r4, ROR, 12}, false, al, "al r7 r4 ROR 12", "al_r7_r4_ROR_12"},
419    {{al, r9, r11, ROR, 6}, false, al, "al r9 r11 ROR 6", "al_r9_r11_ROR_6"},
420    {{al, r8, r2, ROR, 12}, false, al, "al r8 r2 ROR 12", "al_r8_r2_ROR_12"},
421    {{al, r12, r2, LSL, 19}, false, al, "al r12 r2 LSL 19", "al_r12_r2_LSL_19"},
422    {{al, r13, r0, ROR, 30}, false, al, "al r13 r0 ROR 30", "al_r13_r0_ROR_30"},
423    {{al, r7, r6, ROR, 16}, false, al, "al r7 r6 ROR 16", "al_r7_r6_ROR_16"},
424    {{al, r6, r13, ROR, 19}, false, al, "al r6 r13 ROR 19", "al_r6_r13_ROR_19"},
425    {{al, r14, r3, LSL, 19}, false, al, "al r14 r3 LSL 19", "al_r14_r3_LSL_19"},
426    {{al, r14, r5, ROR, 24}, false, al, "al r14 r5 ROR 24", "al_r14_r5_ROR_24"},
427    {{al, r10, r12, LSL, 8}, false, al, "al r10 r12 LSL 8", "al_r10_r12_LSL_8"},
428    {{al, r14, r7, LSL, 11}, false, al, "al r14 r7 LSL 11", "al_r14_r7_LSL_11"},
429    {{al, r10, r14, LSL, 30},
430     false,
431     al,
432     "al r10 r14 LSL 30",
433     "al_r10_r14_LSL_30"},
434    {{al, r7, r13, ROR, 7}, false, al, "al r7 r13 ROR 7", "al_r7_r13_ROR_7"},
435    {{al, r11, r0, LSL, 23}, false, al, "al r11 r0 LSL 23", "al_r11_r0_LSL_23"},
436    {{al, r0, r12, LSL, 30}, false, al, "al r0 r12 LSL 30", "al_r0_r12_LSL_30"},
437    {{al, r5, r12, LSL, 7}, false, al, "al r5 r12 LSL 7", "al_r5_r12_LSL_7"},
438    {{al, r12, r12, ROR, 14},
439     false,
440     al,
441     "al r12 r12 ROR 14",
442     "al_r12_r12_ROR_14"},
443    {{al, r8, r11, LSL, 4}, false, al, "al r8 r11 LSL 4", "al_r8_r11_LSL_4"},
444    {{al, r14, r2, ROR, 24}, false, al, "al r14 r2 ROR 24", "al_r14_r2_ROR_24"},
445    {{al, r10, r2, ROR, 31}, false, al, "al r10 r2 ROR 31", "al_r10_r2_ROR_31"},
446    {{al, r11, r5, LSL, 1}, false, al, "al r11 r5 LSL 1", "al_r11_r5_LSL_1"},
447    {{al, r8, r6, LSL, 24}, false, al, "al r8 r6 LSL 24", "al_r8_r6_LSL_24"},
448    {{al, r14, r1, ROR, 8}, false, al, "al r14 r1 ROR 8", "al_r14_r1_ROR_8"},
449    {{al, r11, r2, ROR, 19}, false, al, "al r11 r2 ROR 19", "al_r11_r2_ROR_19"},
450    {{al, r1, r12, LSL, 14}, false, al, "al r1 r12 LSL 14", "al_r1_r12_LSL_14"},
451    {{al, r6, r10, LSL, 30}, false, al, "al r6 r10 LSL 30", "al_r6_r10_LSL_30"},
452    {{al, r8, r1, ROR, 6}, false, al, "al r8 r1 ROR 6", "al_r8_r1_ROR_6"},
453    {{al, r13, r11, ROR, 6}, false, al, "al r13 r11 ROR 6", "al_r13_r11_ROR_6"},
454    {{al, r5, r13, LSL, 30}, false, al, "al r5 r13 LSL 30", "al_r5_r13_LSL_30"},
455    {{al, r0, r13, ROR, 26}, false, al, "al r0 r13 ROR 26", "al_r0_r13_ROR_26"},
456    {{al, r4, r10, LSL, 30}, false, al, "al r4 r10 LSL 30", "al_r4_r10_LSL_30"},
457    {{al, r8, r4, LSL, 16}, false, al, "al r8 r4 LSL 16", "al_r8_r4_LSL_16"},
458    {{al, r11, r12, LSL, 11},
459     false,
460     al,
461     "al r11 r12 LSL 11",
462     "al_r11_r12_LSL_11"},
463    {{al, r9, r3, ROR, 2}, false, al, "al r9 r3 ROR 2", "al_r9_r3_ROR_2"},
464    {{al, r11, r7, LSL, 26}, false, al, "al r11 r7 LSL 26", "al_r11_r7_LSL_26"},
465    {{al, r14, r2, ROR, 22}, false, al, "al r14 r2 ROR 22", "al_r14_r2_ROR_22"},
466    {{al, r8, r2, ROR, 10}, false, al, "al r8 r2 ROR 10", "al_r8_r2_ROR_10"},
467    {{al, r5, r2, ROR, 28}, false, al, "al r5 r2 ROR 28", "al_r5_r2_ROR_28"},
468    {{al, r14, r3, ROR, 11}, false, al, "al r14 r3 ROR 11", "al_r14_r3_ROR_11"},
469    {{al, r3, r14, LSL, 5}, false, al, "al r3 r14 LSL 5", "al_r3_r14_LSL_5"},
470    {{al, r12, r3, ROR, 15}, false, al, "al r12 r3 ROR 15", "al_r12_r3_ROR_15"},
471    {{al, r4, r1, ROR, 30}, false, al, "al r4 r1 ROR 30", "al_r4_r1_ROR_30"},
472    {{al, r13, r8, ROR, 11}, false, al, "al r13 r8 ROR 11", "al_r13_r8_ROR_11"},
473    {{al, r6, r9, ROR, 9}, false, al, "al r6 r9 ROR 9", "al_r6_r9_ROR_9"},
474    {{al, r8, r13, ROR, 15}, false, al, "al r8 r13 ROR 15", "al_r8_r13_ROR_15"},
475    {{al, r0, r14, ROR, 12}, false, al, "al r0 r14 ROR 12", "al_r0_r14_ROR_12"},
476    {{al, r0, r10, LSL, 6}, false, al, "al r0 r10 LSL 6", "al_r0_r10_LSL_6"},
477    {{al, r8, r7, LSL, 5}, false, al, "al r8 r7 LSL 5", "al_r8_r7_LSL_5"},
478    {{al, r3, r7, ROR, 11}, false, al, "al r3 r7 ROR 11", "al_r3_r7_ROR_11"},
479    {{al, r5, r1, LSL, 20}, false, al, "al r5 r1 LSL 20", "al_r5_r1_LSL_20"},
480    {{al, r6, r7, LSL, 10}, false, al, "al r6 r7 LSL 10", "al_r6_r7_LSL_10"},
481    {{al, r14, r0, ROR, 27}, false, al, "al r14 r0 ROR 27", "al_r14_r0_ROR_27"},
482    {{al, r6, r12, LSL, 5}, false, al, "al r6 r12 LSL 5", "al_r6_r12_LSL_5"},
483    {{al, r4, r8, LSL, 28}, false, al, "al r4 r8 LSL 28", "al_r4_r8_LSL_28"},
484    {{al, r7, r6, ROR, 15}, false, al, "al r7 r6 ROR 15", "al_r7_r6_ROR_15"},
485    {{al, r0, r6, LSL, 27}, false, al, "al r0 r6 LSL 27", "al_r0_r6_LSL_27"},
486    {{al, r1, r6, ROR, 19}, false, al, "al r1 r6 ROR 19", "al_r1_r6_ROR_19"},
487    {{al, r11, r14, ROR, 21},
488     false,
489     al,
490     "al r11 r14 ROR 21",
491     "al_r11_r14_ROR_21"},
492    {{al, r4, r13, LSL, 5}, false, al, "al r4 r13 LSL 5", "al_r4_r13_LSL_5"},
493    {{al, r4, r7, ROR, 2}, false, al, "al r4 r7 ROR 2", "al_r4_r7_ROR_2"},
494    {{al, r8, r1, ROR, 29}, false, al, "al r8 r1 ROR 29", "al_r8_r1_ROR_29"},
495    {{al, r14, r2, LSL, 24}, false, al, "al r14 r2 LSL 24", "al_r14_r2_LSL_24"},
496    {{al, r5, r12, ROR, 27}, false, al, "al r5 r12 ROR 27", "al_r5_r12_ROR_27"},
497    {{al, r11, r4, ROR, 14}, false, al, "al r11 r4 ROR 14", "al_r11_r4_ROR_14"},
498    {{al, r4, r7, LSL, 28}, false, al, "al r4 r7 LSL 28", "al_r4_r7_LSL_28"},
499    {{al, r3, r6, LSL, 9}, false, al, "al r3 r6 LSL 9", "al_r3_r6_LSL_9"},
500    {{al, r11, r13, LSL, 12},
501     false,
502     al,
503     "al r11 r13 LSL 12",
504     "al_r11_r13_LSL_12"},
505    {{al, r10, r7, ROR, 20}, false, al, "al r10 r7 ROR 20", "al_r10_r7_ROR_20"},
506    {{al, r2, r8, LSL, 12}, false, al, "al r2 r8 LSL 12", "al_r2_r8_LSL_12"},
507    {{al, r4, r13, LSL, 28}, false, al, "al r4 r13 LSL 28", "al_r4_r13_LSL_28"},
508    {{al, r1, r12, LSL, 28}, false, al, "al r1 r12 LSL 28", "al_r1_r12_LSL_28"},
509    {{al, r7, r14, LSL, 6}, false, al, "al r7 r14 LSL 6", "al_r7_r14_LSL_6"},
510    {{al, r11, r2, ROR, 10}, false, al, "al r11 r2 ROR 10", "al_r11_r2_ROR_10"},
511    {{al, r3, r9, ROR, 7}, false, al, "al r3 r9 ROR 7", "al_r3_r9_ROR_7"},
512    {{al, r2, r12, LSL, 11}, false, al, "al r2 r12 LSL 11", "al_r2_r12_LSL_11"},
513    {{al, r4, r2, ROR, 19}, false, al, "al r4 r2 ROR 19", "al_r4_r2_ROR_19"},
514    {{al, r13, r0, LSL, 5}, false, al, "al r13 r0 LSL 5", "al_r13_r0_LSL_5"},
515    {{al, r14, r11, ROR, 29},
516     false,
517     al,
518     "al r14 r11 ROR 29",
519     "al_r14_r11_ROR_29"},
520    {{al, r9, r6, LSL, 11}, false, al, "al r9 r6 LSL 11", "al_r9_r6_LSL_11"},
521    {{al, r2, r10, ROR, 30}, false, al, "al r2 r10 ROR 30", "al_r2_r10_ROR_30"},
522    {{al, r3, r14, ROR, 4}, false, al, "al r3 r14 ROR 4", "al_r3_r14_ROR_4"},
523    {{al, r9, r6, LSL, 24}, false, al, "al r9 r6 LSL 24", "al_r9_r6_LSL_24"},
524    {{al, r9, r8, LSL, 2}, false, al, "al r9 r8 LSL 2", "al_r9_r8_LSL_2"},
525    {{al, r12, r5, ROR, 7}, false, al, "al r12 r5 ROR 7", "al_r12_r5_ROR_7"},
526    {{al, r1, r11, ROR, 20}, false, al, "al r1 r11 ROR 20", "al_r1_r11_ROR_20"},
527    {{al, r6, r12, LSL, 6}, false, al, "al r6 r12 LSL 6", "al_r6_r12_LSL_6"},
528    {{al, r14, r11, ROR, 26},
529     false,
530     al,
531     "al r14 r11 ROR 26",
532     "al_r14_r11_ROR_26"},
533    {{al, r5, r8, ROR, 6}, false, al, "al r5 r8 ROR 6", "al_r5_r8_ROR_6"},
534    {{al, r10, r4, LSL, 8}, false, al, "al r10 r4 LSL 8", "al_r10_r4_LSL_8"},
535    {{al, r5, r0, ROR, 24}, false, al, "al r5 r0 ROR 24", "al_r5_r0_ROR_24"},
536    {{al, r10, r3, LSL, 20}, false, al, "al r10 r3 LSL 20", "al_r10_r3_LSL_20"},
537    {{al, r14, r4, LSL, 22}, false, al, "al r14 r4 LSL 22", "al_r14_r4_LSL_22"},
538    {{al, r8, r8, ROR, 1}, false, al, "al r8 r8 ROR 1", "al_r8_r8_ROR_1"},
539    {{al, r12, r9, ROR, 8}, false, al, "al r12 r9 ROR 8", "al_r12_r9_ROR_8"},
540    {{al, r6, r13, ROR, 15}, false, al, "al r6 r13 ROR 15", "al_r6_r13_ROR_15"},
541    {{al, r9, r5, LSL, 2}, false, al, "al r9 r5 LSL 2", "al_r9_r5_LSL_2"},
542    {{al, r13, r8, LSL, 17}, false, al, "al r13 r8 LSL 17", "al_r13_r8_LSL_17"},
543    {{al, r2, r5, ROR, 27}, false, al, "al r2 r5 ROR 27", "al_r2_r5_ROR_27"},
544    {{al, r13, r12, ROR, 10},
545     false,
546     al,
547     "al r13 r12 ROR 10",
548     "al_r13_r12_ROR_10"},
549    {{al, r13, r2, LSL, 30}, false, al, "al r13 r2 LSL 30", "al_r13_r2_LSL_30"},
550    {{al, r10, r11, LSL, 20},
551     false,
552     al,
553     "al r10 r11 LSL 20",
554     "al_r10_r11_LSL_20"},
555    {{al, r6, r1, ROR, 22}, false, al, "al r6 r1 ROR 22", "al_r6_r1_ROR_22"},
556    {{al, r0, r4, ROR, 18}, false, al, "al r0 r4 ROR 18", "al_r0_r4_ROR_18"},
557    {{al, r11, r14, ROR, 19},
558     false,
559     al,
560     "al r11 r14 ROR 19",
561     "al_r11_r14_ROR_19"},
562    {{al, r0, r7, ROR, 4}, false, al, "al r0 r7 ROR 4", "al_r0_r7_ROR_4"},
563    {{al, r1, r5, LSL, 13}, false, al, "al r1 r5 LSL 13", "al_r1_r5_LSL_13"},
564    {{al, r11, r14, LSL, 6}, false, al, "al r11 r14 LSL 6", "al_r11_r14_LSL_6"},
565    {{al, r6, r11, LSL, 10}, false, al, "al r6 r11 LSL 10", "al_r6_r11_LSL_10"},
566    {{al, r10, r14, LSL, 1}, false, al, "al r10 r14 LSL 1", "al_r10_r14_LSL_1"},
567    {{al, r13, r4, ROR, 29}, false, al, "al r13 r4 ROR 29", "al_r13_r4_ROR_29"},
568    {{al, r9, r8, ROR, 28}, false, al, "al r9 r8 ROR 28", "al_r9_r8_ROR_28"},
569    {{al, r7, r12, ROR, 22}, false, al, "al r7 r12 ROR 22", "al_r7_r12_ROR_22"},
570    {{al, r1, r12, ROR, 10}, false, al, "al r1 r12 ROR 10", "al_r1_r12_ROR_10"},
571    {{al, r7, r8, ROR, 31}, false, al, "al r7 r8 ROR 31", "al_r7_r8_ROR_31"},
572    {{al, r0, r2, ROR, 25}, false, al, "al r0 r2 ROR 25", "al_r0_r2_ROR_25"},
573    {{al, r3, r5, LSL, 24}, false, al, "al r3 r5 LSL 24", "al_r3_r5_LSL_24"},
574    {{al, r11, r10, LSL, 25},
575     false,
576     al,
577     "al r11 r10 LSL 25",
578     "al_r11_r10_LSL_25"},
579    {{al, r11, r1, LSL, 9}, false, al, "al r11 r1 LSL 9", "al_r11_r1_LSL_9"},
580    {{al, r2, r7, LSL, 3}, false, al, "al r2 r7 LSL 3", "al_r2_r7_LSL_3"},
581    {{al, r0, r10, ROR, 20}, false, al, "al r0 r10 ROR 20", "al_r0_r10_ROR_20"},
582    {{al, r7, r0, LSL, 2}, false, al, "al r7 r0 LSL 2", "al_r7_r0_LSL_2"},
583    {{al, r12, r5, LSL, 8}, false, al, "al r12 r5 LSL 8", "al_r12_r5_LSL_8"},
584    {{al, r11, r1, ROR, 16}, false, al, "al r11 r1 ROR 16", "al_r11_r1_ROR_16"},
585    {{al, r3, r3, LSL, 30}, false, al, "al r3 r3 LSL 30", "al_r3_r3_LSL_30"},
586    {{al, r4, r9, LSL, 16}, false, al, "al r4 r9 LSL 16", "al_r4_r9_LSL_16"},
587    {{al, r9, r8, LSL, 27}, false, al, "al r9 r8 LSL 27", "al_r9_r8_LSL_27"},
588    {{al, r4, r2, LSL, 15}, false, al, "al r4 r2 LSL 15", "al_r4_r2_LSL_15"},
589    {{al, r12, r13, LSL, 3}, false, al, "al r12 r13 LSL 3", "al_r12_r13_LSL_3"},
590    {{al, r11, r3, LSL, 29}, false, al, "al r11 r3 LSL 29", "al_r11_r3_LSL_29"},
591    {{al, r4, r6, ROR, 23}, false, al, "al r4 r6 ROR 23", "al_r4_r6_ROR_23"},
592    {{al, r5, r8, LSL, 3}, false, al, "al r5 r8 LSL 3", "al_r5_r8_LSL_3"},
593    {{al, r1, r9, ROR, 4}, false, al, "al r1 r9 ROR 4", "al_r1_r9_ROR_4"},
594    {{al, r13, r6, LSL, 12}, false, al, "al r13 r6 LSL 12", "al_r13_r6_LSL_12"},
595    {{al, r12, r6, ROR, 17}, false, al, "al r12 r6 ROR 17", "al_r12_r6_ROR_17"},
596    {{al, r2, r1, LSL, 22}, false, al, "al r2 r1 LSL 22", "al_r2_r1_LSL_22"},
597    {{al, r9, r2, LSL, 10}, false, al, "al r9 r2 LSL 10", "al_r9_r2_LSL_10"},
598    {{al, r11, r10, LSL, 21},
599     false,
600     al,
601     "al r11 r10 LSL 21",
602     "al_r11_r10_LSL_21"},
603    {{al, r8, r12, LSL, 31}, false, al, "al r8 r12 LSL 31", "al_r8_r12_LSL_31"},
604    {{al, r5, r2, LSL, 11}, false, al, "al r5 r2 LSL 11", "al_r5_r2_LSL_11"},
605    {{al, r9, r6, LSL, 31}, false, al, "al r9 r6 LSL 31", "al_r9_r6_LSL_31"},
606    {{al, r6, r6, ROR, 23}, false, al, "al r6 r6 ROR 23", "al_r6_r6_ROR_23"},
607    {{al, r14, r3, LSL, 5}, false, al, "al r14 r3 LSL 5", "al_r14_r3_LSL_5"},
608    {{al, r14, r9, ROR, 26}, false, al, "al r14 r9 ROR 26", "al_r14_r9_ROR_26"},
609    {{al, r13, r1, ROR, 15}, false, al, "al r13 r1 ROR 15", "al_r13_r1_ROR_15"},
610    {{al, r2, r13, LSL, 13}, false, al, "al r2 r13 LSL 13", "al_r2_r13_LSL_13"},
611    {{al, r14, r7, LSL, 8}, false, al, "al r14 r7 LSL 8", "al_r14_r7_LSL_8"},
612    {{al, r9, r4, LSL, 8}, false, al, "al r9 r4 LSL 8", "al_r9_r4_LSL_8"},
613    {{al, r0, r13, LSL, 26}, false, al, "al r0 r13 LSL 26", "al_r0_r13_LSL_26"},
614    {{al, r11, r1, LSL, 12}, false, al, "al r11 r1 LSL 12", "al_r11_r1_LSL_12"},
615    {{al, r7, r6, LSL, 5}, false, al, "al r7 r6 LSL 5", "al_r7_r6_LSL_5"},
616    {{al, r4, r9, LSL, 15}, false, al, "al r4 r9 LSL 15", "al_r4_r9_LSL_15"},
617    {{al, r2, r14, ROR, 19}, false, al, "al r2 r14 ROR 19", "al_r2_r14_ROR_19"},
618    {{al, r12, r4, LSL, 21}, false, al, "al r12 r4 LSL 21", "al_r12_r4_LSL_21"},
619    {{al, r0, r9, ROR, 23}, false, al, "al r0 r9 ROR 23", "al_r0_r9_ROR_23"},
620    {{al, r5, r13, ROR, 31}, false, al, "al r5 r13 ROR 31", "al_r5_r13_ROR_31"},
621    {{al, r8, r1, ROR, 19}, false, al, "al r8 r1 ROR 19", "al_r8_r1_ROR_19"},
622    {{al, r1, r11, ROR, 10}, false, al, "al r1 r11 ROR 10", "al_r1_r11_ROR_10"},
623    {{al, r10, r7, ROR, 22}, false, al, "al r10 r7 ROR 22", "al_r10_r7_ROR_22"},
624    {{al, r10, r11, LSL, 26},
625     false,
626     al,
627     "al r10 r11 LSL 26",
628     "al_r10_r11_LSL_26"},
629    {{al, r0, r14, ROR, 15}, false, al, "al r0 r14 ROR 15", "al_r0_r14_ROR_15"},
630    {{al, r1, r9, LSL, 20}, false, al, "al r1 r9 LSL 20", "al_r1_r9_LSL_20"},
631    {{al, r7, r0, LSL, 11}, false, al, "al r7 r0 LSL 11", "al_r7_r0_LSL_11"},
632    {{al, r10, r14, ROR, 15},
633     false,
634     al,
635     "al r10 r14 ROR 15",
636     "al_r10_r14_ROR_15"},
637    {{al, r1, r11, LSL, 2}, false, al, "al r1 r11 LSL 2", "al_r1_r11_LSL_2"},
638    {{al, r1, r13, ROR, 2}, false, al, "al r1 r13 ROR 2", "al_r1_r13_ROR_2"},
639    {{al, r12, r1, ROR, 13}, false, al, "al r12 r1 ROR 13", "al_r12_r1_ROR_13"},
640    {{al, r1, r4, LSL, 17}, false, al, "al r1 r4 LSL 17", "al_r1_r4_LSL_17"},
641    {{al, r11, r4, ROR, 16}, false, al, "al r11 r4 ROR 16", "al_r11_r4_ROR_16"},
642    {{al, r1, r1, LSL, 31}, false, al, "al r1 r1 LSL 31", "al_r1_r1_LSL_31"},
643    {{al, r11, r0, ROR, 15}, false, al, "al r11 r0 ROR 15", "al_r11_r0_ROR_15"},
644    {{al, r1, r12, LSL, 10}, false, al, "al r1 r12 LSL 10", "al_r1_r12_LSL_10"},
645    {{al, r0, r12, LSL, 11}, false, al, "al r0 r12 LSL 11", "al_r0_r12_LSL_11"},
646    {{al, r10, r10, ROR, 8}, false, al, "al r10 r10 ROR 8", "al_r10_r10_ROR_8"},
647    {{al, r2, r5, ROR, 29}, false, al, "al r2 r5 ROR 29", "al_r2_r5_ROR_29"},
648    {{al, r7, r7, LSL, 9}, false, al, "al r7 r7 LSL 9", "al_r7_r7_LSL_9"},
649    {{al, r9, r1, LSL, 11}, false, al, "al r9 r1 LSL 11", "al_r9_r1_LSL_11"},
650    {{al, r5, r8, ROR, 14}, false, al, "al r5 r8 ROR 14", "al_r5_r8_ROR_14"},
651    {{al, r1, r6, ROR, 25}, false, al, "al r1 r6 ROR 25", "al_r1_r6_ROR_25"},
652    {{al, r13, r2, LSL, 7}, false, al, "al r13 r2 LSL 7", "al_r13_r2_LSL_7"},
653    {{al, r0, r3, ROR, 24}, false, al, "al r0 r3 ROR 24", "al_r0_r3_ROR_24"},
654    {{al, r4, r5, ROR, 31}, false, al, "al r4 r5 ROR 31", "al_r4_r5_ROR_31"},
655    {{al, r0, r13, ROR, 28}, false, al, "al r0 r13 ROR 28", "al_r0_r13_ROR_28"},
656    {{al, r11, r3, LSL, 5}, false, al, "al r11 r3 LSL 5", "al_r11_r3_LSL_5"},
657    {{al, r3, r1, LSL, 1}, false, al, "al r3 r1 LSL 1", "al_r3_r1_LSL_1"},
658    {{al, r10, r7, ROR, 8}, false, al, "al r10 r7 ROR 8", "al_r10_r7_ROR_8"},
659    {{al, r0, r13, LSL, 17}, false, al, "al r0 r13 LSL 17", "al_r0_r13_LSL_17"},
660    {{al, r10, r3, LSL, 16}, false, al, "al r10 r3 LSL 16", "al_r10_r3_LSL_16"},
661    {{al, r14, r14, LSL, 21},
662     false,
663     al,
664     "al r14 r14 LSL 21",
665     "al_r14_r14_LSL_21"},
666    {{al, r0, r7, ROR, 12}, false, al, "al r0 r7 ROR 12", "al_r0_r7_ROR_12"},
667    {{al, r4, r11, LSL, 1}, false, al, "al r4 r11 LSL 1", "al_r4_r11_LSL_1"},
668    {{al, r4, r10, ROR, 25}, false, al, "al r4 r10 ROR 25", "al_r4_r10_ROR_25"},
669    {{al, r11, r7, LSL, 10}, false, al, "al r11 r7 LSL 10", "al_r11_r7_LSL_10"},
670    {{al, r4, r13, LSL, 13}, false, al, "al r4 r13 LSL 13", "al_r4_r13_LSL_13"},
671    {{al, r11, r4, ROR, 9}, false, al, "al r11 r4 ROR 9", "al_r11_r4_ROR_9"},
672    {{al, r8, r3, LSL, 4}, false, al, "al r8 r3 LSL 4", "al_r8_r3_LSL_4"},
673    {{al, r0, r3, LSL, 22}, false, al, "al r0 r3 LSL 22", "al_r0_r3_LSL_22"},
674    {{al, r9, r3, LSL, 16}, false, al, "al r9 r3 LSL 16", "al_r9_r3_LSL_16"},
675    {{al, r1, r11, LSL, 24}, false, al, "al r1 r11 LSL 24", "al_r1_r11_LSL_24"},
676    {{al, r0, r7, LSL, 11}, false, al, "al r0 r7 LSL 11", "al_r0_r7_LSL_11"},
677    {{al, r13, r8, LSL, 29}, false, al, "al r13 r8 LSL 29", "al_r13_r8_LSL_29"},
678    {{al, r8, r8, LSL, 1}, false, al, "al r8 r8 LSL 1", "al_r8_r8_LSL_1"},
679    {{al, r8, r1, LSL, 21}, false, al, "al r8 r1 LSL 21", "al_r8_r1_LSL_21"},
680    {{al, r1, r3, LSL, 27}, false, al, "al r1 r3 LSL 27", "al_r1_r3_LSL_27"},
681    {{al, r1, r8, ROR, 2}, false, al, "al r1 r8 ROR 2", "al_r1_r8_ROR_2"},
682    {{al, r9, r4, ROR, 9}, false, al, "al r9 r4 ROR 9", "al_r9_r4_ROR_9"},
683    {{al, r10, r3, ROR, 28}, false, al, "al r10 r3 ROR 28", "al_r10_r3_ROR_28"},
684    {{al, r4, r8, ROR, 11}, false, al, "al r4 r8 ROR 11", "al_r4_r8_ROR_11"},
685    {{al, r2, r3, LSL, 17}, false, al, "al r2 r3 LSL 17", "al_r2_r3_LSL_17"},
686    {{al, r5, r6, ROR, 17}, false, al, "al r5 r6 ROR 17", "al_r5_r6_ROR_17"},
687    {{al, r8, r9, LSL, 6}, false, al, "al r8 r9 LSL 6", "al_r8_r9_LSL_6"},
688    {{al, r9, r11, ROR, 29}, false, al, "al r9 r11 ROR 29", "al_r9_r11_ROR_29"},
689    {{al, r11, r12, ROR, 20},
690     false,
691     al,
692     "al r11 r12 ROR 20",
693     "al_r11_r12_ROR_20"},
694    {{al, r8, r13, LSL, 21}, false, al, "al r8 r13 LSL 21", "al_r8_r13_LSL_21"},
695    {{al, r8, r9, LSL, 22}, false, al, "al r8 r9 LSL 22", "al_r8_r9_LSL_22"},
696    {{al, r11, r1, ROR, 14}, false, al, "al r11 r1 ROR 14", "al_r11_r1_ROR_14"},
697    {{al, r13, r3, LSL, 15}, false, al, "al r13 r3 LSL 15", "al_r13_r3_LSL_15"},
698    {{al, r3, r7, LSL, 9}, false, al, "al r3 r7 LSL 9", "al_r3_r7_LSL_9"},
699    {{al, r5, r4, ROR, 10}, false, al, "al r5 r4 ROR 10", "al_r5_r4_ROR_10"},
700    {{al, r11, r10, LSL, 24},
701     false,
702     al,
703     "al r11 r10 LSL 24",
704     "al_r11_r10_LSL_24"},
705    {{al, r1, r9, ROR, 25}, false, al, "al r1 r9 ROR 25", "al_r1_r9_ROR_25"},
706    {{al, r9, r2, ROR, 5}, false, al, "al r9 r2 ROR 5", "al_r9_r2_ROR_5"},
707    {{al, r5, r4, ROR, 19}, false, al, "al r5 r4 ROR 19", "al_r5_r4_ROR_19"},
708    {{al, r1, r14, ROR, 19}, false, al, "al r1 r14 ROR 19", "al_r1_r14_ROR_19"},
709    {{al, r10, r9, LSL, 30}, false, al, "al r10 r9 LSL 30", "al_r10_r9_LSL_30"},
710    {{al, r9, r4, ROR, 24}, false, al, "al r9 r4 ROR 24", "al_r9_r4_ROR_24"},
711    {{al, r6, r6, LSL, 23}, false, al, "al r6 r6 LSL 23", "al_r6_r6_LSL_23"},
712    {{al, r5, r7, LSL, 29}, false, al, "al r5 r7 LSL 29", "al_r5_r7_LSL_29"},
713    {{al, r10, r5, LSL, 10}, false, al, "al r10 r5 LSL 10", "al_r10_r5_LSL_10"},
714    {{al, r13, r8, LSL, 15}, false, al, "al r13 r8 LSL 15", "al_r13_r8_LSL_15"},
715    {{al, r5, r2, ROR, 14}, false, al, "al r5 r2 ROR 14", "al_r5_r2_ROR_14"},
716    {{al, r11, r3, ROR, 6}, false, al, "al r11 r3 ROR 6", "al_r11_r3_ROR_6"},
717    {{al, r12, r7, ROR, 9}, false, al, "al r12 r7 ROR 9", "al_r12_r7_ROR_9"},
718    {{al, r1, r3, ROR, 23}, false, al, "al r1 r3 ROR 23", "al_r1_r3_ROR_23"},
719    {{al, r10, r13, LSL, 30},
720     false,
721     al,
722     "al r10 r13 LSL 30",
723     "al_r10_r13_LSL_30"},
724    {{al, r3, r2, LSL, 15}, false, al, "al r3 r2 LSL 15", "al_r3_r2_LSL_15"},
725    {{al, r6, r0, LSL, 31}, false, al, "al r6 r0 LSL 31", "al_r6_r0_LSL_31"},
726    {{al, r13, r12, LSL, 12},
727     false,
728     al,
729     "al r13 r12 LSL 12",
730     "al_r13_r12_LSL_12"},
731    {{al, r7, r8, ROR, 9}, false, al, "al r7 r8 ROR 9", "al_r7_r8_ROR_9"},
732    {{al, r7, r13, LSL, 16}, false, al, "al r7 r13 LSL 16", "al_r7_r13_LSL_16"},
733    {{al, r3, r6, LSL, 17}, false, al, "al r3 r6 LSL 17", "al_r3_r6_LSL_17"},
734    {{al, r13, r4, ROR, 14}, false, al, "al r13 r4 ROR 14", "al_r13_r4_ROR_14"},
735    {{al, r2, r5, ROR, 7}, false, al, "al r2 r5 ROR 7", "al_r2_r5_ROR_7"},
736    {{al, r7, r10, ROR, 18}, false, al, "al r7 r10 ROR 18", "al_r7_r10_ROR_18"},
737    {{al, r7, r12, LSL, 26}, false, al, "al r7 r12 LSL 26", "al_r7_r12_LSL_26"},
738    {{al, r13, r13, ROR, 25},
739     false,
740     al,
741     "al r13 r13 ROR 25",
742     "al_r13_r13_ROR_25"},
743    {{al, r11, r2, ROR, 5}, false, al, "al r11 r2 ROR 5", "al_r11_r2_ROR_5"},
744    {{al, r0, r14, ROR, 8}, false, al, "al r0 r14 ROR 8", "al_r0_r14_ROR_8"},
745    {{al, r6, r2, ROR, 27}, false, al, "al r6 r2 ROR 27", "al_r6_r2_ROR_27"},
746    {{al, r4, r14, LSL, 31}, false, al, "al r4 r14 LSL 31", "al_r4_r14_LSL_31"},
747    {{al, r1, r0, LSL, 7}, false, al, "al r1 r0 LSL 7", "al_r1_r0_LSL_7"},
748    {{al, r0, r8, LSL, 10}, false, al, "al r0 r8 LSL 10", "al_r0_r8_LSL_10"},
749    {{al, r9, r0, LSL, 13}, false, al, "al r9 r0 LSL 13", "al_r9_r0_LSL_13"},
750    {{al, r11, r11, ROR, 11},
751     false,
752     al,
753     "al r11 r11 ROR 11",
754     "al_r11_r11_ROR_11"},
755    {{al, r11, r4, ROR, 7}, false, al, "al r11 r4 ROR 7", "al_r11_r4_ROR_7"},
756    {{al, r10, r4, ROR, 19}, false, al, "al r10 r4 ROR 19", "al_r10_r4_ROR_19"},
757    {{al, r1, r13, ROR, 4}, false, al, "al r1 r13 ROR 4", "al_r1_r13_ROR_4"},
758    {{al, r9, r14, ROR, 5}, false, al, "al r9 r14 ROR 5", "al_r9_r14_ROR_5"},
759    {{al, r14, r11, LSL, 22},
760     false,
761     al,
762     "al r14 r11 LSL 22",
763     "al_r14_r11_LSL_22"},
764    {{al, r2, r4, LSL, 17}, false, al, "al r2 r4 LSL 17", "al_r2_r4_LSL_17"},
765    {{al, r2, r6, LSL, 15}, false, al, "al r2 r6 LSL 15", "al_r2_r6_LSL_15"},
766    {{al, r10, r5, ROR, 28}, false, al, "al r10 r5 ROR 28", "al_r10_r5_ROR_28"},
767    {{al, r6, r4, ROR, 13}, false, al, "al r6 r4 ROR 13", "al_r6_r4_ROR_13"},
768    {{al, r3, r4, ROR, 10}, false, al, "al r3 r4 ROR 10", "al_r3_r4_ROR_10"},
769    {{al, r3, r7, ROR, 15}, false, al, "al r3 r7 ROR 15", "al_r3_r7_ROR_15"},
770    {{al, r7, r14, LSL, 28}, false, al, "al r7 r14 LSL 28", "al_r7_r14_LSL_28"},
771    {{al, r10, r6, ROR, 23}, false, al, "al r10 r6 ROR 23", "al_r10_r6_ROR_23"},
772    {{al, r4, r5, ROR, 4}, false, al, "al r4 r5 ROR 4", "al_r4_r5_ROR_4"},
773    {{al, r9, r3, ROR, 8}, false, al, "al r9 r3 ROR 8", "al_r9_r3_ROR_8"},
774    {{al, r2, r1, LSL, 14}, false, al, "al r2 r1 LSL 14", "al_r2_r1_LSL_14"},
775    {{al, r10, r7, LSL, 4}, false, al, "al r10 r7 LSL 4", "al_r10_r7_LSL_4"},
776    {{al, r0, r0, LSL, 18}, false, al, "al r0 r0 LSL 18", "al_r0_r0_LSL_18"},
777    {{al, r12, r3, ROR, 18}, false, al, "al r12 r3 ROR 18", "al_r12_r3_ROR_18"},
778    {{al, r5, r5, LSL, 4}, false, al, "al r5 r5 LSL 4", "al_r5_r5_LSL_4"},
779    {{al, r11, r4, ROR, 12}, false, al, "al r11 r4 ROR 12", "al_r11_r4_ROR_12"},
780    {{al, r5, r14, ROR, 23}, false, al, "al r5 r14 ROR 23", "al_r5_r14_ROR_23"},
781    {{al, r7, r6, LSL, 31}, false, al, "al r7 r6 LSL 31", "al_r7_r6_LSL_31"},
782    {{al, r14, r2, ROR, 7}, false, al, "al r14 r2 ROR 7", "al_r14_r2_ROR_7"},
783    {{al, r10, r0, ROR, 23}, false, al, "al r10 r0 ROR 23", "al_r10_r0_ROR_23"},
784    {{al, r6, r0, LSL, 25}, false, al, "al r6 r0 LSL 25", "al_r6_r0_LSL_25"},
785    {{al, r7, r4, ROR, 16}, false, al, "al r7 r4 ROR 16", "al_r7_r4_ROR_16"},
786    {{al, r9, r0, LSL, 19}, false, al, "al r9 r0 LSL 19", "al_r9_r0_LSL_19"},
787    {{al, r7, r2, LSL, 23}, false, al, "al r7 r2 LSL 23", "al_r7_r2_LSL_23"},
788    {{al, r7, r10, LSL, 17}, false, al, "al r7 r10 LSL 17", "al_r7_r10_LSL_17"},
789    {{al, r8, r10, ROR, 19}, false, al, "al r8 r10 ROR 19", "al_r8_r10_ROR_19"},
790    {{al, r6, r9, LSL, 19}, false, al, "al r6 r9 LSL 19", "al_r6_r9_LSL_19"},
791    {{al, r12, r6, LSL, 14}, false, al, "al r12 r6 LSL 14", "al_r12_r6_LSL_14"},
792    {{al, r4, r12, ROR, 24}, false, al, "al r4 r12 ROR 24", "al_r4_r12_ROR_24"},
793    {{al, r3, r6, LSL, 6}, false, al, "al r3 r6 LSL 6", "al_r3_r6_LSL_6"},
794    {{al, r11, r6, ROR, 4}, false, al, "al r11 r6 ROR 4", "al_r11_r6_ROR_4"},
795    {{al, r14, r3, LSL, 10}, false, al, "al r14 r3 LSL 10", "al_r14_r3_LSL_10"},
796    {{al, r1, r1, LSL, 12}, false, al, "al r1 r1 LSL 12", "al_r1_r1_LSL_12"},
797    {{al, r7, r8, LSL, 19}, false, al, "al r7 r8 LSL 19", "al_r7_r8_LSL_19"},
798    {{al, r5, r5, LSL, 22}, false, al, "al r5 r5 LSL 22", "al_r5_r5_LSL_22"},
799    {{al, r14, r8, ROR, 29}, false, al, "al r14 r8 ROR 29", "al_r14_r8_ROR_29"},
800    {{al, r3, r14, LSL, 24}, false, al, "al r3 r14 LSL 24", "al_r3_r14_LSL_24"},
801    {{al, r11, r14, ROR, 5}, false, al, "al r11 r14 ROR 5", "al_r11_r14_ROR_5"},
802    {{al, r12, r4, ROR, 15}, false, al, "al r12 r4 ROR 15", "al_r12_r4_ROR_15"},
803    {{al, r3, r5, LSL, 12}, false, al, "al r3 r5 LSL 12", "al_r3_r5_LSL_12"},
804    {{al, r0, r12, ROR, 26}, false, al, "al r0 r12 ROR 26", "al_r0_r12_ROR_26"},
805    {{al, r5, r7, ROR, 12}, false, al, "al r5 r7 ROR 12", "al_r5_r7_ROR_12"},
806    {{al, r8, r9, LSL, 17}, false, al, "al r8 r9 LSL 17", "al_r8_r9_LSL_17"},
807    {{al, r1, r2, ROR, 13}, false, al, "al r1 r2 ROR 13", "al_r1_r2_ROR_13"},
808    {{al, r0, r13, ROR, 8}, false, al, "al r0 r13 ROR 8", "al_r0_r13_ROR_8"},
809    {{al, r4, r0, LSL, 9}, false, al, "al r4 r0 LSL 9", "al_r4_r0_LSL_9"},
810    {{al, r6, r2, LSL, 21}, false, al, "al r6 r2 LSL 21", "al_r6_r2_LSL_21"},
811    {{al, r5, r3, ROR, 29}, false, al, "al r5 r3 ROR 29", "al_r5_r3_ROR_29"},
812    {{al, r14, r6, LSL, 7}, false, al, "al r14 r6 LSL 7", "al_r14_r6_LSL_7"},
813    {{al, r9, r4, ROR, 11}, false, al, "al r9 r4 ROR 11", "al_r9_r4_ROR_11"},
814    {{al, r4, r0, LSL, 14}, false, al, "al r4 r0 LSL 14", "al_r4_r0_LSL_14"},
815    {{al, r10, r14, ROR, 3}, false, al, "al r10 r14 ROR 3", "al_r10_r14_ROR_3"},
816    {{al, r0, r11, LSL, 31}, false, al, "al r0 r11 LSL 31", "al_r0_r11_LSL_31"},
817    {{al, r5, r2, LSL, 17}, false, al, "al r5 r2 LSL 17", "al_r5_r2_LSL_17"},
818    {{al, r2, r6, ROR, 26}, false, al, "al r2 r6 ROR 26", "al_r2_r6_ROR_26"},
819    {{al, r9, r9, LSL, 8}, false, al, "al r9 r9 LSL 8", "al_r9_r9_LSL_8"},
820    {{al, r12, r12, LSL, 19},
821     false,
822     al,
823     "al r12 r12 LSL 19",
824     "al_r12_r12_LSL_19"},
825    {{al, r2, r11, LSL, 10}, false, al, "al r2 r11 LSL 10", "al_r2_r11_LSL_10"},
826    {{al, r4, r7, ROR, 6}, false, al, "al r4 r7 ROR 6", "al_r4_r7_ROR_6"},
827    {{al, r2, r3, ROR, 14}, false, al, "al r2 r3 ROR 14", "al_r2_r3_ROR_14"},
828    {{al, r4, r12, ROR, 16}, false, al, "al r4 r12 ROR 16", "al_r4_r12_ROR_16"},
829    {{al, r12, r12, LSL, 2}, false, al, "al r12 r12 LSL 2", "al_r12_r12_LSL_2"},
830    {{al, r10, r5, ROR, 23}, false, al, "al r10 r5 ROR 23", "al_r10_r5_ROR_23"},
831    {{al, r8, r14, ROR, 24}, false, al, "al r8 r14 ROR 24", "al_r8_r14_ROR_24"},
832    {{al, r7, r1, LSL, 15}, false, al, "al r7 r1 LSL 15", "al_r7_r1_LSL_15"},
833    {{al, r13, r10, LSL, 8}, false, al, "al r13 r10 LSL 8", "al_r13_r10_LSL_8"},
834    {{al, r1, r9, ROR, 5}, false, al, "al r1 r9 ROR 5", "al_r1_r9_ROR_5"},
835    {{al, r1, r2, ROR, 17}, false, al, "al r1 r2 ROR 17", "al_r1_r2_ROR_17"},
836    {{al, r12, r3, ROR, 30}, false, al, "al r12 r3 ROR 30", "al_r12_r3_ROR_30"},
837    {{al, r0, r5, LSL, 18}, false, al, "al r0 r5 LSL 18", "al_r0_r5_LSL_18"},
838    {{al, r5, r7, LSL, 2}, false, al, "al r5 r7 LSL 2", "al_r5_r7_LSL_2"},
839    {{al, r13, r4, LSL, 30}, false, al, "al r13 r4 LSL 30", "al_r13_r4_LSL_30"},
840    {{al, r2, r14, ROR, 31}, false, al, "al r2 r14 ROR 31", "al_r2_r14_ROR_31"},
841    {{al, r12, r8, LSL, 30}, false, al, "al r12 r8 LSL 30", "al_r12_r8_LSL_30"},
842    {{al, r3, r5, ROR, 4}, false, al, "al r3 r5 ROR 4", "al_r3_r5_ROR_4"},
843    {{al, r11, r11, ROR, 3}, false, al, "al r11 r11 ROR 3", "al_r11_r11_ROR_3"},
844    {{al, r4, r2, ROR, 17}, false, al, "al r4 r2 ROR 17", "al_r4_r2_ROR_17"},
845    {{al, r6, r9, LSL, 15}, false, al, "al r6 r9 LSL 15", "al_r6_r9_LSL_15"},
846    {{al, r5, r6, ROR, 25}, false, al, "al r5 r6 ROR 25", "al_r5_r6_ROR_25"},
847    {{al, r6, r3, LSL, 19}, false, al, "al r6 r3 LSL 19", "al_r6_r3_LSL_19"},
848    {{al, r3, r7, LSL, 6}, false, al, "al r3 r7 LSL 6", "al_r3_r7_LSL_6"},
849    {{al, r12, r1, LSL, 13}, false, al, "al r12 r1 LSL 13", "al_r12_r1_LSL_13"},
850    {{al, r2, r1, ROR, 9}, false, al, "al r2 r1 ROR 9", "al_r2_r1_ROR_9"},
851    {{al, r12, r4, LSL, 28}, false, al, "al r12 r4 LSL 28", "al_r12_r4_LSL_28"},
852    {{al, r14, r13, ROR, 12},
853     false,
854     al,
855     "al r14 r13 ROR 12",
856     "al_r14_r13_ROR_12"},
857    {{al, r11, r12, LSL, 16},
858     false,
859     al,
860     "al r11 r12 LSL 16",
861     "al_r11_r12_LSL_16"},
862    {{al, r8, r7, LSL, 29}, false, al, "al r8 r7 LSL 29", "al_r8_r7_LSL_29"},
863    {{al, r0, r10, ROR, 25}, false, al, "al r0 r10 ROR 25", "al_r0_r10_ROR_25"},
864    {{al, r9, r6, LSL, 3}, false, al, "al r9 r6 LSL 3", "al_r9_r6_LSL_3"},
865    {{al, r9, r12, LSL, 18}, false, al, "al r9 r12 LSL 18", "al_r9_r12_LSL_18"},
866    {{al, r1, r14, LSL, 9}, false, al, "al r1 r14 LSL 9", "al_r1_r14_LSL_9"},
867    {{al, r3, r2, ROR, 7}, false, al, "al r3 r2 ROR 7", "al_r3_r2_ROR_7"},
868    {{al, r14, r9, ROR, 16}, false, al, "al r14 r9 ROR 16", "al_r14_r9_ROR_16"},
869    {{al, r6, r12, LSL, 2}, false, al, "al r6 r12 LSL 2", "al_r6_r12_LSL_2"},
870    {{al, r12, r7, LSL, 14}, false, al, "al r12 r7 LSL 14", "al_r12_r7_LSL_14"},
871    {{al, r12, r10, LSL, 8}, false, al, "al r12 r10 LSL 8", "al_r12_r10_LSL_8"},
872    {{al, r4, r13, ROR, 27}, false, al, "al r4 r13 ROR 27", "al_r4_r13_ROR_27"},
873    {{al, r5, r5, ROR, 20}, false, al, "al r5 r5 ROR 20", "al_r5_r5_ROR_20"},
874    {{al, r1, r5, ROR, 14}, false, al, "al r1 r5 ROR 14", "al_r1_r5_ROR_14"},
875    {{al, r6, r2, ROR, 28}, false, al, "al r6 r2 ROR 28", "al_r6_r2_ROR_28"},
876    {{al, r1, r8, LSL, 9}, false, al, "al r1 r8 LSL 9", "al_r1_r8_LSL_9"},
877    {{al, r2, r10, LSL, 16}, false, al, "al r2 r10 LSL 16", "al_r2_r10_LSL_16"},
878    {{al, r5, r1, LSL, 30}, false, al, "al r5 r1 LSL 30", "al_r5_r1_LSL_30"},
879    {{al, r5, r3, ROR, 19}, false, al, "al r5 r3 ROR 19", "al_r5_r3_ROR_19"},
880    {{al, r1, r2, LSL, 7}, false, al, "al r1 r2 LSL 7", "al_r1_r2_LSL_7"},
881    {{al, r7, r10, ROR, 11}, false, al, "al r7 r10 ROR 11", "al_r7_r10_ROR_11"},
882    {{al, r0, r10, LSL, 10}, false, al, "al r0 r10 LSL 10", "al_r0_r10_LSL_10"},
883    {{al, r7, r5, ROR, 1}, false, al, "al r7 r5 ROR 1", "al_r7_r5_ROR_1"},
884    {{al, r0, r1, LSL, 3}, false, al, "al r0 r1 LSL 3", "al_r0_r1_LSL_3"},
885    {{al, r11, r0, LSL, 24}, false, al, "al r11 r0 LSL 24", "al_r11_r0_LSL_24"},
886    {{al, r3, r7, LSL, 29}, false, al, "al r3 r7 LSL 29", "al_r3_r7_LSL_29"},
887    {{al, r5, r3, ROR, 28}, false, al, "al r5 r3 ROR 28", "al_r5_r3_ROR_28"},
888    {{al, r3, r4, LSL, 26}, false, al, "al r3 r4 LSL 26", "al_r3_r4_LSL_26"},
889    {{al, r8, r10, LSL, 30}, false, al, "al r8 r10 LSL 30", "al_r8_r10_LSL_30"},
890    {{al, r5, r5, ROR, 7}, false, al, "al r5 r5 ROR 7", "al_r5_r5_ROR_7"},
891    {{al, r6, r7, ROR, 13}, false, al, "al r6 r7 ROR 13", "al_r6_r7_ROR_13"},
892    {{al, r7, r1, ROR, 20}, false, al, "al r7 r1 ROR 20", "al_r7_r1_ROR_20"},
893    {{al, r11, r11, LSL, 1}, false, al, "al r11 r11 LSL 1", "al_r11_r11_LSL_1"},
894    {{al, r10, r13, LSL, 1}, false, al, "al r10 r13 LSL 1", "al_r10_r13_LSL_1"},
895    {{al, r6, r11, LSL, 9}, false, al, "al r6 r11 LSL 9", "al_r6_r11_LSL_9"},
896    {{al, r2, r3, LSL, 18}, false, al, "al r2 r3 LSL 18", "al_r2_r3_LSL_18"},
897    {{al, r3, r4, ROR, 16}, false, al, "al r3 r4 ROR 16", "al_r3_r4_ROR_16"},
898    {{al, r4, r10, LSL, 1}, false, al, "al r4 r10 LSL 1", "al_r4_r10_LSL_1"},
899    {{al, r1, r5, LSL, 31}, false, al, "al r1 r5 LSL 31", "al_r1_r5_LSL_31"},
900    {{al, r6, r6, LSL, 29}, false, al, "al r6 r6 LSL 29", "al_r6_r6_LSL_29"},
901    {{al, r10, r13, LSL, 5}, false, al, "al r10 r13 LSL 5", "al_r10_r13_LSL_5"},
902    {{al, r14, r6, LSL, 24}, false, al, "al r14 r6 LSL 24", "al_r14_r6_LSL_24"},
903    {{al, r4, r12, LSL, 31}, false, al, "al r4 r12 LSL 31", "al_r4_r12_LSL_31"},
904    {{al, r12, r7, ROR, 6}, false, al, "al r12 r7 ROR 6", "al_r12_r7_ROR_6"},
905    {{al, r14, r10, LSL, 26},
906     false,
907     al,
908     "al r14 r10 LSL 26",
909     "al_r14_r10_LSL_26"},
910    {{al, r9, r9, ROR, 24}, false, al, "al r9 r9 ROR 24", "al_r9_r9_ROR_24"},
911    {{al, r8, r13, LSL, 5}, false, al, "al r8 r13 LSL 5", "al_r8_r13_LSL_5"},
912    {{al, r4, r11, LSL, 17}, false, al, "al r4 r11 LSL 17", "al_r4_r11_LSL_17"},
913    {{al, r2, r14, LSL, 9}, false, al, "al r2 r14 LSL 9", "al_r2_r14_LSL_9"},
914    {{al, r1, r0, ROR, 29}, false, al, "al r1 r0 ROR 29", "al_r1_r0_ROR_29"},
915    {{al, r10, r2, ROR, 9}, false, al, "al r10 r2 ROR 9", "al_r10_r2_ROR_9"},
916    {{al, r3, r7, ROR, 29}, false, al, "al r3 r7 ROR 29", "al_r3_r7_ROR_29"},
917    {{al, r1, r12, ROR, 1}, false, al, "al r1 r12 ROR 1", "al_r1_r12_ROR_1"},
918    {{al, r7, r2, ROR, 8}, false, al, "al r7 r2 ROR 8", "al_r7_r2_ROR_8"},
919    {{al, r7, r1, LSL, 24}, false, al, "al r7 r1 LSL 24", "al_r7_r1_LSL_24"},
920    {{al, r4, r1, LSL, 17}, false, al, "al r4 r1 LSL 17", "al_r4_r1_LSL_17"},
921    {{al, r12, r11, ROR, 22},
922     false,
923     al,
924     "al r12 r11 ROR 22",
925     "al_r12_r11_ROR_22"},
926    {{al, r0, r4, ROR, 20}, false, al, "al r0 r4 ROR 20", "al_r0_r4_ROR_20"},
927    {{al, r5, r12, LSL, 11}, false, al, "al r5 r12 LSL 11", "al_r5_r12_LSL_11"},
928    {{al, r11, r2, ROR, 31}, false, al, "al r11 r2 ROR 31", "al_r11_r2_ROR_31"},
929    {{al, r14, r11, LSL, 4}, false, al, "al r14 r11 LSL 4", "al_r14_r11_LSL_4"},
930    {{al, r6, r8, LSL, 12}, false, al, "al r6 r8 LSL 12", "al_r6_r8_LSL_12"},
931    {{al, r14, r0, LSL, 30}, false, al, "al r14 r0 LSL 30", "al_r14_r0_LSL_30"},
932    {{al, r6, r11, LSL, 29}, false, al, "al r6 r11 LSL 29", "al_r6_r11_LSL_29"},
933    {{al, r6, r12, LSL, 21}, false, al, "al r6 r12 LSL 21", "al_r6_r12_LSL_21"},
934    {{al, r9, r6, LSL, 29}, false, al, "al r9 r6 LSL 29", "al_r9_r6_LSL_29"},
935    {{al, r10, r13, ROR, 29},
936     false,
937     al,
938     "al r10 r13 ROR 29",
939     "al_r10_r13_ROR_29"},
940    {{al, r5, r7, ROR, 16}, false, al, "al r5 r7 ROR 16", "al_r5_r7_ROR_16"},
941    {{al, r0, r14, LSL, 27}, false, al, "al r0 r14 LSL 27", "al_r0_r14_LSL_27"},
942    {{al, r14, r4, ROR, 18}, false, al, "al r14 r4 ROR 18", "al_r14_r4_ROR_18"},
943    {{al, r14, r2, LSL, 28}, false, al, "al r14 r2 LSL 28", "al_r14_r2_LSL_28"},
944    {{al, r13, r3, LSL, 29}, false, al, "al r13 r3 LSL 29", "al_r13_r3_LSL_29"},
945    {{al, r8, r7, LSL, 19}, false, al, "al r8 r7 LSL 19", "al_r8_r7_LSL_19"},
946    {{al, r14, r1, LSL, 1}, false, al, "al r14 r1 LSL 1", "al_r14_r1_LSL_1"},
947    {{al, r1, r11, ROR, 2}, false, al, "al r1 r11 ROR 2", "al_r1_r11_ROR_2"},
948    {{al, r7, r4, ROR, 14}, false, al, "al r7 r4 ROR 14", "al_r7_r4_ROR_14"},
949    {{al, r6, r3, ROR, 22}, false, al, "al r6 r3 ROR 22", "al_r6_r3_ROR_22"},
950    {{al, r5, r4, LSL, 1}, false, al, "al r5 r4 LSL 1", "al_r5_r4_LSL_1"},
951    {{al, r11, r11, LSL, 6}, false, al, "al r11 r11 LSL 6", "al_r11_r11_LSL_6"},
952    {{al, r13, r5, LSL, 21}, false, al, "al r13 r5 LSL 21", "al_r13_r5_LSL_21"},
953    {{al, r7, r5, ROR, 10}, false, al, "al r7 r5 ROR 10", "al_r7_r5_ROR_10"},
954    {{al, r13, r10, LSL, 17},
955     false,
956     al,
957     "al r13 r10 LSL 17",
958     "al_r13_r10_LSL_17"},
959    {{al, r7, r1, LSL, 5}, false, al, "al r7 r1 LSL 5", "al_r7_r1_LSL_5"},
960    {{al, r0, r11, LSL, 25}, false, al, "al r0 r11 LSL 25", "al_r0_r11_LSL_25"},
961    {{al, r3, r2, LSL, 9}, false, al, "al r3 r2 LSL 9", "al_r3_r2_LSL_9"},
962    {{al, r8, r11, ROR, 12}, false, al, "al r8 r11 ROR 12", "al_r8_r11_ROR_12"},
963    {{al, r12, r9, LSL, 21}, false, al, "al r12 r9 LSL 21", "al_r12_r9_LSL_21"},
964    {{al, r14, r3, ROR, 13}, false, al, "al r14 r3 ROR 13", "al_r14_r3_ROR_13"},
965    {{al, r13, r8, ROR, 26}, false, al, "al r13 r8 ROR 26", "al_r13_r8_ROR_26"},
966    {{al, r4, r11, ROR, 11}, false, al, "al r4 r11 ROR 11", "al_r4_r11_ROR_11"},
967    {{al, r10, r3, ROR, 16}, false, al, "al r10 r3 ROR 16", "al_r10_r3_ROR_16"},
968    {{al, r14, r0, ROR, 12}, false, al, "al r14 r0 ROR 12", "al_r14_r0_ROR_12"},
969    {{al, r11, r4, LSL, 18}, false, al, "al r11 r4 LSL 18", "al_r11_r4_LSL_18"},
970    {{al, r13, r13, ROR, 3}, false, al, "al r13 r13 ROR 3", "al_r13_r13_ROR_3"},
971    {{al, r10, r14, ROR, 10},
972     false,
973     al,
974     "al r10 r14 ROR 10",
975     "al_r10_r14_ROR_10"},
976    {{al, r12, r10, LSL, 12},
977     false,
978     al,
979     "al r12 r10 LSL 12",
980     "al_r12_r10_LSL_12"},
981    {{al, r0, r0, ROR, 29}, false, al, "al r0 r0 ROR 29", "al_r0_r0_ROR_29"},
982    {{al, r13, r3, LSL, 4}, false, al, "al r13 r3 LSL 4", "al_r13_r3_LSL_4"},
983    {{al, r1, r10, LSL, 15}, false, al, "al r1 r10 LSL 15", "al_r1_r10_LSL_15"},
984    {{al, r3, r10, LSL, 18}, false, al, "al r3 r10 LSL 18", "al_r3_r10_LSL_18"},
985    {{al, r11, r14, ROR, 13},
986     false,
987     al,
988     "al r11 r14 ROR 13",
989     "al_r11_r14_ROR_13"},
990    {{al, r5, r8, ROR, 9}, false, al, "al r5 r8 ROR 9", "al_r5_r8_ROR_9"},
991    {{al, r1, r7, LSL, 3}, false, al, "al r1 r7 LSL 3", "al_r1_r7_LSL_3"},
992    {{al, r8, r9, LSL, 16}, false, al, "al r8 r9 LSL 16", "al_r8_r9_LSL_16"},
993    {{al, r6, r6, ROR, 29}, false, al, "al r6 r6 ROR 29", "al_r6_r6_ROR_29"},
994    {{al, r4, r10, ROR, 6}, false, al, "al r4 r10 ROR 6", "al_r4_r10_ROR_6"},
995    {{al, r13, r7, LSL, 8}, false, al, "al r13 r7 LSL 8", "al_r13_r7_LSL_8"},
996    {{al, r0, r0, LSL, 26}, false, al, "al r0 r0 LSL 26", "al_r0_r0_LSL_26"},
997    {{al, r6, r3, ROR, 14}, false, al, "al r6 r3 ROR 14", "al_r6_r3_ROR_14"},
998    {{al, r13, r12, ROR, 16},
999     false,
1000     al,
1001     "al r13 r12 ROR 16",
1002     "al_r13_r12_ROR_16"},
1003    {{al, r0, r14, ROR, 16}, false, al, "al r0 r14 ROR 16", "al_r0_r14_ROR_16"},
1004    {{al, r2, r13, ROR, 3}, false, al, "al r2 r13 ROR 3", "al_r2_r13_ROR_3"},
1005    {{al, r3, r5, LSL, 31}, false, al, "al r3 r5 LSL 31", "al_r3_r5_LSL_31"},
1006    {{al, r12, r10, LSL, 14},
1007     false,
1008     al,
1009     "al r12 r10 LSL 14",
1010     "al_r12_r10_LSL_14"},
1011    {{al, r5, r10, LSL, 24}, false, al, "al r5 r10 LSL 24", "al_r5_r10_LSL_24"},
1012    {{al, r5, r5, LSL, 21}, false, al, "al r5 r5 LSL 21", "al_r5_r5_LSL_21"},
1013    {{al, r1, r1, LSL, 23}, false, al, "al r1 r1 LSL 23", "al_r1_r1_LSL_23"},
1014    {{al, r6, r0, LSL, 12}, false, al, "al r6 r0 LSL 12", "al_r6_r0_LSL_12"},
1015    {{al, r6, r2, ROR, 22}, false, al, "al r6 r2 ROR 22", "al_r6_r2_ROR_22"},
1016    {{al, r10, r0, LSL, 15}, false, al, "al r10 r0 LSL 15", "al_r10_r0_LSL_15"},
1017    {{al, r14, r9, ROR, 28}, false, al, "al r14 r9 ROR 28", "al_r14_r9_ROR_28"},
1018    {{al, r0, r2, ROR, 6}, false, al, "al r0 r2 ROR 6", "al_r0_r2_ROR_6"},
1019    {{al, r9, r4, LSL, 11}, false, al, "al r9 r4 LSL 11", "al_r9_r4_LSL_11"},
1020    {{al, r5, r11, LSL, 5}, false, al, "al r5 r11 LSL 5", "al_r5_r11_LSL_5"},
1021    {{al, r7, r4, ROR, 6}, false, al, "al r7 r4 ROR 6", "al_r7_r4_ROR_6"},
1022    {{al, r2, r10, ROR, 1}, false, al, "al r2 r10 ROR 1", "al_r2_r10_ROR_1"},
1023    {{al, r2, r3, LSL, 27}, false, al, "al r2 r3 LSL 27", "al_r2_r3_LSL_27"},
1024    {{al, r5, r13, LSL, 10}, false, al, "al r5 r13 LSL 10", "al_r5_r13_LSL_10"},
1025    {{al, r10, r3, LSL, 14}, false, al, "al r10 r3 LSL 14", "al_r10_r3_LSL_14"},
1026    {{al, r12, r7, ROR, 29}, false, al, "al r12 r7 ROR 29", "al_r12_r7_ROR_29"},
1027    {{al, r0, r0, ROR, 1}, false, al, "al r0 r0 ROR 1", "al_r0_r0_ROR_1"},
1028    {{al, r11, r13, LSL, 21},
1029     false,
1030     al,
1031     "al r11 r13 LSL 21",
1032     "al_r11_r13_LSL_21"},
1033    {{al, r7, r2, LSL, 12}, false, al, "al r7 r2 LSL 12", "al_r7_r2_LSL_12"},
1034    {{al, r1, r10, LSL, 2}, false, al, "al r1 r10 LSL 2", "al_r1_r10_LSL_2"},
1035    {{al, r11, r5, LSL, 19}, false, al, "al r11 r5 LSL 19", "al_r11_r5_LSL_19"},
1036    {{al, r13, r2, ROR, 2}, false, al, "al r13 r2 ROR 2", "al_r13_r2_ROR_2"},
1037    {{al, r7, r9, LSL, 8}, false, al, "al r7 r9 LSL 8", "al_r7_r9_LSL_8"},
1038    {{al, r5, r9, ROR, 8}, false, al, "al r5 r9 ROR 8", "al_r5_r9_ROR_8"},
1039    {{al, r10, r14, LSL, 31},
1040     false,
1041     al,
1042     "al r10 r14 LSL 31",
1043     "al_r10_r14_LSL_31"},
1044    {{al, r0, r2, ROR, 23}, false, al, "al r0 r2 ROR 23", "al_r0_r2_ROR_23"},
1045    {{al, r14, r13, LSL, 28},
1046     false,
1047     al,
1048     "al r14 r13 LSL 28",
1049     "al_r14_r13_LSL_28"},
1050    {{al, r1, r2, LSL, 25}, false, al, "al r1 r2 LSL 25", "al_r1_r2_LSL_25"},
1051    {{al, r3, r5, LSL, 29}, false, al, "al r3 r5 LSL 29", "al_r3_r5_LSL_29"},
1052    {{al, r3, r4, ROR, 13}, false, al, "al r3 r4 ROR 13", "al_r3_r4_ROR_13"},
1053    {{al, r4, r6, ROR, 4}, false, al, "al r4 r6 ROR 4", "al_r4_r6_ROR_4"},
1054    {{al, r6, r8, ROR, 3}, false, al, "al r6 r8 ROR 3", "al_r6_r8_ROR_3"},
1055    {{al, r11, r2, ROR, 2}, false, al, "al r11 r2 ROR 2", "al_r11_r2_ROR_2"},
1056    {{al, r14, r5, LSL, 29}, false, al, "al r14 r5 LSL 29", "al_r14_r5_LSL_29"},
1057    {{al, r0, r7, ROR, 23}, false, al, "al r0 r7 ROR 23", "al_r0_r7_ROR_23"},
1058    {{al, r2, r10, LSL, 15}, false, al, "al r2 r10 LSL 15", "al_r2_r10_LSL_15"},
1059    {{al, r6, r7, LSL, 5}, false, al, "al r6 r7 LSL 5", "al_r6_r7_LSL_5"},
1060    {{al, r11, r13, ROR, 3}, false, al, "al r11 r13 ROR 3", "al_r11_r13_ROR_3"},
1061    {{al, r5, r12, ROR, 13}, false, al, "al r5 r12 ROR 13", "al_r5_r12_ROR_13"},
1062    {{al, r9, r12, LSL, 26}, false, al, "al r9 r12 LSL 26", "al_r9_r12_LSL_26"},
1063    {{al, r7, r3, ROR, 12}, false, al, "al r7 r3 ROR 12", "al_r7_r3_ROR_12"},
1064    {{al, r9, r13, LSL, 7}, false, al, "al r9 r13 LSL 7", "al_r9_r13_LSL_7"},
1065    {{al, r6, r14, LSL, 25}, false, al, "al r6 r14 LSL 25", "al_r6_r14_LSL_25"},
1066    {{al, r1, r12, ROR, 17}, false, al, "al r1 r12 ROR 17", "al_r1_r12_ROR_17"},
1067    {{al, r1, r10, LSL, 24}, false, al, "al r1 r10 LSL 24", "al_r1_r10_LSL_24"},
1068    {{al, r0, r11, LSL, 17}, false, al, "al r0 r11 LSL 17", "al_r0_r11_LSL_17"},
1069    {{al, r8, r3, ROR, 11}, false, al, "al r8 r3 ROR 11", "al_r8_r3_ROR_11"},
1070    {{al, r11, r12, ROR, 22},
1071     false,
1072     al,
1073     "al r11 r12 ROR 22",
1074     "al_r11_r12_ROR_22"},
1075    {{al, r0, r9, ROR, 28}, false, al, "al r0 r9 ROR 28", "al_r0_r9_ROR_28"},
1076    {{al, r9, r3, ROR, 7}, false, al, "al r9 r3 ROR 7", "al_r9_r3_ROR_7"},
1077    {{al, r9, r2, ROR, 16}, false, al, "al r9 r2 ROR 16", "al_r9_r2_ROR_16"},
1078    {{al, r0, r12, LSL, 28}, false, al, "al r0 r12 LSL 28", "al_r0_r12_LSL_28"},
1079    {{al, r1, r4, ROR, 22}, false, al, "al r1 r4 ROR 22", "al_r1_r4_ROR_22"},
1080    {{al, r12, r7, LSL, 16}, false, al, "al r12 r7 LSL 16", "al_r12_r7_LSL_16"},
1081    {{al, r7, r9, ROR, 3}, false, al, "al r7 r9 ROR 3", "al_r7_r9_ROR_3"},
1082    {{al, r8, r2, LSL, 13}, false, al, "al r8 r2 LSL 13", "al_r8_r2_LSL_13"},
1083    {{al, r10, r11, LSL, 10},
1084     false,
1085     al,
1086     "al r10 r11 LSL 10",
1087     "al_r10_r11_LSL_10"},
1088    {{al, r10, r12, ROR, 6}, false, al, "al r10 r12 ROR 6", "al_r10_r12_ROR_6"},
1089    {{al, r3, r12, LSL, 27}, false, al, "al r3 r12 LSL 27", "al_r3_r12_LSL_27"},
1090    {{al, r10, r10, ROR, 27},
1091     false,
1092     al,
1093     "al r10 r10 ROR 27",
1094     "al_r10_r10_ROR_27"},
1095    {{al, r8, r8, LSL, 8}, false, al, "al r8 r8 LSL 8", "al_r8_r8_LSL_8"},
1096    {{al, r3, r0, ROR, 28}, false, al, "al r3 r0 ROR 28", "al_r3_r0_ROR_28"},
1097    {{al, r10, r3, ROR, 15}, false, al, "al r10 r3 ROR 15", "al_r10_r3_ROR_15"},
1098    {{al, r1, r14, LSL, 27}, false, al, "al r1 r14 LSL 27", "al_r1_r14_LSL_27"},
1099    {{al, r10, r1, LSL, 31}, false, al, "al r10 r1 LSL 31", "al_r10_r1_LSL_31"},
1100    {{al, r12, r11, LSL, 24},
1101     false,
1102     al,
1103     "al r12 r11 LSL 24",
1104     "al_r12_r11_LSL_24"},
1105    {{al, r5, r11, ROR, 11}, false, al, "al r5 r11 ROR 11", "al_r5_r11_ROR_11"},
1106    {{al, r13, r8, ROR, 12}, false, al, "al r13 r8 ROR 12", "al_r13_r8_ROR_12"},
1107    {{al, r1, r14, LSL, 28}, false, al, "al r1 r14 LSL 28", "al_r1_r14_LSL_28"},
1108    {{al, r6, r2, LSL, 6}, false, al, "al r6 r2 LSL 6", "al_r6_r2_LSL_6"},
1109    {{al, r14, r13, ROR, 22},
1110     false,
1111     al,
1112     "al r14 r13 ROR 22",
1113     "al_r14_r13_ROR_22"},
1114    {{al, r12, r12, ROR, 18},
1115     false,
1116     al,
1117     "al r12 r12 ROR 18",
1118     "al_r12_r12_ROR_18"},
1119    {{al, r8, r7, ROR, 2}, false, al, "al r8 r7 ROR 2", "al_r8_r7_ROR_2"},
1120    {{al, r6, r4, LSL, 2}, false, al, "al r6 r4 LSL 2", "al_r6_r4_LSL_2"},
1121    {{al, r2, r6, ROR, 17}, false, al, "al r2 r6 ROR 17", "al_r2_r6_ROR_17"},
1122    {{al, r11, r14, ROR, 16},
1123     false,
1124     al,
1125     "al r11 r14 ROR 16",
1126     "al_r11_r14_ROR_16"},
1127    {{al, r1, r5, ROR, 22}, false, al, "al r1 r5 ROR 22", "al_r1_r5_ROR_22"},
1128    {{al, r2, r2, ROR, 11}, false, al, "al r2 r2 ROR 11", "al_r2_r2_ROR_11"},
1129    {{al, r12, r9, ROR, 1}, false, al, "al r12 r9 ROR 1", "al_r12_r9_ROR_1"},
1130    {{al, r13, r5, LSL, 13}, false, al, "al r13 r5 LSL 13", "al_r13_r5_LSL_13"},
1131    {{al, r0, r0, LSL, 3}, false, al, "al r0 r0 LSL 3", "al_r0_r0_LSL_3"},
1132    {{al, r0, r11, ROR, 9}, false, al, "al r0 r11 ROR 9", "al_r0_r11_ROR_9"},
1133    {{al, r6, r1, LSL, 18}, false, al, "al r6 r1 LSL 18", "al_r6_r1_LSL_18"},
1134    {{al, r6, r3, LSL, 21}, false, al, "al r6 r3 LSL 21", "al_r6_r3_LSL_21"},
1135    {{al, r7, r6, LSL, 30}, false, al, "al r7 r6 LSL 30", "al_r7_r6_LSL_30"},
1136    {{al, r11, r3, ROR, 28}, false, al, "al r11 r3 ROR 28", "al_r11_r3_ROR_28"},
1137    {{al, r0, r4, ROR, 14}, false, al, "al r0 r4 ROR 14", "al_r0_r4_ROR_14"},
1138    {{al, r1, r14, ROR, 22}, false, al, "al r1 r14 ROR 22", "al_r1_r14_ROR_22"},
1139    {{al, r3, r13, LSL, 30}, false, al, "al r3 r13 LSL 30", "al_r3_r13_LSL_30"},
1140    {{al, r14, r6, LSL, 14}, false, al, "al r14 r6 LSL 14", "al_r14_r6_LSL_14"},
1141    {{al, r11, r10, ROR, 1}, false, al, "al r11 r10 ROR 1", "al_r11_r10_ROR_1"},
1142    {{al, r11, r13, ROR, 15},
1143     false,
1144     al,
1145     "al r11 r13 ROR 15",
1146     "al_r11_r13_ROR_15"},
1147    {{al, r5, r11, LSL, 28}, false, al, "al r5 r11 LSL 28", "al_r5_r11_LSL_28"},
1148    {{al, r9, r12, ROR, 28}, false, al, "al r9 r12 ROR 28", "al_r9_r12_ROR_28"},
1149    {{al, r14, r9, ROR, 31}, false, al, "al r14 r9 ROR 31", "al_r14_r9_ROR_31"},
1150    {{al, r7, r4, LSL, 24}, false, al, "al r7 r4 LSL 24", "al_r7_r4_LSL_24"},
1151    {{al, r11, r14, ROR, 6}, false, al, "al r11 r14 ROR 6", "al_r11_r14_ROR_6"},
1152    {{al, r2, r12, LSL, 5}, false, al, "al r2 r12 LSL 5", "al_r2_r12_LSL_5"},
1153    {{al, r1, r14, ROR, 6}, false, al, "al r1 r14 ROR 6", "al_r1_r14_ROR_6"},
1154    {{al, r6, r4, LSL, 20}, false, al, "al r6 r4 LSL 20", "al_r6_r4_LSL_20"},
1155    {{al, r10, r7, LSL, 26}, false, al, "al r10 r7 LSL 26", "al_r10_r7_LSL_26"},
1156    {{al, r5, r10, LSL, 23}, false, al, "al r5 r10 LSL 23", "al_r5_r10_LSL_23"},
1157    {{al, r9, r5, ROR, 27}, false, al, "al r9 r5 ROR 27", "al_r9_r5_ROR_27"},
1158    {{al, r6, r9, ROR, 19}, false, al, "al r6 r9 ROR 19", "al_r6_r9_ROR_19"},
1159    {{al, r2, r0, LSL, 29}, false, al, "al r2 r0 LSL 29", "al_r2_r0_LSL_29"},
1160    {{al, r3, r11, ROR, 9}, false, al, "al r3 r11 ROR 9", "al_r3_r11_ROR_9"},
1161    {{al, r0, r14, LSL, 7}, false, al, "al r0 r14 LSL 7", "al_r0_r14_LSL_7"},
1162    {{al, r5, r11, LSL, 10}, false, al, "al r5 r11 LSL 10", "al_r5_r11_LSL_10"},
1163    {{al, r12, r9, ROR, 25}, false, al, "al r12 r9 ROR 25", "al_r12_r9_ROR_25"},
1164    {{al, r11, r1, ROR, 2}, false, al, "al r11 r1 ROR 2", "al_r11_r1_ROR_2"},
1165    {{al, r8, r7, ROR, 14}, false, al, "al r8 r7 ROR 14", "al_r8_r7_ROR_14"},
1166    {{al, r7, r0, ROR, 1}, false, al, "al r7 r0 ROR 1", "al_r7_r0_ROR_1"},
1167    {{al, r3, r2, ROR, 18}, false, al, "al r3 r2 ROR 18", "al_r3_r2_ROR_18"},
1168    {{al, r14, r12, LSL, 4}, false, al, "al r14 r12 LSL 4", "al_r14_r12_LSL_4"},
1169    {{al, r12, r5, ROR, 8}, false, al, "al r12 r5 ROR 8", "al_r12_r5_ROR_8"},
1170    {{al, r6, r9, ROR, 27}, false, al, "al r6 r9 ROR 27", "al_r6_r9_ROR_27"},
1171    {{al, r10, r13, LSL, 8}, false, al, "al r10 r13 LSL 8", "al_r10_r13_LSL_8"},
1172    {{al, r10, r11, ROR, 9}, false, al, "al r10 r11 ROR 9", "al_r10_r11_ROR_9"},
1173    {{al, r2, r6, ROR, 5}, false, al, "al r2 r6 ROR 5", "al_r2_r6_ROR_5"},
1174    {{al, r9, r3, LSL, 17}, false, al, "al r9 r3 LSL 17", "al_r9_r3_LSL_17"},
1175    {{al, r12, r7, ROR, 19}, false, al, "al r12 r7 ROR 19", "al_r12_r7_ROR_19"},
1176    {{al, r9, r5, LSL, 11}, false, al, "al r9 r5 LSL 11", "al_r9_r5_LSL_11"},
1177    {{al, r14, r9, LSL, 20}, false, al, "al r14 r9 LSL 20", "al_r14_r9_LSL_20"},
1178    {{al, r6, r2, ROR, 4}, false, al, "al r6 r2 ROR 4", "al_r6_r2_ROR_4"},
1179    {{al, r8, r4, LSL, 3}, false, al, "al r8 r4 LSL 3", "al_r8_r4_LSL_3"},
1180    {{al, r5, r0, ROR, 22}, false, al, "al r5 r0 ROR 22", "al_r5_r0_ROR_22"},
1181    {{al, r10, r6, LSL, 13}, false, al, "al r10 r6 LSL 13", "al_r10_r6_LSL_13"},
1182    {{al, r10, r4, ROR, 7}, false, al, "al r10 r4 ROR 7", "al_r10_r4_ROR_7"},
1183    {{al, r6, r2, ROR, 17}, false, al, "al r6 r2 ROR 17", "al_r6_r2_ROR_17"},
1184    {{al, r9, r8, LSL, 26}, false, al, "al r9 r8 LSL 26", "al_r9_r8_LSL_26"},
1185    {{al, r6, r11, ROR, 15}, false, al, "al r6 r11 ROR 15", "al_r6_r11_ROR_15"},
1186    {{al, r12, r14, LSL, 8}, false, al, "al r12 r14 LSL 8", "al_r12_r14_LSL_8"},
1187    {{al, r4, r3, ROR, 3}, false, al, "al r4 r3 ROR 3", "al_r4_r3_ROR_3"},
1188    {{al, r9, r5, LSL, 12}, false, al, "al r9 r5 LSL 12", "al_r9_r5_LSL_12"},
1189    {{al, r6, r3, ROR, 13}, false, al, "al r6 r3 ROR 13", "al_r6_r3_ROR_13"},
1190    {{al, r10, r13, LSL, 21},
1191     false,
1192     al,
1193     "al r10 r13 LSL 21",
1194     "al_r10_r13_LSL_21"},
1195    {{al, r4, r0, ROR, 3}, false, al, "al r4 r0 ROR 3", "al_r4_r0_ROR_3"},
1196    {{al, r9, r11, LSL, 8}, false, al, "al r9 r11 LSL 8", "al_r9_r11_LSL_8"},
1197    {{al, r0, r14, ROR, 14}, false, al, "al r0 r14 ROR 14", "al_r0_r14_ROR_14"},
1198    {{al, r9, r9, ROR, 14}, false, al, "al r9 r9 ROR 14", "al_r9_r9_ROR_14"},
1199    {{al, r8, r14, ROR, 18}, false, al, "al r8 r14 ROR 18", "al_r8_r14_ROR_18"},
1200    {{al, r13, r2, ROR, 13}, false, al, "al r13 r2 ROR 13", "al_r13_r2_ROR_13"},
1201    {{al, r13, r13, LSL, 12},
1202     false,
1203     al,
1204     "al r13 r13 LSL 12",
1205     "al_r13_r13_LSL_12"},
1206    {{al, r14, r9, LSL, 25}, false, al, "al r14 r9 LSL 25", "al_r14_r9_LSL_25"},
1207    {{al, r1, r0, ROR, 9}, false, al, "al r1 r0 ROR 9", "al_r1_r0_ROR_9"},
1208    {{al, r12, r6, ROR, 20}, false, al, "al r12 r6 ROR 20", "al_r12_r6_ROR_20"},
1209    {{al, r9, r2, ROR, 23}, false, al, "al r9 r2 ROR 23", "al_r9_r2_ROR_23"},
1210    {{al, r2, r10, LSL, 1}, false, al, "al r2 r10 LSL 1", "al_r2_r10_LSL_1"},
1211    {{al, r8, r7, ROR, 15}, false, al, "al r8 r7 ROR 15", "al_r8_r7_ROR_15"},
1212    {{al, r5, r3, ROR, 14}, false, al, "al r5 r3 ROR 14", "al_r5_r3_ROR_14"},
1213    {{al, r4, r8, ROR, 1}, false, al, "al r4 r8 ROR 1", "al_r4_r8_ROR_1"},
1214    {{al, r1, r2, ROR, 5}, false, al, "al r1 r2 ROR 5", "al_r1_r2_ROR_5"},
1215    {{al, r6, r2, ROR, 16}, false, al, "al r6 r2 ROR 16", "al_r6_r2_ROR_16"},
1216    {{al, r5, r4, LSL, 15}, false, al, "al r5 r4 LSL 15", "al_r5_r4_LSL_15"},
1217    {{al, r4, r2, LSL, 14}, false, al, "al r4 r2 LSL 14", "al_r4_r2_LSL_14"},
1218    {{al, r2, r1, LSL, 7}, false, al, "al r2 r1 LSL 7", "al_r2_r1_LSL_7"},
1219    {{al, r0, r8, ROR, 30}, false, al, "al r0 r8 ROR 30", "al_r0_r8_ROR_30"},
1220    {{al, r9, r5, LSL, 22}, false, al, "al r9 r5 LSL 22", "al_r9_r5_LSL_22"},
1221    {{al, r9, r10, LSL, 25}, false, al, "al r9 r10 LSL 25", "al_r9_r10_LSL_25"},
1222    {{al, r4, r6, ROR, 15}, false, al, "al r4 r6 ROR 15", "al_r4_r6_ROR_15"},
1223    {{al, r2, r9, LSL, 29}, false, al, "al r2 r9 LSL 29", "al_r2_r9_LSL_29"},
1224    {{al, r6, r6, ROR, 27}, false, al, "al r6 r6 ROR 27", "al_r6_r6_ROR_27"},
1225    {{al, r11, r1, ROR, 26}, false, al, "al r11 r1 ROR 26", "al_r11_r1_ROR_26"},
1226    {{al, r5, r10, ROR, 23}, false, al, "al r5 r10 ROR 23", "al_r5_r10_ROR_23"},
1227    {{al, r13, r5, LSL, 29}, false, al, "al r13 r5 LSL 29", "al_r13_r5_LSL_29"},
1228    {{al, r14, r1, ROR, 27}, false, al, "al r14 r1 ROR 27", "al_r14_r1_ROR_27"},
1229    {{al, r0, r10, LSL, 27}, false, al, "al r0 r10 LSL 27", "al_r0_r10_LSL_27"},
1230    {{al, r2, r4, ROR, 14}, false, al, "al r2 r4 ROR 14", "al_r2_r4_ROR_14"},
1231    {{al, r1, r10, LSL, 31}, false, al, "al r1 r10 LSL 31", "al_r1_r10_LSL_31"},
1232    {{al, r2, r3, ROR, 5}, false, al, "al r2 r3 ROR 5", "al_r2_r3_ROR_5"},
1233    {{al, r0, r6, ROR, 14}, false, al, "al r0 r6 ROR 14", "al_r0_r6_ROR_14"},
1234    {{al, r11, r9, ROR, 25}, false, al, "al r11 r9 ROR 25", "al_r11_r9_ROR_25"},
1235    {{al, r2, r11, ROR, 29}, false, al, "al r2 r11 ROR 29", "al_r2_r11_ROR_29"},
1236    {{al, r7, r6, ROR, 2}, false, al, "al r7 r6 ROR 2", "al_r7_r6_ROR_2"},
1237    {{al, r8, r3, ROR, 3}, false, al, "al r8 r3 ROR 3", "al_r8_r3_ROR_3"},
1238    {{al, r8, r13, LSL, 18}, false, al, "al r8 r13 LSL 18", "al_r8_r13_LSL_18"},
1239    {{al, r3, r13, ROR, 27}, false, al, "al r3 r13 ROR 27", "al_r3_r13_ROR_27"},
1240    {{al, r5, r5, LSL, 18}, false, al, "al r5 r5 LSL 18", "al_r5_r5_LSL_18"},
1241    {{al, r14, r8, ROR, 17}, false, al, "al r14 r8 ROR 17", "al_r14_r8_ROR_17"},
1242    {{al, r10, r6, LSL, 18}, false, al, "al r10 r6 LSL 18", "al_r10_r6_LSL_18"},
1243    {{al, r7, r1, LSL, 2}, false, al, "al r7 r1 LSL 2", "al_r7_r1_LSL_2"},
1244    {{al, r9, r7, ROR, 13}, false, al, "al r9 r7 ROR 13", "al_r9_r7_ROR_13"},
1245    {{al, r5, r9, LSL, 29}, false, al, "al r5 r9 LSL 29", "al_r5_r9_LSL_29"},
1246    {{al, r14, r12, LSL, 22},
1247     false,
1248     al,
1249     "al r14 r12 LSL 22",
1250     "al_r14_r12_LSL_22"},
1251    {{al, r0, r8, LSL, 12}, false, al, "al r0 r8 LSL 12", "al_r0_r8_LSL_12"},
1252    {{al, r12, r12, ROR, 28},
1253     false,
1254     al,
1255     "al r12 r12 ROR 28",
1256     "al_r12_r12_ROR_28"},
1257    {{al, r12, r3, LSL, 2}, false, al, "al r12 r3 LSL 2", "al_r12_r3_LSL_2"},
1258    {{al, r6, r11, ROR, 3}, false, al, "al r6 r11 ROR 3", "al_r6_r11_ROR_3"},
1259    {{al, r1, r5, ROR, 21}, false, al, "al r1 r5 ROR 21", "al_r1_r5_ROR_21"},
1260    {{al, r0, r14, ROR, 29}, false, al, "al r0 r14 ROR 29", "al_r0_r14_ROR_29"},
1261    {{al, r11, r8, ROR, 16}, false, al, "al r11 r8 ROR 16", "al_r11_r8_ROR_16"},
1262    {{al, r9, r10, ROR, 31}, false, al, "al r9 r10 ROR 31", "al_r9_r10_ROR_31"},
1263    {{al, r10, r1, LSL, 25}, false, al, "al r10 r1 LSL 25", "al_r10_r1_LSL_25"},
1264    {{al, r9, r4, ROR, 1}, false, al, "al r9 r4 ROR 1", "al_r9_r4_ROR_1"},
1265    {{al, r5, r12, LSL, 4}, false, al, "al r5 r12 LSL 4", "al_r5_r12_LSL_4"},
1266    {{al, r10, r7, ROR, 25}, false, al, "al r10 r7 ROR 25", "al_r10_r7_ROR_25"},
1267    {{al, r9, r3, LSL, 6}, false, al, "al r9 r3 LSL 6", "al_r9_r3_LSL_6"},
1268    {{al, r7, r4, ROR, 26}, false, al, "al r7 r4 ROR 26", "al_r7_r4_ROR_26"},
1269    {{al, r13, r0, LSL, 31}, false, al, "al r13 r0 LSL 31", "al_r13_r0_LSL_31"},
1270    {{al, r9, r2, LSL, 22}, false, al, "al r9 r2 LSL 22", "al_r9_r2_LSL_22"},
1271    {{al, r6, r8, ROR, 21}, false, al, "al r6 r8 ROR 21", "al_r6_r8_ROR_21"},
1272    {{al, r12, r7, LSL, 11}, false, al, "al r12 r7 LSL 11", "al_r12_r7_LSL_11"},
1273    {{al, r10, r0, LSL, 17}, false, al, "al r10 r0 LSL 17", "al_r10_r0_LSL_17"},
1274    {{al, r2, r9, ROR, 23}, false, al, "al r2 r9 ROR 23", "al_r2_r9_ROR_23"},
1275    {{al, r2, r4, LSL, 6}, false, al, "al r2 r4 LSL 6", "al_r2_r4_LSL_6"},
1276    {{al, r7, r8, LSL, 24}, false, al, "al r7 r8 LSL 24", "al_r7_r8_LSL_24"},
1277    {{al, r8, r5, LSL, 25}, false, al, "al r8 r5 LSL 25", "al_r8_r5_LSL_25"},
1278    {{al, r10, r11, ROR, 23},
1279     false,
1280     al,
1281     "al r10 r11 ROR 23",
1282     "al_r10_r11_ROR_23"},
1283    {{al, r0, r14, LSL, 16}, false, al, "al r0 r14 LSL 16", "al_r0_r14_LSL_16"},
1284    {{al, r2, r3, LSL, 16}, false, al, "al r2 r3 LSL 16", "al_r2_r3_LSL_16"},
1285    {{al, r0, r11, ROR, 13}, false, al, "al r0 r11 ROR 13", "al_r0_r11_ROR_13"},
1286    {{al, r6, r4, ROR, 15}, false, al, "al r6 r4 ROR 15", "al_r6_r4_ROR_15"},
1287    {{al, r8, r9, LSL, 19}, false, al, "al r8 r9 LSL 19", "al_r8_r9_LSL_19"},
1288    {{al, r1, r13, LSL, 23}, false, al, "al r1 r13 LSL 23", "al_r1_r13_LSL_23"},
1289    {{al, r4, r11, LSL, 6}, false, al, "al r4 r11 LSL 6", "al_r4_r11_LSL_6"},
1290    {{al, r9, r0, ROR, 15}, false, al, "al r9 r0 ROR 15", "al_r9_r0_ROR_15"},
1291    {{al, r7, r0, ROR, 7}, false, al, "al r7 r0 ROR 7", "al_r7_r0_ROR_7"},
1292    {{al, r5, r7, LSL, 26}, false, al, "al r5 r7 LSL 26", "al_r5_r7_LSL_26"},
1293    {{al, r9, r4, LSL, 6}, false, al, "al r9 r4 LSL 6", "al_r9_r4_LSL_6"},
1294    {{al, r4, r9, LSL, 9}, false, al, "al r4 r9 LSL 9", "al_r4_r9_LSL_9"},
1295    {{al, r3, r14, ROR, 24}, false, al, "al r3 r14 ROR 24", "al_r3_r14_ROR_24"},
1296    {{al, r6, r6, ROR, 4}, false, al, "al r6 r6 ROR 4", "al_r6_r6_ROR_4"},
1297    {{al, r2, r1, ROR, 19}, false, al, "al r2 r1 ROR 19", "al_r2_r1_ROR_19"},
1298    {{al, r13, r1, LSL, 2}, false, al, "al r13 r1 LSL 2", "al_r13_r1_LSL_2"},
1299    {{al, r5, r9, ROR, 2}, false, al, "al r5 r9 ROR 2", "al_r5_r9_ROR_2"},
1300    {{al, r13, r14, ROR, 25},
1301     false,
1302     al,
1303     "al r13 r14 ROR 25",
1304     "al_r13_r14_ROR_25"},
1305    {{al, r2, r11, ROR, 18}, false, al, "al r2 r11 ROR 18", "al_r2_r11_ROR_18"},
1306    {{al, r10, r12, ROR, 5}, false, al, "al r10 r12 ROR 5", "al_r10_r12_ROR_5"},
1307    {{al, r2, r4, ROR, 2}, false, al, "al r2 r4 ROR 2", "al_r2_r4_ROR_2"},
1308    {{al, r12, r14, LSL, 15},
1309     false,
1310     al,
1311     "al r12 r14 LSL 15",
1312     "al_r12_r14_LSL_15"},
1313    {{al, r13, r2, LSL, 27}, false, al, "al r13 r2 LSL 27", "al_r13_r2_LSL_27"},
1314    {{al, r8, r13, ROR, 27}, false, al, "al r8 r13 ROR 27", "al_r8_r13_ROR_27"},
1315    {{al, r12, r11, LSL, 22},
1316     false,
1317     al,
1318     "al r12 r11 LSL 22",
1319     "al_r12_r11_LSL_22"},
1320    {{al, r13, r5, ROR, 12}, false, al, "al r13 r5 ROR 12", "al_r13_r5_ROR_12"},
1321    {{al, r13, r7, ROR, 17}, false, al, "al r13 r7 ROR 17", "al_r13_r7_ROR_17"},
1322    {{al, r4, r10, LSL, 26}, false, al, "al r4 r10 LSL 26", "al_r4_r10_LSL_26"},
1323    {{al, r6, r9, LSL, 24}, false, al, "al r6 r9 LSL 24", "al_r6_r9_LSL_24"},
1324    {{al, r14, r5, LSL, 13}, false, al, "al r14 r5 LSL 13", "al_r14_r5_LSL_13"},
1325    {{al, r12, r0, ROR, 8}, false, al, "al r12 r0 ROR 8", "al_r12_r0_ROR_8"},
1326    {{al, r1, r2, LSL, 30}, false, al, "al r1 r2 LSL 30", "al_r1_r2_LSL_30"},
1327    {{al, r10, r7, LSL, 15}, false, al, "al r10 r7 LSL 15", "al_r10_r7_LSL_15"},
1328    {{al, r0, r7, LSL, 31}, false, al, "al r0 r7 LSL 31", "al_r0_r7_LSL_31"},
1329    {{al, r14, r11, LSL, 9}, false, al, "al r14 r11 LSL 9", "al_r14_r11_LSL_9"},
1330    {{al, r1, r6, ROR, 2}, false, al, "al r1 r6 ROR 2", "al_r1_r6_ROR_2"},
1331    {{al, r5, r2, ROR, 26}, false, al, "al r5 r2 ROR 26", "al_r5_r2_ROR_26"},
1332    {{al, r3, r5, LSL, 2}, false, al, "al r3 r5 LSL 2", "al_r3_r5_LSL_2"},
1333    {{al, r8, r3, LSL, 3}, false, al, "al r8 r3 LSL 3", "al_r8_r3_LSL_3"},
1334    {{al, r6, r11, ROR, 6}, false, al, "al r6 r11 ROR 6", "al_r6_r11_ROR_6"},
1335    {{al, r4, r4, ROR, 13}, false, al, "al r4 r4 ROR 13", "al_r4_r4_ROR_13"},
1336    {{al, r4, r2, LSL, 20}, false, al, "al r4 r2 LSL 20", "al_r4_r2_LSL_20"},
1337    {{al, r13, r8, ROR, 25}, false, al, "al r13 r8 ROR 25", "al_r13_r8_ROR_25"},
1338    {{al, r3, r13, LSL, 18}, false, al, "al r3 r13 LSL 18", "al_r3_r13_LSL_18"},
1339    {{al, r1, r0, ROR, 23}, false, al, "al r1 r0 ROR 23", "al_r1_r0_ROR_23"},
1340    {{al, r14, r14, LSL, 25},
1341     false,
1342     al,
1343     "al r14 r14 LSL 25",
1344     "al_r14_r14_LSL_25"},
1345    {{al, r0, r8, LSL, 11}, false, al, "al r0 r8 LSL 11", "al_r0_r8_LSL_11"},
1346    {{al, r10, r1, LSL, 13}, false, al, "al r10 r1 LSL 13", "al_r10_r1_LSL_13"},
1347    {{al, r13, r10, LSL, 9}, false, al, "al r13 r10 LSL 9", "al_r13_r10_LSL_9"},
1348    {{al, r6, r13, LSL, 16}, false, al, "al r6 r13 LSL 16", "al_r6_r13_LSL_16"},
1349    {{al, r13, r14, LSL, 5}, false, al, "al r13 r14 LSL 5", "al_r13_r14_LSL_5"},
1350    {{al, r2, r6, LSL, 14}, false, al, "al r2 r6 LSL 14", "al_r2_r6_LSL_14"},
1351    {{al, r13, r7, LSL, 13}, false, al, "al r13 r7 LSL 13", "al_r13_r7_LSL_13"},
1352    {{al, r7, r5, ROR, 26}, false, al, "al r7 r5 ROR 26", "al_r7_r5_ROR_26"},
1353    {{al, r12, r11, LSL, 12},
1354     false,
1355     al,
1356     "al r12 r11 LSL 12",
1357     "al_r12_r11_LSL_12"},
1358    {{al, r5, r13, ROR, 8}, false, al, "al r5 r13 ROR 8", "al_r5_r13_ROR_8"},
1359    {{al, r2, r8, ROR, 2}, false, al, "al r2 r8 ROR 2", "al_r2_r8_ROR_2"},
1360    {{al, r0, r9, ROR, 24}, false, al, "al r0 r9 ROR 24", "al_r0_r9_ROR_24"},
1361    {{al, r8, r6, LSL, 29}, false, al, "al r8 r6 LSL 29", "al_r8_r6_LSL_29"},
1362    {{al, r9, r10, LSL, 18}, false, al, "al r9 r10 LSL 18", "al_r9_r10_LSL_18"},
1363    {{al, r6, r0, LSL, 24}, false, al, "al r6 r0 LSL 24", "al_r6_r0_LSL_24"},
1364    {{al, r9, r12, LSL, 20}, false, al, "al r9 r12 LSL 20", "al_r9_r12_LSL_20"},
1365    {{al, r14, r11, LSL, 3}, false, al, "al r14 r11 LSL 3", "al_r14_r11_LSL_3"},
1366    {{al, r12, r11, LSL, 26},
1367     false,
1368     al,
1369     "al r12 r11 LSL 26",
1370     "al_r12_r11_LSL_26"},
1371    {{al, r10, r0, LSL, 4}, false, al, "al r10 r0 LSL 4", "al_r10_r0_LSL_4"},
1372    {{al, r10, r12, ROR, 7}, false, al, "al r10 r12 ROR 7", "al_r10_r12_ROR_7"},
1373    {{al, r12, r3, LSL, 1}, false, al, "al r12 r3 LSL 1", "al_r12_r3_LSL_1"},
1374    {{al, r12, r4, ROR, 12}, false, al, "al r12 r4 ROR 12", "al_r12_r4_ROR_12"},
1375    {{al, r8, r0, ROR, 12}, false, al, "al r8 r0 ROR 12", "al_r8_r0_ROR_12"},
1376    {{al, r3, r3, ROR, 6}, false, al, "al r3 r3 ROR 6", "al_r3_r3_ROR_6"},
1377    {{al, r11, r0, LSL, 19}, false, al, "al r11 r0 LSL 19", "al_r11_r0_LSL_19"},
1378    {{al, r8, r14, LSL, 24}, false, al, "al r8 r14 LSL 24", "al_r8_r14_LSL_24"},
1379    {{al, r0, r11, LSL, 1}, false, al, "al r0 r11 LSL 1", "al_r0_r11_LSL_1"},
1380    {{al, r13, r5, LSL, 6}, false, al, "al r13 r5 LSL 6", "al_r13_r5_LSL_6"},
1381    {{al, r14, r14, ROR, 31},
1382     false,
1383     al,
1384     "al r14 r14 ROR 31",
1385     "al_r14_r14_ROR_31"},
1386    {{al, r10, r14, ROR, 6}, false, al, "al r10 r14 ROR 6", "al_r10_r14_ROR_6"},
1387    {{al, r14, r4, LSL, 1}, false, al, "al r14 r4 LSL 1", "al_r14_r4_LSL_1"},
1388    {{al, r0, r3, ROR, 7}, false, al, "al r0 r3 ROR 7", "al_r0_r3_ROR_7"},
1389    {{al, r2, r10, LSL, 17}, false, al, "al r2 r10 LSL 17", "al_r2_r10_LSL_17"},
1390    {{al, r11, r6, ROR, 19}, false, al, "al r11 r6 ROR 19", "al_r11_r6_ROR_19"},
1391    {{al, r9, r13, ROR, 11}, false, al, "al r9 r13 ROR 11", "al_r9_r13_ROR_11"},
1392    {{al, r11, r3, LSL, 2}, false, al, "al r11 r3 LSL 2", "al_r11_r3_LSL_2"},
1393    {{al, r9, r1, ROR, 4}, false, al, "al r9 r1 ROR 4", "al_r9_r1_ROR_4"},
1394    {{al, r8, r11, LSL, 16}, false, al, "al r8 r11 LSL 16", "al_r8_r11_LSL_16"},
1395    {{al, r1, r12, LSL, 11}, false, al, "al r1 r12 LSL 11", "al_r1_r12_LSL_11"},
1396    {{al, r0, r8, ROR, 6}, false, al, "al r0 r8 ROR 6", "al_r0_r8_ROR_6"},
1397    {{al, r5, r3, LSL, 2}, false, al, "al r5 r3 LSL 2", "al_r5_r3_LSL_2"},
1398    {{al, r6, r3, LSL, 17}, false, al, "al r6 r3 LSL 17", "al_r6_r3_LSL_17"},
1399    {{al, r3, r12, ROR, 27}, false, al, "al r3 r12 ROR 27", "al_r3_r12_ROR_27"},
1400    {{al, r6, r8, ROR, 15}, false, al, "al r6 r8 ROR 15", "al_r6_r8_ROR_15"},
1401    {{al, r7, r11, LSL, 10}, false, al, "al r7 r11 LSL 10", "al_r7_r11_LSL_10"},
1402    {{al, r2, r12, LSL, 15}, false, al, "al r2 r12 LSL 15", "al_r2_r12_LSL_15"},
1403    {{al, r2, r2, ROR, 8}, false, al, "al r2 r2 ROR 8", "al_r2_r2_ROR_8"},
1404    {{al, r12, r0, ROR, 26}, false, al, "al r12 r0 ROR 26", "al_r12_r0_ROR_26"},
1405    {{al, r11, r13, ROR, 19},
1406     false,
1407     al,
1408     "al r11 r13 ROR 19",
1409     "al_r11_r13_ROR_19"},
1410    {{al, r0, r9, ROR, 2}, false, al, "al r0 r9 ROR 2", "al_r0_r9_ROR_2"},
1411    {{al, r9, r7, ROR, 25}, false, al, "al r9 r7 ROR 25", "al_r9_r7_ROR_25"},
1412    {{al, r9, r8, LSL, 28}, false, al, "al r9 r8 LSL 28", "al_r9_r8_LSL_28"},
1413    {{al, r11, r12, ROR, 17},
1414     false,
1415     al,
1416     "al r11 r12 ROR 17",
1417     "al_r11_r12_ROR_17"},
1418    {{al, r12, r2, ROR, 20}, false, al, "al r12 r2 ROR 20", "al_r12_r2_ROR_20"},
1419    {{al, r11, r9, ROR, 16}, false, al, "al r11 r9 ROR 16", "al_r11_r9_ROR_16"},
1420    {{al, r13, r11, LSL, 14},
1421     false,
1422     al,
1423     "al r13 r11 LSL 14",
1424     "al_r13_r11_LSL_14"},
1425    {{al, r2, r4, ROR, 12}, false, al, "al r2 r4 ROR 12", "al_r2_r4_ROR_12"},
1426    {{al, r3, r12, ROR, 17}, false, al, "al r3 r12 ROR 17", "al_r3_r12_ROR_17"},
1427    {{al, r14, r11, ROR, 27},
1428     false,
1429     al,
1430     "al r14 r11 ROR 27",
1431     "al_r14_r11_ROR_27"}};
1432
1433// These headers each contain an array of `TestResult` with the reference output
1434// values. The reference arrays are names `kReference{mnemonic}`.
1435#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-cmn.h"
1436#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-cmp.h"
1437#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-mov.h"
1438#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-movs.h"
1439#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-mvn.h"
1440#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-mvns.h"
1441#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-teq.h"
1442#include "aarch32/traces/assembler-cond-rd-operand-rn-shift-amount-1to31-t32-tst.h"
1443
1444
1445// The maximum number of errors to report in detail for each test.
1446const unsigned kErrorReportLimit = 8;
1447
1448typedef void (MacroAssembler::*Fn)(Condition cond,
1449                                   Register rd,
1450                                   const Operand& op);
1451
1452void TestHelper(Fn instruction,
1453                const char* mnemonic,
1454                const TestResult reference[]) {
1455  unsigned total_error_count = 0;
1456  MacroAssembler masm(BUF_SIZE);
1457
1458  masm.UseT32();
1459
1460  for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1461    // Values to pass to the macro-assembler.
1462    Condition cond = kTests[i].operands.cond;
1463    Register rd = kTests[i].operands.rd;
1464    Register rn = kTests[i].operands.rn;
1465    ShiftType shift = kTests[i].operands.shift;
1466    uint32_t amount = kTests[i].operands.amount;
1467    Operand op(rn, shift, amount);
1468
1469    int32_t start = masm.GetCursorOffset();
1470    {
1471      // We never generate more that 4 bytes, as IT instructions are only
1472      // allowed for narrow encodings.
1473      ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
1474      if (kTests[i].in_it_block) {
1475        masm.it(kTests[i].it_condition);
1476      }
1477      (masm.*instruction)(cond, rd, op);
1478    }
1479    int32_t end = masm.GetCursorOffset();
1480
1481    const byte* result_ptr =
1482        masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
1483    VIXL_ASSERT(start < end);
1484    uint32_t result_size = end - start;
1485
1486    if (Test::generate_test_trace()) {
1487      // Print the result bytes.
1488      printf("const byte kInstruction_%s_%s[] = {\n",
1489             mnemonic,
1490             kTests[i].identifier);
1491      for (uint32_t j = 0; j < result_size; j++) {
1492        if (j == 0) {
1493          printf("  0x%02" PRIx8, result_ptr[j]);
1494        } else {
1495          printf(", 0x%02" PRIx8, result_ptr[j]);
1496        }
1497      }
1498      // This comment is meant to be used by external tools to validate
1499      // the encoding. We can parse the comment to figure out what
1500      // instruction this corresponds to.
1501      if (kTests[i].in_it_block) {
1502        printf(" // It %s; %s %s\n};\n",
1503               kTests[i].it_condition.GetName(),
1504               mnemonic,
1505               kTests[i].operands_description);
1506      } else {
1507        printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
1508      }
1509    } else {
1510      // Check we've emitted the exact same encoding as present in the
1511      // trace file. Only print up to `kErrorReportLimit` errors.
1512      if (((result_size != reference[i].size) ||
1513           (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
1514            0)) &&
1515          (++total_error_count <= kErrorReportLimit)) {
1516        printf("Error when testing \"%s\" with operands \"%s\":\n",
1517               mnemonic,
1518               kTests[i].operands_description);
1519        printf("  Expected: ");
1520        for (uint32_t j = 0; j < reference[i].size; j++) {
1521          if (j == 0) {
1522            printf("0x%02" PRIx8, reference[i].encoding[j]);
1523          } else {
1524            printf(", 0x%02" PRIx8, reference[i].encoding[j]);
1525          }
1526        }
1527        printf("\n");
1528        printf("  Found:    ");
1529        for (uint32_t j = 0; j < result_size; j++) {
1530          if (j == 0) {
1531            printf("0x%02" PRIx8, result_ptr[j]);
1532          } else {
1533            printf(", 0x%02" PRIx8, result_ptr[j]);
1534          }
1535        }
1536        printf("\n");
1537      }
1538    }
1539  }
1540
1541  masm.FinalizeCode();
1542
1543  if (Test::generate_test_trace()) {
1544    // Finalize the trace file by writing the final `TestResult` array
1545    // which links all generated instruction encodings.
1546    printf("const TestResult kReference%s[] = {\n", mnemonic);
1547    for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1548      printf("  {\n");
1549      printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
1550             mnemonic,
1551             kTests[i].identifier);
1552      printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
1553      printf("  },\n");
1554    }
1555    printf("};\n");
1556  } else {
1557    if (total_error_count > kErrorReportLimit) {
1558      printf("%u other errors follow.\n",
1559             total_error_count - kErrorReportLimit);
1560    }
1561    // Crash if the test failed.
1562    VIXL_CHECK(total_error_count == 0);
1563  }
1564}
1565
1566// Instantiate tests for each instruction in the list.
1567#define TEST(mnemonic)                                                      \
1568  void Test_##mnemonic() {                                                  \
1569    TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
1570  }                                                                         \
1571  Test test_##mnemonic(                                                     \
1572      "AARCH32_ASSEMBLER_COND_RD_OPERAND_RN_SHIFT_AMOUNT_1TO31_"            \
1573      "T32_" #mnemonic,                                                     \
1574      &Test_##mnemonic);
1575FOREACH_INSTRUCTION(TEST)
1576#undef TEST
1577
1578}  // namespace
1579#endif
1580
1581}  // namespace aarch32
1582}  // namespace vixl
1583