xref: /aosp_15_r20/external/vixl/test/aarch32/test-assembler-cond-rd-operand-rn-shift-rs-a32.cc (revision f5c631da2f1efdd72b5fd1e20510e4042af13d77)
1 // Copyright 2016, VIXL authors
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 //   * Redistributions of source code must retain the above copyright notice,
8 //     this list of conditions and the following disclaimer.
9 //   * Redistributions in binary form must reproduce the above copyright notice,
10 //     this list of conditions and the following disclaimer in the documentation
11 //     and/or other materials provided with the distribution.
12 //   * Neither the name of ARM Limited nor the names of its contributors may be
13 //     used to endorse or promote products derived from this software without
14 //     specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 
27 
28 // -----------------------------------------------------------------------------
29 // This file is auto generated from the
30 // test/aarch32/config/template-assembler-aarch32.cc.in template file using
31 // tools/generate_tests.py.
32 //
33 // PLEASE DO NOT EDIT.
34 // -----------------------------------------------------------------------------
35 
36 
37 #include "test-runner.h"
38 
39 #include "test-utils.h"
40 #include "test-utils-aarch32.h"
41 
42 #include "aarch32/assembler-aarch32.h"
43 #include "aarch32/macro-assembler-aarch32.h"
44 
45 #define BUF_SIZE (4096)
46 
47 namespace vixl {
48 namespace aarch32 {
49 
50 // List of instruction mnemonics.
51 #define FOREACH_INSTRUCTION(M) \
52   M(cmn)                       \
53   M(cmp)                       \
54   M(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_A32
69 namespace {
70 
71 // Values to be passed to the assembler to produce the instruction under test.
72 struct Operands {
73   Condition cond;
74   Register rd;
75   Register rn;
76   ShiftType shift;
77   Register rs;
78 };
79 
80 // This structure contains all data needed to test one specific
81 // instruction.
82 struct 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 
97 struct TestResult {
98   size_t size;
99   const byte* encoding;
100 };
101 
102 // Each element of this array produce one instruction encoding.
103 const TestData kTests[] = {
104     {{gt, r13, r11, LSL, r12},
105      false,
106      al,
107      "gt r13 r11 LSL r12",
108      "gt_r13_r11_LSL_r12"},
109     {{gt, r12, r4, LSR, r6}, false, al, "gt r12 r4 LSR r6", "gt_r12_r4_LSR_r6"},
110     {{ge, r11, r13, ROR, r2},
111      false,
112      al,
113      "ge r11 r13 ROR r2",
114      "ge_r11_r13_ROR_r2"},
115     {{hi, r9, r8, ASR, r10}, false, al, "hi r9 r8 ASR r10", "hi_r9_r8_ASR_r10"},
116     {{al, r9, r10, LSL, r4}, false, al, "al r9 r10 LSL r4", "al_r9_r10_LSL_r4"},
117     {{gt, r4, r11, LSR, r4}, false, al, "gt r4 r11 LSR r4", "gt_r4_r11_LSR_r4"},
118     {{vc, r4, r6, ASR, r11}, false, al, "vc r4 r6 ASR r11", "vc_r4_r6_ASR_r11"},
119     {{mi, r9, r14, LSR, r9}, false, al, "mi r9 r14 LSR r9", "mi_r9_r14_LSR_r9"},
120     {{ne, r5, r10, LSR, r8}, false, al, "ne r5 r10 LSR r8", "ne_r5_r10_LSR_r8"},
121     {{eq, r3, r0, ROR, r11}, false, al, "eq r3 r0 ROR r11", "eq_r3_r0_ROR_r11"},
122     {{gt, r9, r11, LSL, r12},
123      false,
124      al,
125      "gt r9 r11 LSL r12",
126      "gt_r9_r11_LSL_r12"},
127     {{ge, r14, r6, ROR, r13},
128      false,
129      al,
130      "ge r14 r6 ROR r13",
131      "ge_r14_r6_ROR_r13"},
132     {{vc, r14, r14, LSR, r11},
133      false,
134      al,
135      "vc r14 r14 LSR r11",
136      "vc_r14_r14_LSR_r11"},
137     {{cc, r6, r3, LSL, r2}, false, al, "cc r6 r3 LSL r2", "cc_r6_r3_LSL_r2"},
138     {{ge, r4, r6, ROR, r7}, false, al, "ge r4 r6 ROR r7", "ge_r4_r6_ROR_r7"},
139     {{vs, r13, r3, LSR, r12},
140      false,
141      al,
142      "vs r13 r3 LSR r12",
143      "vs_r13_r3_LSR_r12"},
144     {{ge, r8, r11, LSR, r13},
145      false,
146      al,
147      "ge r8 r11 LSR r13",
148      "ge_r8_r11_LSR_r13"},
149     {{cc, r5, r0, LSR, r10}, false, al, "cc r5 r0 LSR r10", "cc_r5_r0_LSR_r10"},
150     {{lt, r7, r12, ASR, r7}, false, al, "lt r7 r12 ASR r7", "lt_r7_r12_ASR_r7"},
151     {{cc, r14, r1, LSR, r14},
152      false,
153      al,
154      "cc r14 r1 LSR r14",
155      "cc_r14_r1_LSR_r14"},
156     {{vs, r10, r1, LSR, r1}, false, al, "vs r10 r1 LSR r1", "vs_r10_r1_LSR_r1"},
157     {{lt, r5, r0, ASR, r2}, false, al, "lt r5 r0 ASR r2", "lt_r5_r0_ASR_r2"},
158     {{ne, r6, r3, LSL, r2}, false, al, "ne r6 r3 LSL r2", "ne_r6_r3_LSL_r2"},
159     {{vs, r5, r5, LSL, r13}, false, al, "vs r5 r5 LSL r13", "vs_r5_r5_LSL_r13"},
160     {{hi, r9, r11, ROR, r13},
161      false,
162      al,
163      "hi r9 r11 ROR r13",
164      "hi_r9_r11_ROR_r13"},
165     {{vs, r0, r2, LSL, r6}, false, al, "vs r0 r2 LSL r6", "vs_r0_r2_LSL_r6"},
166     {{le, r7, r1, ASR, r0}, false, al, "le r7 r1 ASR r0", "le_r7_r1_ASR_r0"},
167     {{ge, r2, r12, LSL, r10},
168      false,
169      al,
170      "ge r2 r12 LSL r10",
171      "ge_r2_r12_LSL_r10"},
172     {{vc, r14, r1, ASR, r9}, false, al, "vc r14 r1 ASR r9", "vc_r14_r1_ASR_r9"},
173     {{lt, r5, r1, ROR, r5}, false, al, "lt r5 r1 ROR r5", "lt_r5_r1_ROR_r5"},
174     {{eq, r5, r12, ROR, r0}, false, al, "eq r5 r12 ROR r0", "eq_r5_r12_ROR_r0"},
175     {{pl, r7, r7, ASR, r9}, false, al, "pl r7 r7 ASR r9", "pl_r7_r7_ASR_r9"},
176     {{eq, r3, r10, LSR, r9}, false, al, "eq r3 r10 LSR r9", "eq_r3_r10_LSR_r9"},
177     {{ge, r0, r5, LSR, r13}, false, al, "ge r0 r5 LSR r13", "ge_r0_r5_LSR_r13"},
178     {{cc, r13, r1, ASR, r6}, false, al, "cc r13 r1 ASR r6", "cc_r13_r1_ASR_r6"},
179     {{cs, r12, r3, ASR, r12},
180      false,
181      al,
182      "cs r12 r3 ASR r12",
183      "cs_r12_r3_ASR_r12"},
184     {{al, r12, r10, ROR, r0},
185      false,
186      al,
187      "al r12 r10 ROR r0",
188      "al_r12_r10_ROR_r0"},
189     {{al, r6, r13, LSL, r0}, false, al, "al r6 r13 LSL r0", "al_r6_r13_LSL_r0"},
190     {{cc, r14, r14, ROR, r0},
191      false,
192      al,
193      "cc r14 r14 ROR r0",
194      "cc_r14_r14_ROR_r0"},
195     {{ge, r2, r14, ROR, r9}, false, al, "ge r2 r14 ROR r9", "ge_r2_r14_ROR_r9"},
196     {{hi, r5, r10, LSL, r8}, false, al, "hi r5 r10 LSL r8", "hi_r5_r10_LSL_r8"},
197     {{ge, r13, r5, LSL, r7}, false, al, "ge r13 r5 LSL r7", "ge_r13_r5_LSL_r7"},
198     {{cc, r12, r10, ASR, r4},
199      false,
200      al,
201      "cc r12 r10 ASR r4",
202      "cc_r12_r10_ASR_r4"},
203     {{ls, r12, r3, LSL, r7}, false, al, "ls r12 r3 LSL r7", "ls_r12_r3_LSL_r7"},
204     {{cs, r2, r9, ASR, r8}, false, al, "cs r2 r9 ASR r8", "cs_r2_r9_ASR_r8"},
205     {{vs, r1, r5, LSR, r1}, false, al, "vs r1 r5 LSR r1", "vs_r1_r5_LSR_r1"},
206     {{cs, r7, r14, ASR, r9}, false, al, "cs r7 r14 ASR r9", "cs_r7_r14_ASR_r9"},
207     {{hi, r6, r10, ASR, r0}, false, al, "hi r6 r10 ASR r0", "hi_r6_r10_ASR_r0"},
208     {{pl, r13, r8, ASR, r13},
209      false,
210      al,
211      "pl r13 r8 ASR r13",
212      "pl_r13_r8_ASR_r13"},
213     {{vs, r1, r0, ROR, r2}, false, al, "vs r1 r0 ROR r2", "vs_r1_r0_ROR_r2"},
214     {{lt, r14, r0, LSL, r10},
215      false,
216      al,
217      "lt r14 r0 LSL r10",
218      "lt_r14_r0_LSL_r10"},
219     {{ls, r8, r12, ROR, r14},
220      false,
221      al,
222      "ls r8 r12 ROR r14",
223      "ls_r8_r12_ROR_r14"},
224     {{al, r11, r2, LSL, r0}, false, al, "al r11 r2 LSL r0", "al_r11_r2_LSL_r0"},
225     {{mi, r0, r8, LSR, r7}, false, al, "mi r0 r8 LSR r7", "mi_r0_r8_LSR_r7"},
226     {{cc, r3, r5, LSL, r9}, false, al, "cc r3 r5 LSL r9", "cc_r3_r5_LSL_r9"},
227     {{vc, r14, r4, ROR, r4}, false, al, "vc r14 r4 ROR r4", "vc_r14_r4_ROR_r4"},
228     {{cs, r1, r8, LSR, r7}, false, al, "cs r1 r8 LSR r7", "cs_r1_r8_LSR_r7"},
229     {{ls, r6, r5, ASR, r13}, false, al, "ls r6 r5 ASR r13", "ls_r6_r5_ASR_r13"},
230     {{pl, r0, r12, LSR, r5}, false, al, "pl r0 r12 LSR r5", "pl_r0_r12_LSR_r5"},
231     {{lt, r9, r7, ROR, r2}, false, al, "lt r9 r7 ROR r2", "lt_r9_r7_ROR_r2"},
232     {{ne, r6, r13, ASR, r13},
233      false,
234      al,
235      "ne r6 r13 ASR r13",
236      "ne_r6_r13_ASR_r13"},
237     {{cc, r9, r1, LSR, r5}, false, al, "cc r9 r1 LSR r5", "cc_r9_r1_LSR_r5"},
238     {{ls, r8, r0, ROR, r10}, false, al, "ls r8 r0 ROR r10", "ls_r8_r0_ROR_r10"},
239     {{mi, r9, r8, LSR, r2}, false, al, "mi r9 r8 LSR r2", "mi_r9_r8_LSR_r2"},
240     {{pl, r10, r14, ROR, r8},
241      false,
242      al,
243      "pl r10 r14 ROR r8",
244      "pl_r10_r14_ROR_r8"},
245     {{hi, r4, r6, ROR, r10}, false, al, "hi r4 r6 ROR r10", "hi_r4_r6_ROR_r10"},
246     {{vc, r0, r8, ROR, r10}, false, al, "vc r0 r8 ROR r10", "vc_r0_r8_ROR_r10"},
247     {{ne, r0, r4, LSR, r11}, false, al, "ne r0 r4 LSR r11", "ne_r0_r4_LSR_r11"},
248     {{pl, r0, r13, ROR, r14},
249      false,
250      al,
251      "pl r0 r13 ROR r14",
252      "pl_r0_r13_ROR_r14"},
253     {{ne, r5, r6, LSL, r5}, false, al, "ne r5 r6 LSL r5", "ne_r5_r6_LSL_r5"},
254     {{ge, r8, r3, ROR, r14}, false, al, "ge r8 r3 ROR r14", "ge_r8_r3_ROR_r14"},
255     {{ne, r8, r7, LSL, r10}, false, al, "ne r8 r7 LSL r10", "ne_r8_r7_LSL_r10"},
256     {{eq, r13, r9, ROR, r13},
257      false,
258      al,
259      "eq r13 r9 ROR r13",
260      "eq_r13_r9_ROR_r13"},
261     {{eq, r10, r8, ROR, r14},
262      false,
263      al,
264      "eq r10 r8 ROR r14",
265      "eq_r10_r8_ROR_r14"},
266     {{mi, r1, r8, ROR, r9}, false, al, "mi r1 r8 ROR r9", "mi_r1_r8_ROR_r9"},
267     {{le, r10, r8, ROR, r10},
268      false,
269      al,
270      "le r10 r8 ROR r10",
271      "le_r10_r8_ROR_r10"},
272     {{le, r7, r2, LSR, r11}, false, al, "le r7 r2 LSR r11", "le_r7_r2_LSR_r11"},
273     {{le, r11, r9, LSL, r11},
274      false,
275      al,
276      "le r11 r9 LSL r11",
277      "le_r11_r9_LSL_r11"},
278     {{cc, r5, r5, LSR, r4}, false, al, "cc r5 r5 LSR r4", "cc_r5_r5_LSR_r4"},
279     {{al, r9, r5, LSL, r8}, false, al, "al r9 r5 LSL r8", "al_r9_r5_LSL_r8"},
280     {{cs, r7, r14, LSL, r8}, false, al, "cs r7 r14 LSL r8", "cs_r7_r14_LSL_r8"},
281     {{vc, r9, r9, LSR, r7}, false, al, "vc r9 r9 LSR r7", "vc_r9_r9_LSR_r7"},
282     {{al, r13, r9, LSL, r1}, false, al, "al r13 r9 LSL r1", "al_r13_r9_LSL_r1"},
283     {{cc, r8, r4, LSR, r14}, false, al, "cc r8 r4 LSR r14", "cc_r8_r4_LSR_r14"},
284     {{cc, r14, r3, LSL, r10},
285      false,
286      al,
287      "cc r14 r3 LSL r10",
288      "cc_r14_r3_LSL_r10"},
289     {{ge, r8, r6, ROR, r14}, false, al, "ge r8 r6 ROR r14", "ge_r8_r6_ROR_r14"},
290     {{le, r4, r5, ASR, r5}, false, al, "le r4 r5 ASR r5", "le_r4_r5_ASR_r5"},
291     {{vc, r4, r8, LSR, r6}, false, al, "vc r4 r8 LSR r6", "vc_r4_r8_LSR_r6"},
292     {{vc, r9, r8, ROR, r14}, false, al, "vc r9 r8 ROR r14", "vc_r9_r8_ROR_r14"},
293     {{ne, r7, r5, LSL, r11}, false, al, "ne r7 r5 LSL r11", "ne_r7_r5_LSL_r11"},
294     {{vs, r12, r12, ASR, r8},
295      false,
296      al,
297      "vs r12 r12 ASR r8",
298      "vs_r12_r12_ASR_r8"},
299     {{pl, r2, r14, ASR, r7}, false, al, "pl r2 r14 ASR r7", "pl_r2_r14_ASR_r7"},
300     {{cc, r7, r10, ASR, r9}, false, al, "cc r7 r10 ASR r9", "cc_r7_r10_ASR_r9"},
301     {{ne, r7, r10, LSL, r11},
302      false,
303      al,
304      "ne r7 r10 LSL r11",
305      "ne_r7_r10_LSL_r11"},
306     {{vs, r13, r14, ROR, r0},
307      false,
308      al,
309      "vs r13 r14 ROR r0",
310      "vs_r13_r14_ROR_r0"},
311     {{gt, r4, r12, LSL, r6}, false, al, "gt r4 r12 LSL r6", "gt_r4_r12_LSL_r6"},
312     {{ge, r14, r6, ROR, r11},
313      false,
314      al,
315      "ge r14 r6 ROR r11",
316      "ge_r14_r6_ROR_r11"},
317     {{pl, r2, r14, ASR, r0}, false, al, "pl r2 r14 ASR r0", "pl_r2_r14_ASR_r0"},
318     {{gt, r7, r6, LSL, r11}, false, al, "gt r7 r6 LSL r11", "gt_r7_r6_LSL_r11"},
319     {{cc, r11, r9, LSL, r11},
320      false,
321      al,
322      "cc r11 r9 LSL r11",
323      "cc_r11_r9_LSL_r11"},
324     {{ne, r1, r5, ROR, r8}, false, al, "ne r1 r5 ROR r8", "ne_r1_r5_ROR_r8"},
325     {{cs, r6, r2, ROR, r6}, false, al, "cs r6 r2 ROR r6", "cs_r6_r2_ROR_r6"},
326     {{vc, r1, r14, LSL, r11},
327      false,
328      al,
329      "vc r1 r14 LSL r11",
330      "vc_r1_r14_LSL_r11"},
331     {{cc, r10, r13, LSL, r11},
332      false,
333      al,
334      "cc r10 r13 LSL r11",
335      "cc_r10_r13_LSL_r11"},
336     {{mi, r12, r10, ROR, r5},
337      false,
338      al,
339      "mi r12 r10 ROR r5",
340      "mi_r12_r10_ROR_r5"},
341     {{ls, r2, r11, LSL, r3}, false, al, "ls r2 r11 LSL r3", "ls_r2_r11_LSL_r3"},
342     {{lt, r6, r13, LSL, r12},
343      false,
344      al,
345      "lt r6 r13 LSL r12",
346      "lt_r6_r13_LSL_r12"},
347     {{eq, r2, r14, ASR, r5}, false, al, "eq r2 r14 ASR r5", "eq_r2_r14_ASR_r5"},
348     {{eq, r0, r14, LSR, r5}, false, al, "eq r0 r14 LSR r5", "eq_r0_r14_LSR_r5"},
349     {{ls, r7, r11, LSL, r1}, false, al, "ls r7 r11 LSL r1", "ls_r7_r11_LSL_r1"},
350     {{vs, r14, r13, LSR, r14},
351      false,
352      al,
353      "vs r14 r13 LSR r14",
354      "vs_r14_r13_LSR_r14"},
355     {{vs, r13, r10, ASR, r3},
356      false,
357      al,
358      "vs r13 r10 ASR r3",
359      "vs_r13_r10_ASR_r3"},
360     {{gt, r5, r4, LSL, r2}, false, al, "gt r5 r4 LSL r2", "gt_r5_r4_LSL_r2"},
361     {{hi, r5, r12, LSR, r10},
362      false,
363      al,
364      "hi r5 r12 LSR r10",
365      "hi_r5_r12_LSR_r10"},
366     {{mi, r11, r7, ROR, r11},
367      false,
368      al,
369      "mi r11 r7 ROR r11",
370      "mi_r11_r7_ROR_r11"},
371     {{ne, r10, r7, ROR, r9}, false, al, "ne r10 r7 ROR r9", "ne_r10_r7_ROR_r9"},
372     {{ls, r8, r6, ASR, r10}, false, al, "ls r8 r6 ASR r10", "ls_r8_r6_ASR_r10"},
373     {{vc, r7, r10, ROR, r9}, false, al, "vc r7 r10 ROR r9", "vc_r7_r10_ROR_r9"},
374     {{mi, r8, r3, LSR, r3}, false, al, "mi r8 r3 LSR r3", "mi_r8_r3_LSR_r3"},
375     {{lt, r8, r2, ROR, r12}, false, al, "lt r8 r2 ROR r12", "lt_r8_r2_ROR_r12"},
376     {{le, r10, r14, LSL, r11},
377      false,
378      al,
379      "le r10 r14 LSL r11",
380      "le_r10_r14_LSL_r11"},
381     {{pl, r6, r6, LSR, r5}, false, al, "pl r6 r6 LSR r5", "pl_r6_r6_LSR_r5"},
382     {{cc, r8, r4, ROR, r2}, false, al, "cc r8 r4 ROR r2", "cc_r8_r4_ROR_r2"},
383     {{al, r7, r6, ASR, r2}, false, al, "al r7 r6 ASR r2", "al_r7_r6_ASR_r2"},
384     {{ne, r2, r13, ASR, r8}, false, al, "ne r2 r13 ASR r8", "ne_r2_r13_ASR_r8"},
385     {{ne, r1, r5, ROR, r12}, false, al, "ne r1 r5 ROR r12", "ne_r1_r5_ROR_r12"},
386     {{lt, r10, r6, ROR, r8}, false, al, "lt r10 r6 ROR r8", "lt_r10_r6_ROR_r8"},
387     {{cs, r2, r7, LSL, r0}, false, al, "cs r2 r7 LSL r0", "cs_r2_r7_LSL_r0"},
388     {{ne, r3, r2, ASR, r4}, false, al, "ne r3 r2 ASR r4", "ne_r3_r2_ASR_r4"},
389     {{mi, r4, r1, LSR, r0}, false, al, "mi r4 r1 LSR r0", "mi_r4_r1_LSR_r0"},
390     {{lt, r1, r6, LSL, r10}, false, al, "lt r1 r6 LSL r10", "lt_r1_r6_LSL_r10"},
391     {{gt, r6, r9, LSL, r13}, false, al, "gt r6 r9 LSL r13", "gt_r6_r9_LSL_r13"},
392     {{vc, r5, r2, LSL, r13}, false, al, "vc r5 r2 LSL r13", "vc_r5_r2_LSL_r13"},
393     {{ne, r11, r8, ROR, r5}, false, al, "ne r11 r8 ROR r5", "ne_r11_r8_ROR_r5"},
394     {{eq, r10, r2, ROR, r12},
395      false,
396      al,
397      "eq r10 r2 ROR r12",
398      "eq_r10_r2_ROR_r12"},
399     {{ge, r0, r5, LSR, r12}, false, al, "ge r0 r5 LSR r12", "ge_r0_r5_LSR_r12"},
400     {{vs, r5, r13, ROR, r9}, false, al, "vs r5 r13 ROR r9", "vs_r5_r13_ROR_r9"},
401     {{gt, r0, r6, ASR, r9}, false, al, "gt r0 r6 ASR r9", "gt_r0_r6_ASR_r9"},
402     {{hi, r6, r0, LSR, r9}, false, al, "hi r6 r0 LSR r9", "hi_r6_r0_LSR_r9"},
403     {{lt, r7, r4, ASR, r9}, false, al, "lt r7 r4 ASR r9", "lt_r7_r4_ASR_r9"},
404     {{ge, r5, r0, ROR, r2}, false, al, "ge r5 r0 ROR r2", "ge_r5_r0_ROR_r2"},
405     {{ls, r10, r11, ROR, r7},
406      false,
407      al,
408      "ls r10 r11 ROR r7",
409      "ls_r10_r11_ROR_r7"},
410     {{cs, r7, r1, ASR, r13}, false, al, "cs r7 r1 ASR r13", "cs_r7_r1_ASR_r13"},
411     {{pl, r3, r9, ASR, r11}, false, al, "pl r3 r9 ASR r11", "pl_r3_r9_ASR_r11"},
412     {{ne, r13, r5, LSR, r2}, false, al, "ne r13 r5 LSR r2", "ne_r13_r5_LSR_r2"},
413     {{vc, r5, r8, ASR, r6}, false, al, "vc r5 r8 ASR r6", "vc_r5_r8_ASR_r6"},
414     {{ge, r8, r11, ROR, r13},
415      false,
416      al,
417      "ge r8 r11 ROR r13",
418      "ge_r8_r11_ROR_r13"},
419     {{lt, r0, r10, LSR, r5}, false, al, "lt r0 r10 LSR r5", "lt_r0_r10_LSR_r5"},
420     {{vc, r8, r1, ASR, r11}, false, al, "vc r8 r1 ASR r11", "vc_r8_r1_ASR_r11"},
421     {{pl, r11, r9, ASR, r9}, false, al, "pl r11 r9 ASR r9", "pl_r11_r9_ASR_r9"},
422     {{ls, r3, r1, LSL, r11}, false, al, "ls r3 r1 LSL r11", "ls_r3_r1_LSL_r11"},
423     {{hi, r8, r12, ASR, r7}, false, al, "hi r8 r12 ASR r7", "hi_r8_r12_ASR_r7"},
424     {{ne, r10, r12, LSR, r9},
425      false,
426      al,
427      "ne r10 r12 LSR r9",
428      "ne_r10_r12_LSR_r9"},
429     {{ge, r12, r4, ASR, r14},
430      false,
431      al,
432      "ge r12 r4 ASR r14",
433      "ge_r12_r4_ASR_r14"},
434     {{mi, r6, r2, ROR, r1}, false, al, "mi r6 r2 ROR r1", "mi_r6_r2_ROR_r1"},
435     {{ls, r13, r13, LSL, r0},
436      false,
437      al,
438      "ls r13 r13 LSL r0",
439      "ls_r13_r13_LSL_r0"},
440     {{eq, r8, r10, LSR, r0}, false, al, "eq r8 r10 LSR r0", "eq_r8_r10_LSR_r0"},
441     {{gt, r5, r0, ROR, r14}, false, al, "gt r5 r0 ROR r14", "gt_r5_r0_ROR_r14"},
442     {{vs, r3, r4, ROR, r3}, false, al, "vs r3 r4 ROR r3", "vs_r3_r4_ROR_r3"},
443     {{lt, r5, r13, LSL, r6}, false, al, "lt r5 r13 LSL r6", "lt_r5_r13_LSL_r6"},
444     {{cc, r5, r1, ASR, r13}, false, al, "cc r5 r1 ASR r13", "cc_r5_r1_ASR_r13"},
445     {{lt, r11, r3, ROR, r7}, false, al, "lt r11 r3 ROR r7", "lt_r11_r3_ROR_r7"},
446     {{cs, r12, r2, LSR, r4}, false, al, "cs r12 r2 LSR r4", "cs_r12_r2_LSR_r4"},
447     {{vc, r3, r12, LSL, r4}, false, al, "vc r3 r12 LSL r4", "vc_r3_r12_LSL_r4"},
448     {{hi, r14, r9, LSL, r5}, false, al, "hi r14 r9 LSL r5", "hi_r14_r9_LSL_r5"},
449     {{ls, r10, r4, LSR, r5}, false, al, "ls r10 r4 LSR r5", "ls_r10_r4_LSR_r5"},
450     {{ne, r11, r14, ROR, r14},
451      false,
452      al,
453      "ne r11 r14 ROR r14",
454      "ne_r11_r14_ROR_r14"},
455     {{vc, r11, r12, ASR, r7},
456      false,
457      al,
458      "vc r11 r12 ASR r7",
459      "vc_r11_r12_ASR_r7"},
460     {{cc, r7, r0, LSR, r3}, false, al, "cc r7 r0 LSR r3", "cc_r7_r0_LSR_r3"},
461     {{cs, r1, r8, LSR, r3}, false, al, "cs r1 r8 LSR r3", "cs_r1_r8_LSR_r3"},
462     {{mi, r7, r6, LSL, r13}, false, al, "mi r7 r6 LSL r13", "mi_r7_r6_LSL_r13"},
463     {{hi, r10, r3, ROR, r7}, false, al, "hi r10 r3 ROR r7", "hi_r10_r3_ROR_r7"},
464     {{vs, r2, r11, LSR, r13},
465      false,
466      al,
467      "vs r2 r11 LSR r13",
468      "vs_r2_r11_LSR_r13"},
469     {{eq, r12, r14, LSL, r2},
470      false,
471      al,
472      "eq r12 r14 LSL r2",
473      "eq_r12_r14_LSL_r2"},
474     {{vs, r14, r13, LSL, r6},
475      false,
476      al,
477      "vs r14 r13 LSL r6",
478      "vs_r14_r13_LSL_r6"},
479     {{cs, r1, r0, LSL, r10}, false, al, "cs r1 r0 LSL r10", "cs_r1_r0_LSL_r10"},
480     {{ge, r2, r14, LSR, r10},
481      false,
482      al,
483      "ge r2 r14 LSR r10",
484      "ge_r2_r14_LSR_r10"},
485     {{mi, r14, r10, ROR, r0},
486      false,
487      al,
488      "mi r14 r10 ROR r0",
489      "mi_r14_r10_ROR_r0"},
490     {{eq, r8, r4, ROR, r4}, false, al, "eq r8 r4 ROR r4", "eq_r8_r4_ROR_r4"},
491     {{gt, r4, r9, LSR, r3}, false, al, "gt r4 r9 LSR r3", "gt_r4_r9_LSR_r3"},
492     {{ls, r13, r0, ASR, r5}, false, al, "ls r13 r0 ASR r5", "ls_r13_r0_ASR_r5"},
493     {{ge, r3, r13, ASR, r12},
494      false,
495      al,
496      "ge r3 r13 ASR r12",
497      "ge_r3_r13_ASR_r12"},
498     {{vc, r9, r7, LSR, r12}, false, al, "vc r9 r7 LSR r12", "vc_r9_r7_LSR_r12"},
499     {{al, r1, r0, LSL, r8}, false, al, "al r1 r0 LSL r8", "al_r1_r0_LSL_r8"},
500     {{ls, r11, r7, ROR, r5}, false, al, "ls r11 r7 ROR r5", "ls_r11_r7_ROR_r5"},
501     {{vs, r11, r8, LSR, r13},
502      false,
503      al,
504      "vs r11 r8 LSR r13",
505      "vs_r11_r8_LSR_r13"},
506     {{le, r6, r5, LSR, r3}, false, al, "le r6 r5 LSR r3", "le_r6_r5_LSR_r3"},
507     {{cs, r4, r1, LSL, r7}, false, al, "cs r4 r1 LSL r7", "cs_r4_r1_LSL_r7"},
508     {{lt, r4, r9, LSL, r2}, false, al, "lt r4 r9 LSL r2", "lt_r4_r9_LSL_r2"},
509     {{mi, r12, r1, LSR, r10},
510      false,
511      al,
512      "mi r12 r1 LSR r10",
513      "mi_r12_r1_LSR_r10"},
514     {{al, r14, r2, LSR, r3}, false, al, "al r14 r2 LSR r3", "al_r14_r2_LSR_r3"},
515     {{al, r11, r9, LSL, r4}, false, al, "al r11 r9 LSL r4", "al_r11_r9_LSL_r4"},
516     {{hi, r4, r4, ROR, r3}, false, al, "hi r4 r4 ROR r3", "hi_r4_r4_ROR_r3"},
517     {{al, r3, r5, ROR, r6}, false, al, "al r3 r5 ROR r6", "al_r3_r5_ROR_r6"},
518     {{al, r8, r4, LSR, r7}, false, al, "al r8 r4 LSR r7", "al_r8_r4_LSR_r7"},
519     {{vs, r7, r5, LSL, r6}, false, al, "vs r7 r5 LSL r6", "vs_r7_r5_LSL_r6"},
520     {{ls, r6, r2, LSL, r8}, false, al, "ls r6 r2 LSL r8", "ls_r6_r2_LSL_r8"},
521     {{pl, r4, r12, LSL, r6}, false, al, "pl r4 r12 LSL r6", "pl_r4_r12_LSL_r6"},
522     {{ge, r8, r12, LSR, r4}, false, al, "ge r8 r12 LSR r4", "ge_r8_r12_LSR_r4"},
523     {{le, r11, r1, ROR, r9}, false, al, "le r11 r1 ROR r9", "le_r11_r1_ROR_r9"},
524     {{hi, r1, r13, LSR, r9}, false, al, "hi r1 r13 LSR r9", "hi_r1_r13_LSR_r9"},
525     {{cc, r3, r0, LSR, r1}, false, al, "cc r3 r0 LSR r1", "cc_r3_r0_LSR_r1"},
526     {{ge, r10, r11, ROR, r0},
527      false,
528      al,
529      "ge r10 r11 ROR r0",
530      "ge_r10_r11_ROR_r0"},
531     {{pl, r6, r5, ROR, r3}, false, al, "pl r6 r5 ROR r3", "pl_r6_r5_ROR_r3"},
532     {{cs, r10, r1, LSR, r12},
533      false,
534      al,
535      "cs r10 r1 LSR r12",
536      "cs_r10_r1_LSR_r12"},
537     {{ne, r10, r4, LSR, r1}, false, al, "ne r10 r4 LSR r1", "ne_r10_r4_LSR_r1"},
538     {{vs, r5, r1, LSL, r7}, false, al, "vs r5 r1 LSL r7", "vs_r5_r1_LSL_r7"},
539     {{ge, r10, r2, LSL, r4}, false, al, "ge r10 r2 LSL r4", "ge_r10_r2_LSL_r4"},
540     {{vc, r3, r1, ASR, r2}, false, al, "vc r3 r1 ASR r2", "vc_r3_r1_ASR_r2"},
541     {{ls, r2, r3, ASR, r14}, false, al, "ls r2 r3 ASR r14", "ls_r2_r3_ASR_r14"},
542     {{vs, r1, r1, LSL, r7}, false, al, "vs r1 r1 LSL r7", "vs_r1_r1_LSL_r7"},
543     {{gt, r2, r1, LSL, r14}, false, al, "gt r2 r1 LSL r14", "gt_r2_r1_LSL_r14"},
544     {{al, r11, r12, ROR, r7},
545      false,
546      al,
547      "al r11 r12 ROR r7",
548      "al_r11_r12_ROR_r7"},
549     {{eq, r2, r12, LSL, r10},
550      false,
551      al,
552      "eq r2 r12 LSL r10",
553      "eq_r2_r12_LSL_r10"},
554     {{ls, r7, r2, LSR, r7}, false, al, "ls r7 r2 LSR r7", "ls_r7_r2_LSR_r7"},
555     {{ne, r9, r5, ROR, r12}, false, al, "ne r9 r5 ROR r12", "ne_r9_r5_ROR_r12"},
556     {{ge, r13, r8, LSR, r12},
557      false,
558      al,
559      "ge r13 r8 LSR r12",
560      "ge_r13_r8_LSR_r12"},
561     {{ls, r12, r11, ROR, r9},
562      false,
563      al,
564      "ls r12 r11 ROR r9",
565      "ls_r12_r11_ROR_r9"},
566     {{cc, r13, r5, LSL, r8}, false, al, "cc r13 r5 LSL r8", "cc_r13_r5_LSL_r8"},
567     {{ne, r7, r12, LSL, r7}, false, al, "ne r7 r12 LSL r7", "ne_r7_r12_LSL_r7"},
568     {{ge, r6, r13, ROR, r2}, false, al, "ge r6 r13 ROR r2", "ge_r6_r13_ROR_r2"},
569     {{ne, r8, r7, ROR, r6}, false, al, "ne r8 r7 ROR r6", "ne_r8_r7_ROR_r6"},
570     {{cc, r7, r10, ROR, r0}, false, al, "cc r7 r10 ROR r0", "cc_r7_r10_ROR_r0"},
571     {{le, r5, r5, ASR, r5}, false, al, "le r5 r5 ASR r5", "le_r5_r5_ASR_r5"},
572     {{hi, r14, r7, ROR, r0}, false, al, "hi r14 r7 ROR r0", "hi_r14_r7_ROR_r0"},
573     {{vs, r9, r3, LSL, r11}, false, al, "vs r9 r3 LSL r11", "vs_r9_r3_LSL_r11"},
574     {{ls, r0, r5, LSL, r11}, false, al, "ls r0 r5 LSL r11", "ls_r0_r5_LSL_r11"},
575     {{ne, r12, r3, LSL, r14},
576      false,
577      al,
578      "ne r12 r3 LSL r14",
579      "ne_r12_r3_LSL_r14"},
580     {{lt, r12, r12, ROR, r4},
581      false,
582      al,
583      "lt r12 r12 ROR r4",
584      "lt_r12_r12_ROR_r4"},
585     {{gt, r13, r10, LSR, r3},
586      false,
587      al,
588      "gt r13 r10 LSR r3",
589      "gt_r13_r10_LSR_r3"},
590     {{ls, r11, r2, ASR, r10},
591      false,
592      al,
593      "ls r11 r2 ASR r10",
594      "ls_r11_r2_ASR_r10"},
595     {{vc, r7, r8, ASR, r13}, false, al, "vc r7 r8 ASR r13", "vc_r7_r8_ASR_r13"},
596     {{eq, r8, r3, LSR, r13}, false, al, "eq r8 r3 LSR r13", "eq_r8_r3_LSR_r13"},
597     {{mi, r10, r6, LSL, r8}, false, al, "mi r10 r6 LSL r8", "mi_r10_r6_LSL_r8"},
598     {{le, r11, r11, LSR, r1},
599      false,
600      al,
601      "le r11 r11 LSR r1",
602      "le_r11_r11_LSR_r1"},
603     {{vc, r11, r2, ROR, r13},
604      false,
605      al,
606      "vc r11 r2 ROR r13",
607      "vc_r11_r2_ROR_r13"},
608     {{vs, r8, r9, ASR, r2}, false, al, "vs r8 r9 ASR r2", "vs_r8_r9_ASR_r2"},
609     {{pl, r11, r11, ASR, r13},
610      false,
611      al,
612      "pl r11 r11 ASR r13",
613      "pl_r11_r11_ASR_r13"},
614     {{mi, r14, r1, LSL, r7}, false, al, "mi r14 r1 LSL r7", "mi_r14_r1_LSL_r7"},
615     {{mi, r7, r7, LSR, r6}, false, al, "mi r7 r7 LSR r6", "mi_r7_r7_LSR_r6"},
616     {{eq, r5, r13, LSR, r8}, false, al, "eq r5 r13 LSR r8", "eq_r5_r13_LSR_r8"},
617     {{cs, r8, r7, ASR, r0}, false, al, "cs r8 r7 ASR r0", "cs_r8_r7_ASR_r0"},
618     {{pl, r8, r4, LSL, r5}, false, al, "pl r8 r4 LSL r5", "pl_r8_r4_LSL_r5"},
619     {{pl, r1, r6, ROR, r2}, false, al, "pl r1 r6 ROR r2", "pl_r1_r6_ROR_r2"},
620     {{cc, r13, r14, ASR, r0},
621      false,
622      al,
623      "cc r13 r14 ASR r0",
624      "cc_r13_r14_ASR_r0"},
625     {{al, r3, r12, LSL, r3}, false, al, "al r3 r12 LSL r3", "al_r3_r12_LSL_r3"},
626     {{vs, r12, r10, LSL, r14},
627      false,
628      al,
629      "vs r12 r10 LSL r14",
630      "vs_r12_r10_LSL_r14"},
631     {{lt, r8, r3, ASR, r0}, false, al, "lt r8 r3 ASR r0", "lt_r8_r3_ASR_r0"},
632     {{pl, r0, r13, LSL, r2}, false, al, "pl r0 r13 LSL r2", "pl_r0_r13_LSL_r2"},
633     {{gt, r8, r2, LSL, r4}, false, al, "gt r8 r2 LSL r4", "gt_r8_r2_LSL_r4"},
634     {{mi, r13, r0, LSL, r8}, false, al, "mi r13 r0 LSL r8", "mi_r13_r0_LSL_r8"},
635     {{eq, r1, r10, LSL, r14},
636      false,
637      al,
638      "eq r1 r10 LSL r14",
639      "eq_r1_r10_LSL_r14"},
640     {{hi, r8, r11, ASR, r10},
641      false,
642      al,
643      "hi r8 r11 ASR r10",
644      "hi_r8_r11_ASR_r10"},
645     {{ne, r11, r9, ASR, r0}, false, al, "ne r11 r9 ASR r0", "ne_r11_r9_ASR_r0"},
646     {{cc, r0, r13, ROR, r5}, false, al, "cc r0 r13 ROR r5", "cc_r0_r13_ROR_r5"},
647     {{ge, r13, r7, ROR, r5}, false, al, "ge r13 r7 ROR r5", "ge_r13_r7_ROR_r5"},
648     {{eq, r4, r5, LSL, r2}, false, al, "eq r4 r5 LSL r2", "eq_r4_r5_LSL_r2"},
649     {{ge, r5, r12, ASR, r3}, false, al, "ge r5 r12 ASR r3", "ge_r5_r12_ASR_r3"},
650     {{ge, r9, r7, ROR, r6}, false, al, "ge r9 r7 ROR r6", "ge_r9_r7_ROR_r6"},
651     {{cc, r2, r2, LSR, r0}, false, al, "cc r2 r2 LSR r0", "cc_r2_r2_LSR_r0"},
652     {{cs, r9, r7, ASR, r11}, false, al, "cs r9 r7 ASR r11", "cs_r9_r7_ASR_r11"},
653     {{al, r10, r6, ASR, r10},
654      false,
655      al,
656      "al r10 r6 ASR r10",
657      "al_r10_r6_ASR_r10"},
658     {{ls, r13, r10, LSL, r10},
659      false,
660      al,
661      "ls r13 r10 LSL r10",
662      "ls_r13_r10_LSL_r10"},
663     {{ne, r14, r13, ASR, r8},
664      false,
665      al,
666      "ne r14 r13 ASR r8",
667      "ne_r14_r13_ASR_r8"},
668     {{lt, r12, r3, ROR, r10},
669      false,
670      al,
671      "lt r12 r3 ROR r10",
672      "lt_r12_r3_ROR_r10"},
673     {{al, r12, r8, ROR, r8}, false, al, "al r12 r8 ROR r8", "al_r12_r8_ROR_r8"},
674     {{ls, r5, r8, ASR, r8}, false, al, "ls r5 r8 ASR r8", "ls_r5_r8_ASR_r8"},
675     {{mi, r13, r11, LSR, r2},
676      false,
677      al,
678      "mi r13 r11 LSR r2",
679      "mi_r13_r11_LSR_r2"},
680     {{le, r7, r10, ROR, r1}, false, al, "le r7 r10 ROR r1", "le_r7_r10_ROR_r1"},
681     {{ne, r5, r2, LSL, r11}, false, al, "ne r5 r2 LSL r11", "ne_r5_r2_LSL_r11"},
682     {{ne, r14, r7, LSL, r10},
683      false,
684      al,
685      "ne r14 r7 LSL r10",
686      "ne_r14_r7_LSL_r10"},
687     {{al, r0, r1, LSR, r14}, false, al, "al r0 r1 LSR r14", "al_r0_r1_LSR_r14"},
688     {{mi, r5, r9, LSR, r11}, false, al, "mi r5 r9 LSR r11", "mi_r5_r9_LSR_r11"},
689     {{eq, r8, r3, LSR, r11}, false, al, "eq r8 r3 LSR r11", "eq_r8_r3_LSR_r11"},
690     {{eq, r4, r14, LSR, r11},
691      false,
692      al,
693      "eq r4 r14 LSR r11",
694      "eq_r4_r14_LSR_r11"},
695     {{le, r0, r7, LSL, r11}, false, al, "le r0 r7 LSL r11", "le_r0_r7_LSL_r11"},
696     {{le, r2, r2, LSL, r10}, false, al, "le r2 r2 LSL r10", "le_r2_r2_LSL_r10"},
697     {{le, r3, r5, ROR, r0}, false, al, "le r3 r5 ROR r0", "le_r3_r5_ROR_r0"},
698     {{mi, r8, r10, LSL, r10},
699      false,
700      al,
701      "mi r8 r10 LSL r10",
702      "mi_r8_r10_LSL_r10"},
703     {{ls, r11, r7, ROR, r8}, false, al, "ls r11 r7 ROR r8", "ls_r11_r7_ROR_r8"},
704     {{hi, r14, r11, LSR, r7},
705      false,
706      al,
707      "hi r14 r11 LSR r7",
708      "hi_r14_r11_LSR_r7"},
709     {{mi, r10, r2, LSR, r1}, false, al, "mi r10 r2 LSR r1", "mi_r10_r2_LSR_r1"},
710     {{le, r3, r14, ASR, r10},
711      false,
712      al,
713      "le r3 r14 ASR r10",
714      "le_r3_r14_ASR_r10"},
715     {{vs, r3, r11, ROR, r2}, false, al, "vs r3 r11 ROR r2", "vs_r3_r11_ROR_r2"},
716     {{lt, r2, r8, ASR, r2}, false, al, "lt r2 r8 ASR r2", "lt_r2_r8_ASR_r2"},
717     {{pl, r7, r4, ROR, r6}, false, al, "pl r7 r4 ROR r6", "pl_r7_r4_ROR_r6"},
718     {{al, r7, r12, ASR, r12},
719      false,
720      al,
721      "al r7 r12 ASR r12",
722      "al_r7_r12_ASR_r12"},
723     {{ge, r8, r9, ROR, r0}, false, al, "ge r8 r9 ROR r0", "ge_r8_r9_ROR_r0"},
724     {{mi, r9, r5, LSL, r7}, false, al, "mi r9 r5 LSL r7", "mi_r9_r5_LSL_r7"},
725     {{cs, r4, r13, LSL, r9}, false, al, "cs r4 r13 LSL r9", "cs_r4_r13_LSL_r9"},
726     {{eq, r5, r3, LSR, r1}, false, al, "eq r5 r3 LSR r1", "eq_r5_r3_LSR_r1"},
727     {{lt, r6, r14, LSR, r5}, false, al, "lt r6 r14 LSR r5", "lt_r6_r14_LSR_r5"},
728     {{eq, r11, r9, LSL, r11},
729      false,
730      al,
731      "eq r11 r9 LSL r11",
732      "eq_r11_r9_LSL_r11"},
733     {{cs, r4, r0, ROR, r0}, false, al, "cs r4 r0 ROR r0", "cs_r4_r0_ROR_r0"},
734     {{pl, r11, r13, LSL, r4},
735      false,
736      al,
737      "pl r11 r13 LSL r4",
738      "pl_r11_r13_LSL_r4"},
739     {{al, r1, r2, LSR, r7}, false, al, "al r1 r2 LSR r7", "al_r1_r2_LSR_r7"},
740     {{mi, r7, r2, ROR, r2}, false, al, "mi r7 r2 ROR r2", "mi_r7_r2_ROR_r2"},
741     {{ls, r2, r10, LSL, r10},
742      false,
743      al,
744      "ls r2 r10 LSL r10",
745      "ls_r2_r10_LSL_r10"},
746     {{cs, r11, r8, LSL, r3}, false, al, "cs r11 r8 LSL r3", "cs_r11_r8_LSL_r3"},
747     {{cc, r11, r5, ROR, r1}, false, al, "cc r11 r5 ROR r1", "cc_r11_r5_ROR_r1"},
748     {{le, r11, r0, ASR, r12},
749      false,
750      al,
751      "le r11 r0 ASR r12",
752      "le_r11_r0_ASR_r12"},
753     {{pl, r5, r8, LSL, r6}, false, al, "pl r5 r8 LSL r6", "pl_r5_r8_LSL_r6"},
754     {{ls, r9, r13, LSL, r10},
755      false,
756      al,
757      "ls r9 r13 LSL r10",
758      "ls_r9_r13_LSL_r10"},
759     {{ge, r14, r5, LSL, r10},
760      false,
761      al,
762      "ge r14 r5 LSL r10",
763      "ge_r14_r5_LSL_r10"},
764     {{vs, r8, r10, ASR, r2}, false, al, "vs r8 r10 ASR r2", "vs_r8_r10_ASR_r2"},
765     {{vs, r11, r11, LSR, r4},
766      false,
767      al,
768      "vs r11 r11 LSR r4",
769      "vs_r11_r11_LSR_r4"},
770     {{ls, r7, r0, ASR, r7}, false, al, "ls r7 r0 ASR r7", "ls_r7_r0_ASR_r7"},
771     {{cc, r10, r5, ASR, r13},
772      false,
773      al,
774      "cc r10 r5 ASR r13",
775      "cc_r10_r5_ASR_r13"},
776     {{hi, r12, r13, ROR, r5},
777      false,
778      al,
779      "hi r12 r13 ROR r5",
780      "hi_r12_r13_ROR_r5"},
781     {{le, r12, r14, LSR, r5},
782      false,
783      al,
784      "le r12 r14 LSR r5",
785      "le_r12_r14_LSR_r5"},
786     {{le, r0, r0, LSL, r14}, false, al, "le r0 r0 LSL r14", "le_r0_r0_LSL_r14"},
787     {{ge, r3, r7, ROR, r14}, false, al, "ge r3 r7 ROR r14", "ge_r3_r7_ROR_r14"},
788     {{eq, r3, r1, LSL, r8}, false, al, "eq r3 r1 LSL r8", "eq_r3_r1_LSL_r8"},
789     {{lt, r7, r1, LSR, r11}, false, al, "lt r7 r1 LSR r11", "lt_r7_r1_LSR_r11"},
790     {{ls, r0, r10, ROR, r11},
791      false,
792      al,
793      "ls r0 r10 ROR r11",
794      "ls_r0_r10_ROR_r11"},
795     {{le, r0, r1, LSL, r8}, false, al, "le r0 r1 LSL r8", "le_r0_r1_LSL_r8"},
796     {{mi, r13, r3, LSR, r8}, false, al, "mi r13 r3 LSR r8", "mi_r13_r3_LSR_r8"},
797     {{ls, r9, r6, LSR, r0}, false, al, "ls r9 r6 LSR r0", "ls_r9_r6_LSR_r0"},
798     {{mi, r11, r6, LSR, r3}, false, al, "mi r11 r6 LSR r3", "mi_r11_r6_LSR_r3"},
799     {{lt, r11, r6, LSL, r14},
800      false,
801      al,
802      "lt r11 r6 LSL r14",
803      "lt_r11_r6_LSL_r14"},
804     {{pl, r4, r14, ROR, r5}, false, al, "pl r4 r14 ROR r5", "pl_r4_r14_ROR_r5"},
805     {{eq, r7, r6, LSR, r6}, false, al, "eq r7 r6 LSR r6", "eq_r7_r6_LSR_r6"},
806     {{hi, r11, r7, ASR, r8}, false, al, "hi r11 r7 ASR r8", "hi_r11_r7_ASR_r8"},
807     {{al, r7, r14, ASR, r14},
808      false,
809      al,
810      "al r7 r14 ASR r14",
811      "al_r7_r14_ASR_r14"},
812     {{cc, r3, r1, ASR, r10}, false, al, "cc r3 r1 ASR r10", "cc_r3_r1_ASR_r10"},
813     {{pl, r9, r3, ROR, r2}, false, al, "pl r9 r3 ROR r2", "pl_r9_r3_ROR_r2"},
814     {{vc, r6, r9, LSR, r14}, false, al, "vc r6 r9 LSR r14", "vc_r6_r9_LSR_r14"},
815     {{le, r3, r14, ASR, r7}, false, al, "le r3 r14 ASR r7", "le_r3_r14_ASR_r7"},
816     {{le, r12, r14, ROR, r14},
817      false,
818      al,
819      "le r12 r14 ROR r14",
820      "le_r12_r14_ROR_r14"},
821     {{pl, r7, r11, ASR, r9}, false, al, "pl r7 r11 ASR r9", "pl_r7_r11_ASR_r9"},
822     {{le, r1, r12, ASR, r4}, false, al, "le r1 r12 ASR r4", "le_r1_r12_ASR_r4"},
823     {{eq, r7, r12, ASR, r6}, false, al, "eq r7 r12 ASR r6", "eq_r7_r12_ASR_r6"},
824     {{mi, r12, r12, ROR, r14},
825      false,
826      al,
827      "mi r12 r12 ROR r14",
828      "mi_r12_r12_ROR_r14"},
829     {{pl, r1, r3, ROR, r3}, false, al, "pl r1 r3 ROR r3", "pl_r1_r3_ROR_r3"},
830     {{hi, r1, r12, ASR, r2}, false, al, "hi r1 r12 ASR r2", "hi_r1_r12_ASR_r2"},
831     {{ls, r7, r5, LSR, r14}, false, al, "ls r7 r5 LSR r14", "ls_r7_r5_LSR_r14"},
832     {{al, r6, r6, LSR, r2}, false, al, "al r6 r6 LSR r2", "al_r6_r6_LSR_r2"},
833     {{al, r8, r3, ROR, r13}, false, al, "al r8 r3 ROR r13", "al_r8_r3_ROR_r13"},
834     {{ls, r12, r14, LSL, r11},
835      false,
836      al,
837      "ls r12 r14 LSL r11",
838      "ls_r12_r14_LSL_r11"},
839     {{ne, r9, r9, ROR, r1}, false, al, "ne r9 r9 ROR r1", "ne_r9_r9_ROR_r1"},
840     {{hi, r9, r13, ROR, r1}, false, al, "hi r9 r13 ROR r1", "hi_r9_r13_ROR_r1"},
841     {{vc, r10, r13, ASR, r13},
842      false,
843      al,
844      "vc r10 r13 ASR r13",
845      "vc_r10_r13_ASR_r13"},
846     {{al, r13, r13, ROR, r7},
847      false,
848      al,
849      "al r13 r13 ROR r7",
850      "al_r13_r13_ROR_r7"},
851     {{ls, r0, r14, LSL, r10},
852      false,
853      al,
854      "ls r0 r14 LSL r10",
855      "ls_r0_r14_LSL_r10"},
856     {{vc, r9, r14, ROR, r11},
857      false,
858      al,
859      "vc r9 r14 ROR r11",
860      "vc_r9_r14_ROR_r11"},
861     {{vc, r10, r3, LSR, r14},
862      false,
863      al,
864      "vc r10 r3 LSR r14",
865      "vc_r10_r3_LSR_r14"},
866     {{cc, r11, r14, LSR, r3},
867      false,
868      al,
869      "cc r11 r14 LSR r3",
870      "cc_r11_r14_LSR_r3"},
871     {{ge, r1, r2, LSL, r1}, false, al, "ge r1 r2 LSL r1", "ge_r1_r2_LSL_r1"},
872     {{al, r10, r8, LSR, r5}, false, al, "al r10 r8 LSR r5", "al_r10_r8_LSR_r5"},
873     {{vs, r2, r5, ASR, r8}, false, al, "vs r2 r5 ASR r8", "vs_r2_r5_ASR_r8"},
874     {{cs, r10, r5, LSL, r11},
875      false,
876      al,
877      "cs r10 r5 LSL r11",
878      "cs_r10_r5_LSL_r11"},
879     {{gt, r9, r0, LSR, r6}, false, al, "gt r9 r0 LSR r6", "gt_r9_r0_LSR_r6"},
880     {{le, r8, r2, ROR, r0}, false, al, "le r8 r2 ROR r0", "le_r8_r2_ROR_r0"},
881     {{cc, r0, r9, ASR, r4}, false, al, "cc r0 r9 ASR r4", "cc_r0_r9_ASR_r4"},
882     {{pl, r7, r4, ASR, r4}, false, al, "pl r7 r4 ASR r4", "pl_r7_r4_ASR_r4"},
883     {{cs, r6, r5, ASR, r6}, false, al, "cs r6 r5 ASR r6", "cs_r6_r5_ASR_r6"},
884     {{al, r14, r6, LSL, r2}, false, al, "al r14 r6 LSL r2", "al_r14_r6_LSL_r2"},
885     {{pl, r11, r14, ASR, r4},
886      false,
887      al,
888      "pl r11 r14 ASR r4",
889      "pl_r11_r14_ASR_r4"},
890     {{pl, r4, r9, LSL, r10}, false, al, "pl r4 r9 LSL r10", "pl_r4_r9_LSL_r10"},
891     {{le, r7, r1, ROR, r8}, false, al, "le r7 r1 ROR r8", "le_r7_r1_ROR_r8"},
892     {{al, r3, r1, LSR, r10}, false, al, "al r3 r1 LSR r10", "al_r3_r1_LSR_r10"},
893     {{ge, r8, r14, LSL, r11},
894      false,
895      al,
896      "ge r8 r14 LSL r11",
897      "ge_r8_r14_LSL_r11"},
898     {{le, r11, r5, LSL, r2}, false, al, "le r11 r5 LSL r2", "le_r11_r5_LSL_r2"},
899     {{le, r13, r2, ROR, r0}, false, al, "le r13 r2 ROR r0", "le_r13_r2_ROR_r0"},
900     {{eq, r4, r13, ASR, r10},
901      false,
902      al,
903      "eq r4 r13 ASR r10",
904      "eq_r4_r13_ASR_r10"},
905     {{lt, r14, r5, ASR, r14},
906      false,
907      al,
908      "lt r14 r5 ASR r14",
909      "lt_r14_r5_ASR_r14"},
910     {{gt, r2, r6, ASR, r12}, false, al, "gt r2 r6 ASR r12", "gt_r2_r6_ASR_r12"},
911     {{gt, r9, r1, ASR, r8}, false, al, "gt r9 r1 ASR r8", "gt_r9_r1_ASR_r8"},
912     {{vs, r11, r6, LSL, r13},
913      false,
914      al,
915      "vs r11 r6 LSL r13",
916      "vs_r11_r6_LSL_r13"},
917     {{ge, r2, r13, LSL, r3}, false, al, "ge r2 r13 LSL r3", "ge_r2_r13_LSL_r3"},
918     {{hi, r4, r1, ROR, r14}, false, al, "hi r4 r1 ROR r14", "hi_r4_r1_ROR_r14"},
919     {{gt, r8, r13, LSL, r2}, false, al, "gt r8 r13 LSL r2", "gt_r8_r13_LSL_r2"},
920     {{pl, r13, r1, LSR, r3}, false, al, "pl r13 r1 LSR r3", "pl_r13_r1_LSR_r3"},
921     {{cc, r13, r6, LSL, r10},
922      false,
923      al,
924      "cc r13 r6 LSL r10",
925      "cc_r13_r6_LSL_r10"},
926     {{ls, r10, r1, LSR, r1}, false, al, "ls r10 r1 LSR r1", "ls_r10_r1_LSR_r1"},
927     {{hi, r12, r2, LSR, r12},
928      false,
929      al,
930      "hi r12 r2 LSR r12",
931      "hi_r12_r2_LSR_r12"},
932     {{ge, r1, r1, ROR, r12}, false, al, "ge r1 r1 ROR r12", "ge_r1_r1_ROR_r12"},
933     {{vc, r12, r0, LSL, r10},
934      false,
935      al,
936      "vc r12 r0 LSL r10",
937      "vc_r12_r0_LSL_r10"},
938     {{eq, r5, r8, ROR, r7}, false, al, "eq r5 r8 ROR r7", "eq_r5_r8_ROR_r7"},
939     {{cc, r5, r1, LSR, r1}, false, al, "cc r5 r1 LSR r1", "cc_r5_r1_LSR_r1"},
940     {{pl, r7, r14, ASR, r4}, false, al, "pl r7 r14 ASR r4", "pl_r7_r14_ASR_r4"},
941     {{ge, r0, r5, LSR, r4}, false, al, "ge r0 r5 LSR r4", "ge_r0_r5_LSR_r4"},
942     {{ge, r3, r10, LSL, r11},
943      false,
944      al,
945      "ge r3 r10 LSL r11",
946      "ge_r3_r10_LSL_r11"},
947     {{cs, r13, r11, LSL, r9},
948      false,
949      al,
950      "cs r13 r11 LSL r9",
951      "cs_r13_r11_LSL_r9"},
952     {{hi, r11, r14, LSL, r10},
953      false,
954      al,
955      "hi r11 r14 LSL r10",
956      "hi_r11_r14_LSL_r10"},
957     {{mi, r7, r5, ROR, r7}, false, al, "mi r7 r5 ROR r7", "mi_r7_r5_ROR_r7"},
958     {{ls, r1, r10, ROR, r13},
959      false,
960      al,
961      "ls r1 r10 ROR r13",
962      "ls_r1_r10_ROR_r13"},
963     {{mi, r10, r10, LSR, r12},
964      false,
965      al,
966      "mi r10 r10 LSR r12",
967      "mi_r10_r10_LSR_r12"},
968     {{le, r14, r7, LSR, r11},
969      false,
970      al,
971      "le r14 r7 LSR r11",
972      "le_r14_r7_LSR_r11"},
973     {{al, r3, r12, LSR, r14},
974      false,
975      al,
976      "al r3 r12 LSR r14",
977      "al_r3_r12_LSR_r14"},
978     {{vs, r1, r3, ROR, r1}, false, al, "vs r1 r3 ROR r1", "vs_r1_r3_ROR_r1"},
979     {{ge, r4, r10, LSL, r13},
980      false,
981      al,
982      "ge r4 r10 LSL r13",
983      "ge_r4_r10_LSL_r13"},
984     {{cs, r4, r3, LSL, r13}, false, al, "cs r4 r3 LSL r13", "cs_r4_r3_LSL_r13"},
985     {{ge, r9, r5, ASR, r11}, false, al, "ge r9 r5 ASR r11", "ge_r9_r5_ASR_r11"},
986     {{pl, r12, r4, ROR, r14},
987      false,
988      al,
989      "pl r12 r4 ROR r14",
990      "pl_r12_r4_ROR_r14"},
991     {{mi, r11, r5, LSR, r3}, false, al, "mi r11 r5 LSR r3", "mi_r11_r5_LSR_r3"},
992     {{mi, r13, r5, LSR, r4}, false, al, "mi r13 r5 LSR r4", "mi_r13_r5_LSR_r4"},
993     {{ls, r13, r0, ASR, r14},
994      false,
995      al,
996      "ls r13 r0 ASR r14",
997      "ls_r13_r0_ASR_r14"},
998     {{cc, r1, r9, ROR, r8}, false, al, "cc r1 r9 ROR r8", "cc_r1_r9_ROR_r8"},
999     {{mi, r2, r9, LSL, r7}, false, al, "mi r2 r9 LSL r7", "mi_r2_r9_LSL_r7"},
1000     {{gt, r12, r13, LSR, r1},
1001      false,
1002      al,
1003      "gt r12 r13 LSR r1",
1004      "gt_r12_r13_LSR_r1"},
1005     {{le, r6, r3, LSL, r9}, false, al, "le r6 r3 LSL r9", "le_r6_r3_LSL_r9"},
1006     {{hi, r11, r2, LSR, r6}, false, al, "hi r11 r2 LSR r6", "hi_r11_r2_LSR_r6"},
1007     {{vc, r2, r7, ROR, r10}, false, al, "vc r2 r7 ROR r10", "vc_r2_r7_ROR_r10"},
1008     {{ge, r1, r1, ASR, r9}, false, al, "ge r1 r1 ASR r9", "ge_r1_r1_ASR_r9"},
1009     {{le, r8, r14, ROR, r2}, false, al, "le r8 r14 ROR r2", "le_r8_r14_ROR_r2"},
1010     {{cs, r5, r4, LSR, r12}, false, al, "cs r5 r4 LSR r12", "cs_r5_r4_LSR_r12"},
1011     {{ne, r6, r7, ASR, r10}, false, al, "ne r6 r7 ASR r10", "ne_r6_r7_ASR_r10"},
1012     {{lt, r8, r3, LSL, r7}, false, al, "lt r8 r3 LSL r7", "lt_r8_r3_LSL_r7"},
1013     {{ls, r6, r2, LSL, r6}, false, al, "ls r6 r2 LSL r6", "ls_r6_r2_LSL_r6"},
1014     {{hi, r6, r3, ROR, r1}, false, al, "hi r6 r3 ROR r1", "hi_r6_r3_ROR_r1"},
1015     {{le, r10, r9, LSL, r14},
1016      false,
1017      al,
1018      "le r10 r9 LSL r14",
1019      "le_r10_r9_LSL_r14"},
1020     {{le, r5, r6, ROR, r11}, false, al, "le r5 r6 ROR r11", "le_r5_r6_ROR_r11"},
1021     {{ne, r7, r12, ASR, r7}, false, al, "ne r7 r12 ASR r7", "ne_r7_r12_ASR_r7"},
1022     {{gt, r11, r5, ASR, r1}, false, al, "gt r11 r5 ASR r1", "gt_r11_r5_ASR_r1"},
1023     {{al, r9, r4, ROR, r10}, false, al, "al r9 r4 ROR r10", "al_r9_r4_ROR_r10"},
1024     {{vc, r5, r9, ROR, r12}, false, al, "vc r5 r9 ROR r12", "vc_r5_r9_ROR_r12"},
1025     {{hi, r1, r0, LSR, r3}, false, al, "hi r1 r0 LSR r3", "hi_r1_r0_LSR_r3"},
1026     {{mi, r2, r12, ROR, r8}, false, al, "mi r2 r12 ROR r8", "mi_r2_r12_ROR_r8"},
1027     {{eq, r14, r9, ROR, r10},
1028      false,
1029      al,
1030      "eq r14 r9 ROR r10",
1031      "eq_r14_r9_ROR_r10"},
1032     {{le, r8, r13, LSL, r1}, false, al, "le r8 r13 LSL r1", "le_r8_r13_LSL_r1"},
1033     {{ne, r13, r4, ROR, r4}, false, al, "ne r13 r4 ROR r4", "ne_r13_r4_ROR_r4"},
1034     {{ge, r4, r13, ROR, r14},
1035      false,
1036      al,
1037      "ge r4 r13 ROR r14",
1038      "ge_r4_r13_ROR_r14"},
1039     {{vc, r10, r10, LSL, r1},
1040      false,
1041      al,
1042      "vc r10 r10 LSL r1",
1043      "vc_r10_r10_LSL_r1"},
1044     {{gt, r10, r2, ROR, r10},
1045      false,
1046      al,
1047      "gt r10 r2 ROR r10",
1048      "gt_r10_r2_ROR_r10"},
1049     {{eq, r3, r10, ROR, r12},
1050      false,
1051      al,
1052      "eq r3 r10 ROR r12",
1053      "eq_r3_r10_ROR_r12"},
1054     {{pl, r8, r8, ASR, r14}, false, al, "pl r8 r8 ASR r14", "pl_r8_r8_ASR_r14"},
1055     {{hi, r6, r11, LSR, r0}, false, al, "hi r6 r11 LSR r0", "hi_r6_r11_LSR_r0"},
1056     {{pl, r2, r13, LSR, r13},
1057      false,
1058      al,
1059      "pl r2 r13 LSR r13",
1060      "pl_r2_r13_LSR_r13"},
1061     {{cs, r3, r1, ASR, r4}, false, al, "cs r3 r1 ASR r4", "cs_r3_r1_ASR_r4"},
1062     {{ge, r13, r8, ROR, r5}, false, al, "ge r13 r8 ROR r5", "ge_r13_r8_ROR_r5"},
1063     {{ne, r3, r9, ASR, r10}, false, al, "ne r3 r9 ASR r10", "ne_r3_r9_ASR_r10"},
1064     {{cc, r6, r12, ASR, r9}, false, al, "cc r6 r12 ASR r9", "cc_r6_r12_ASR_r9"},
1065     {{cc, r10, r8, LSR, r10},
1066      false,
1067      al,
1068      "cc r10 r8 LSR r10",
1069      "cc_r10_r8_LSR_r10"},
1070     {{vc, r7, r0, ASR, r7}, false, al, "vc r7 r0 ASR r7", "vc_r7_r0_ASR_r7"},
1071     {{lt, r2, r5, LSL, r2}, false, al, "lt r2 r5 LSL r2", "lt_r2_r5_LSL_r2"},
1072     {{gt, r13, r1, ASR, r8}, false, al, "gt r13 r1 ASR r8", "gt_r13_r1_ASR_r8"},
1073     {{hi, r11, r14, LSR, r0},
1074      false,
1075      al,
1076      "hi r11 r14 LSR r0",
1077      "hi_r11_r14_LSR_r0"},
1078     {{ls, r3, r2, LSL, r2}, false, al, "ls r3 r2 LSL r2", "ls_r3_r2_LSL_r2"},
1079     {{mi, r5, r2, ROR, r13}, false, al, "mi r5 r2 ROR r13", "mi_r5_r2_ROR_r13"},
1080     {{ne, r14, r2, ASR, r0}, false, al, "ne r14 r2 ASR r0", "ne_r14_r2_ASR_r0"},
1081     {{pl, r4, r8, LSL, r2}, false, al, "pl r4 r8 LSL r2", "pl_r4_r8_LSL_r2"},
1082     {{ge, r8, r10, LSR, r13},
1083      false,
1084      al,
1085      "ge r8 r10 LSR r13",
1086      "ge_r8_r10_LSR_r13"},
1087     {{mi, r14, r14, ASR, r12},
1088      false,
1089      al,
1090      "mi r14 r14 ASR r12",
1091      "mi_r14_r14_ASR_r12"},
1092     {{ge, r3, r1, LSL, r9}, false, al, "ge r3 r1 LSL r9", "ge_r3_r1_LSL_r9"},
1093     {{mi, r12, r4, ASR, r6}, false, al, "mi r12 r4 ASR r6", "mi_r12_r4_ASR_r6"},
1094     {{le, r1, r4, LSL, r6}, false, al, "le r1 r4 LSL r6", "le_r1_r4_LSL_r6"},
1095     {{ge, r14, r9, ROR, r7}, false, al, "ge r14 r9 ROR r7", "ge_r14_r9_ROR_r7"},
1096     {{gt, r6, r14, LSL, r7}, false, al, "gt r6 r14 LSL r7", "gt_r6_r14_LSL_r7"},
1097     {{vc, r12, r7, ASR, r3}, false, al, "vc r12 r7 ASR r3", "vc_r12_r7_ASR_r3"},
1098     {{ne, r7, r5, ROR, r0}, false, al, "ne r7 r5 ROR r0", "ne_r7_r5_ROR_r0"},
1099     {{ne, r13, r2, ROR, r12},
1100      false,
1101      al,
1102      "ne r13 r2 ROR r12",
1103      "ne_r13_r2_ROR_r12"},
1104     {{cc, r9, r2, ASR, r10}, false, al, "cc r9 r2 ASR r10", "cc_r9_r2_ASR_r10"},
1105     {{ls, r7, r6, LSR, r5}, false, al, "ls r7 r6 LSR r5", "ls_r7_r6_LSR_r5"},
1106     {{gt, r14, r1, ASR, r12},
1107      false,
1108      al,
1109      "gt r14 r1 ASR r12",
1110      "gt_r14_r1_ASR_r12"},
1111     {{vs, r11, r4, ROR, r4}, false, al, "vs r11 r4 ROR r4", "vs_r11_r4_ROR_r4"},
1112     {{le, r13, r13, ROR, r14},
1113      false,
1114      al,
1115      "le r13 r13 ROR r14",
1116      "le_r13_r13_ROR_r14"},
1117     {{eq, r12, r3, LSR, r2}, false, al, "eq r12 r3 LSR r2", "eq_r12_r3_LSR_r2"},
1118     {{vs, r9, r14, LSL, r1}, false, al, "vs r9 r14 LSL r1", "vs_r9_r14_LSL_r1"},
1119     {{le, r8, r9, LSL, r9}, false, al, "le r8 r9 LSL r9", "le_r8_r9_LSL_r9"},
1120     {{ne, r2, r13, ROR, r12},
1121      false,
1122      al,
1123      "ne r2 r13 ROR r12",
1124      "ne_r2_r13_ROR_r12"},
1125     {{eq, r0, r14, ROR, r14},
1126      false,
1127      al,
1128      "eq r0 r14 ROR r14",
1129      "eq_r0_r14_ROR_r14"},
1130     {{cc, r8, r0, ROR, r9}, false, al, "cc r8 r0 ROR r9", "cc_r8_r0_ROR_r9"},
1131     {{gt, r11, r0, LSR, r9}, false, al, "gt r11 r0 LSR r9", "gt_r11_r0_LSR_r9"},
1132     {{vc, r1, r8, LSL, r4}, false, al, "vc r1 r8 LSL r4", "vc_r1_r8_LSL_r4"},
1133     {{ne, r4, r4, ROR, r3}, false, al, "ne r4 r4 ROR r3", "ne_r4_r4_ROR_r3"},
1134     {{cs, r12, r6, LSR, r0}, false, al, "cs r12 r6 LSR r0", "cs_r12_r6_LSR_r0"},
1135     {{pl, r8, r14, ROR, r7}, false, al, "pl r8 r14 ROR r7", "pl_r8_r14_ROR_r7"},
1136     {{hi, r7, r11, LSR, r14},
1137      false,
1138      al,
1139      "hi r7 r11 LSR r14",
1140      "hi_r7_r11_LSR_r14"},
1141     {{vs, r1, r9, ASR, r14}, false, al, "vs r1 r9 ASR r14", "vs_r1_r9_ASR_r14"},
1142     {{ge, r11, r4, LSR, r14},
1143      false,
1144      al,
1145      "ge r11 r4 LSR r14",
1146      "ge_r11_r4_LSR_r14"},
1147     {{gt, r9, r13, LSL, r0}, false, al, "gt r9 r13 LSL r0", "gt_r9_r13_LSL_r0"},
1148     {{cc, r11, r1, LSR, r7}, false, al, "cc r11 r1 LSR r7", "cc_r11_r1_LSR_r7"},
1149     {{al, r14, r7, ROR, r12},
1150      false,
1151      al,
1152      "al r14 r7 ROR r12",
1153      "al_r14_r7_ROR_r12"},
1154     {{vc, r11, r5, ROR, r1}, false, al, "vc r11 r5 ROR r1", "vc_r11_r5_ROR_r1"},
1155     {{eq, r14, r9, ROR, r2}, false, al, "eq r14 r9 ROR r2", "eq_r14_r9_ROR_r2"},
1156     {{eq, r6, r10, LSR, r8}, false, al, "eq r6 r10 LSR r8", "eq_r6_r10_LSR_r8"},
1157     {{cc, r5, r7, LSL, r10}, false, al, "cc r5 r7 LSL r10", "cc_r5_r7_LSL_r10"},
1158     {{vc, r0, r6, ROR, r5}, false, al, "vc r0 r6 ROR r5", "vc_r0_r6_ROR_r5"},
1159     {{ls, r3, r2, ASR, r5}, false, al, "ls r3 r2 ASR r5", "ls_r3_r2_ASR_r5"},
1160     {{eq, r0, r5, LSL, r13}, false, al, "eq r0 r5 LSL r13", "eq_r0_r5_LSL_r13"},
1161     {{hi, r3, r2, ASR, r2}, false, al, "hi r3 r2 ASR r2", "hi_r3_r2_ASR_r2"},
1162     {{vs, r6, r1, ASR, r1}, false, al, "vs r6 r1 ASR r1", "vs_r6_r1_ASR_r1"},
1163     {{al, r7, r6, ASR, r11}, false, al, "al r7 r6 ASR r11", "al_r7_r6_ASR_r11"},
1164     {{al, r0, r7, LSR, r6}, false, al, "al r0 r7 LSR r6", "al_r0_r7_LSR_r6"},
1165     {{vc, r6, r11, LSL, r13},
1166      false,
1167      al,
1168      "vc r6 r11 LSL r13",
1169      "vc_r6_r11_LSL_r13"},
1170     {{mi, r11, r0, LSR, r11},
1171      false,
1172      al,
1173      "mi r11 r0 LSR r11",
1174      "mi_r11_r0_LSR_r11"},
1175     {{ne, r10, r10, ROR, r7},
1176      false,
1177      al,
1178      "ne r10 r10 ROR r7",
1179      "ne_r10_r10_ROR_r7"},
1180     {{eq, r9, r10, ROR, r8}, false, al, "eq r9 r10 ROR r8", "eq_r9_r10_ROR_r8"},
1181     {{vc, r0, r11, ROR, r6}, false, al, "vc r0 r11 ROR r6", "vc_r0_r11_ROR_r6"},
1182     {{eq, r3, r2, LSR, r10}, false, al, "eq r3 r2 LSR r10", "eq_r3_r2_LSR_r10"},
1183     {{gt, r13, r4, LSR, r7}, false, al, "gt r13 r4 LSR r7", "gt_r13_r4_LSR_r7"},
1184     {{lt, r1, r12, LSR, r11},
1185      false,
1186      al,
1187      "lt r1 r12 LSR r11",
1188      "lt_r1_r12_LSR_r11"},
1189     {{cs, r12, r7, LSR, r4}, false, al, "cs r12 r7 LSR r4", "cs_r12_r7_LSR_r4"},
1190     {{cc, r1, r13, ASR, r13},
1191      false,
1192      al,
1193      "cc r1 r13 ASR r13",
1194      "cc_r1_r13_ASR_r13"},
1195     {{mi, r4, r9, LSL, r0}, false, al, "mi r4 r9 LSL r0", "mi_r4_r9_LSL_r0"},
1196     {{gt, r14, r7, ROR, r0}, false, al, "gt r14 r7 ROR r0", "gt_r14_r7_ROR_r0"},
1197     {{gt, r1, r0, ASR, r6}, false, al, "gt r1 r0 ASR r6", "gt_r1_r0_ASR_r6"},
1198     {{ne, r14, r10, ASR, r10},
1199      false,
1200      al,
1201      "ne r14 r10 ASR r10",
1202      "ne_r14_r10_ASR_r10"},
1203     {{pl, r14, r9, LSR, r8}, false, al, "pl r14 r9 LSR r8", "pl_r14_r9_LSR_r8"},
1204     {{vs, r3, r7, LSL, r6}, false, al, "vs r3 r7 LSL r6", "vs_r3_r7_LSL_r6"},
1205     {{lt, r12, r0, LSL, r3}, false, al, "lt r12 r0 LSL r3", "lt_r12_r0_LSL_r3"},
1206     {{hi, r5, r11, ROR, r13},
1207      false,
1208      al,
1209      "hi r5 r11 ROR r13",
1210      "hi_r5_r11_ROR_r13"},
1211     {{vc, r5, r2, LSR, r2}, false, al, "vc r5 r2 LSR r2", "vc_r5_r2_LSR_r2"},
1212     {{le, r13, r8, ROR, r0}, false, al, "le r13 r8 ROR r0", "le_r13_r8_ROR_r0"},
1213     {{cc, r13, r9, LSL, r10},
1214      false,
1215      al,
1216      "cc r13 r9 LSL r10",
1217      "cc_r13_r9_LSL_r10"},
1218     {{ne, r0, r3, ASR, r9}, false, al, "ne r0 r3 ASR r9", "ne_r0_r3_ASR_r9"},
1219     {{mi, r0, r8, ASR, r10}, false, al, "mi r0 r8 ASR r10", "mi_r0_r8_ASR_r10"},
1220     {{cc, r4, r4, ASR, r4}, false, al, "cc r4 r4 ASR r4", "cc_r4_r4_ASR_r4"},
1221     {{vc, r5, r10, LSL, r11},
1222      false,
1223      al,
1224      "vc r5 r10 LSL r11",
1225      "vc_r5_r10_LSL_r11"},
1226     {{gt, r11, r10, ROR, r2},
1227      false,
1228      al,
1229      "gt r11 r10 ROR r2",
1230      "gt_r11_r10_ROR_r2"},
1231     {{ne, r5, r5, LSR, r11}, false, al, "ne r5 r5 LSR r11", "ne_r5_r5_LSR_r11"},
1232     {{ne, r6, r11, LSR, r13},
1233      false,
1234      al,
1235      "ne r6 r11 LSR r13",
1236      "ne_r6_r11_LSR_r13"},
1237     {{lt, r3, r1, ROR, r1}, false, al, "lt r3 r1 ROR r1", "lt_r3_r1_ROR_r1"},
1238     {{cc, r1, r14, ASR, r12},
1239      false,
1240      al,
1241      "cc r1 r14 ASR r12",
1242      "cc_r1_r14_ASR_r12"},
1243     {{mi, r2, r10, ROR, r10},
1244      false,
1245      al,
1246      "mi r2 r10 ROR r10",
1247      "mi_r2_r10_ROR_r10"},
1248     {{eq, r5, r8, ROR, r10}, false, al, "eq r5 r8 ROR r10", "eq_r5_r8_ROR_r10"},
1249     {{al, r3, r9, LSL, r2}, false, al, "al r3 r9 LSL r2", "al_r3_r9_LSL_r2"},
1250     {{cs, r1, r14, LSR, r7}, false, al, "cs r1 r14 LSR r7", "cs_r1_r14_LSR_r7"},
1251     {{cc, r14, r9, ROR, r1}, false, al, "cc r14 r9 ROR r1", "cc_r14_r9_ROR_r1"},
1252     {{al, r3, r8, ROR, r10}, false, al, "al r3 r8 ROR r10", "al_r3_r8_ROR_r10"},
1253     {{vs, r2, r10, ASR, r5}, false, al, "vs r2 r10 ASR r5", "vs_r2_r10_ASR_r5"},
1254     {{al, r7, r8, ROR, r11}, false, al, "al r7 r8 ROR r11", "al_r7_r8_ROR_r11"},
1255     {{cc, r11, r12, ASR, r13},
1256      false,
1257      al,
1258      "cc r11 r12 ASR r13",
1259      "cc_r11_r12_ASR_r13"},
1260     {{cs, r2, r7, LSR, r12}, false, al, "cs r2 r7 LSR r12", "cs_r2_r7_LSR_r12"},
1261     {{vs, r7, r4, ROR, r14}, false, al, "vs r7 r4 ROR r14", "vs_r7_r4_ROR_r14"},
1262     {{ne, r12, r1, ROR, r3}, false, al, "ne r12 r1 ROR r3", "ne_r12_r1_ROR_r3"},
1263     {{ne, r5, r11, LSL, r2}, false, al, "ne r5 r11 LSL r2", "ne_r5_r11_LSL_r2"},
1264     {{cc, r5, r12, ASR, r13},
1265      false,
1266      al,
1267      "cc r5 r12 ASR r13",
1268      "cc_r5_r12_ASR_r13"},
1269     {{gt, r8, r0, LSL, r14}, false, al, "gt r8 r0 LSL r14", "gt_r8_r0_LSL_r14"},
1270     {{cc, r5, r4, LSR, r12}, false, al, "cc r5 r4 LSR r12", "cc_r5_r4_LSR_r12"},
1271     {{ge, r6, r7, LSR, r14}, false, al, "ge r6 r7 LSR r14", "ge_r6_r7_LSR_r14"},
1272     {{vs, r2, r0, LSL, r13}, false, al, "vs r2 r0 LSL r13", "vs_r2_r0_LSL_r13"},
1273     {{gt, r7, r8, LSL, r0}, false, al, "gt r7 r8 LSL r0", "gt_r7_r8_LSL_r0"},
1274     {{ne, r3, r11, ROR, r8}, false, al, "ne r3 r11 ROR r8", "ne_r3_r11_ROR_r8"},
1275     {{ne, r0, r8, LSR, r4}, false, al, "ne r0 r8 LSR r4", "ne_r0_r8_LSR_r4"},
1276     {{eq, r1, r14, ASR, r13},
1277      false,
1278      al,
1279      "eq r1 r14 ASR r13",
1280      "eq_r1_r14_ASR_r13"},
1281     {{pl, r13, r10, LSL, r4},
1282      false,
1283      al,
1284      "pl r13 r10 LSL r4",
1285      "pl_r13_r10_LSL_r4"},
1286     {{mi, r12, r14, LSL, r11},
1287      false,
1288      al,
1289      "mi r12 r14 LSL r11",
1290      "mi_r12_r14_LSL_r11"},
1291     {{vc, r6, r4, LSL, r7}, false, al, "vc r6 r4 LSL r7", "vc_r6_r4_LSL_r7"},
1292     {{ge, r7, r8, LSR, r0}, false, al, "ge r7 r8 LSR r0", "ge_r7_r8_LSR_r0"},
1293     {{ls, r2, r12, LSR, r6}, false, al, "ls r2 r12 LSR r6", "ls_r2_r12_LSR_r6"},
1294     {{lt, r0, r13, LSL, r1}, false, al, "lt r0 r13 LSL r1", "lt_r0_r13_LSL_r1"},
1295     {{vs, r5, r7, LSR, r0}, false, al, "vs r5 r7 LSR r0", "vs_r5_r7_LSR_r0"},
1296     {{ne, r10, r8, ROR, r4}, false, al, "ne r10 r8 ROR r4", "ne_r10_r8_ROR_r4"},
1297     {{vc, r4, r1, LSL, r7}, false, al, "vc r4 r1 LSL r7", "vc_r4_r1_LSL_r7"},
1298     {{mi, r14, r1, ROR, r10},
1299      false,
1300      al,
1301      "mi r14 r1 ROR r10",
1302      "mi_r14_r1_ROR_r10"},
1303     {{le, r4, r5, LSL, r12}, false, al, "le r4 r5 LSL r12", "le_r4_r5_LSL_r12"},
1304     {{cs, r9, r3, ROR, r10}, false, al, "cs r9 r3 ROR r10", "cs_r9_r3_ROR_r10"},
1305     {{al, r5, r9, ROR, r7}, false, al, "al r5 r9 ROR r7", "al_r5_r9_ROR_r7"},
1306     {{cs, r14, r14, ROR, r1},
1307      false,
1308      al,
1309      "cs r14 r14 ROR r1",
1310      "cs_r14_r14_ROR_r1"},
1311     {{vc, r5, r11, LSR, r1}, false, al, "vc r5 r11 LSR r1", "vc_r5_r11_LSR_r1"},
1312     {{hi, r12, r7, ASR, r3}, false, al, "hi r12 r7 ASR r3", "hi_r12_r7_ASR_r3"},
1313     {{gt, r13, r3, LSL, r10},
1314      false,
1315      al,
1316      "gt r13 r3 LSL r10",
1317      "gt_r13_r3_LSL_r10"},
1318     {{pl, r12, r14, ASR, r14},
1319      false,
1320      al,
1321      "pl r12 r14 ASR r14",
1322      "pl_r12_r14_ASR_r14"},
1323     {{al, r3, r1, ROR, r6}, false, al, "al r3 r1 ROR r6", "al_r3_r1_ROR_r6"},
1324     {{le, r13, r2, ROR, r9}, false, al, "le r13 r2 ROR r9", "le_r13_r2_ROR_r9"},
1325     {{cs, r12, r4, LSL, r9}, false, al, "cs r12 r4 LSL r9", "cs_r12_r4_LSL_r9"},
1326     {{gt, r4, r7, ASR, r14}, false, al, "gt r4 r7 ASR r14", "gt_r4_r7_ASR_r14"},
1327     {{vc, r13, r1, ROR, r10},
1328      false,
1329      al,
1330      "vc r13 r1 ROR r10",
1331      "vc_r13_r1_ROR_r10"},
1332     {{ls, r10, r12, LSR, r1},
1333      false,
1334      al,
1335      "ls r10 r12 LSR r1",
1336      "ls_r10_r12_LSR_r1"},
1337     {{hi, r8, r0, LSL, r0}, false, al, "hi r8 r0 LSL r0", "hi_r8_r0_LSL_r0"},
1338     {{al, r4, r9, LSL, r0}, false, al, "al r4 r9 LSL r0", "al_r4_r9_LSL_r0"},
1339     {{eq, r12, r10, LSL, r14},
1340      false,
1341      al,
1342      "eq r12 r10 LSL r14",
1343      "eq_r12_r10_LSL_r14"},
1344     {{le, r4, r9, LSL, r12}, false, al, "le r4 r9 LSL r12", "le_r4_r9_LSL_r12"},
1345     {{cc, r1, r6, ASR, r14}, false, al, "cc r1 r6 ASR r14", "cc_r1_r6_ASR_r14"},
1346     {{pl, r3, r7, ASR, r2}, false, al, "pl r3 r7 ASR r2", "pl_r3_r7_ASR_r2"},
1347     {{eq, r14, r9, ROR, r0}, false, al, "eq r14 r9 ROR r0", "eq_r14_r9_ROR_r0"},
1348     {{hi, r8, r6, LSR, r5}, false, al, "hi r8 r6 LSR r5", "hi_r8_r6_LSR_r5"},
1349     {{hi, r10, r1, LSL, r0}, false, al, "hi r10 r1 LSL r0", "hi_r10_r1_LSL_r0"},
1350     {{ls, r0, r13, LSR, r0}, false, al, "ls r0 r13 LSR r0", "ls_r0_r13_LSR_r0"},
1351     {{vs, r10, r7, ROR, r7}, false, al, "vs r10 r7 ROR r7", "vs_r10_r7_ROR_r7"},
1352     {{eq, r1, r3, LSR, r6}, false, al, "eq r1 r3 LSR r6", "eq_r1_r3_LSR_r6"},
1353     {{eq, r8, r6, ASR, r0}, false, al, "eq r8 r6 ASR r0", "eq_r8_r6_ASR_r0"},
1354     {{eq, r2, r5, LSR, r10}, false, al, "eq r2 r5 LSR r10", "eq_r2_r5_LSR_r10"},
1355     {{al, r0, r4, LSL, r13}, false, al, "al r0 r4 LSL r13", "al_r0_r4_LSL_r13"},
1356     {{ge, r0, r12, ROR, r2}, false, al, "ge r0 r12 ROR r2", "ge_r0_r12_ROR_r2"},
1357     {{le, r0, r13, ROR, r4}, false, al, "le r0 r13 ROR r4", "le_r0_r13_ROR_r4"},
1358     {{ge, r3, r11, ASR, r6}, false, al, "ge r3 r11 ASR r6", "ge_r3_r11_ASR_r6"},
1359     {{ne, r7, r11, ROR, r0}, false, al, "ne r7 r11 ROR r0", "ne_r7_r11_ROR_r0"},
1360     {{hi, r14, r5, ASR, r0}, false, al, "hi r14 r5 ASR r0", "hi_r14_r5_ASR_r0"},
1361     {{cs, r12, r9, LSL, r2}, false, al, "cs r12 r9 LSL r2", "cs_r12_r9_LSL_r2"},
1362     {{cs, r12, r8, ASR, r10},
1363      false,
1364      al,
1365      "cs r12 r8 ASR r10",
1366      "cs_r12_r8_ASR_r10"},
1367     {{cc, r0, r2, LSR, r13}, false, al, "cc r0 r2 LSR r13", "cc_r0_r2_LSR_r13"},
1368     {{cc, r5, r0, LSR, r4}, false, al, "cc r5 r0 LSR r4", "cc_r5_r0_LSR_r4"},
1369     {{ne, r10, r14, ROR, r3},
1370      false,
1371      al,
1372      "ne r10 r14 ROR r3",
1373      "ne_r10_r14_ROR_r3"},
1374     {{hi, r5, r1, LSL, r10}, false, al, "hi r5 r1 LSL r10", "hi_r5_r1_LSL_r10"},
1375     {{lt, r14, r12, LSR, r13},
1376      false,
1377      al,
1378      "lt r14 r12 LSR r13",
1379      "lt_r14_r12_LSR_r13"},
1380     {{hi, r14, r9, LSR, r5}, false, al, "hi r14 r9 LSR r5", "hi_r14_r9_LSR_r5"},
1381     {{cc, r4, r4, LSR, r3}, false, al, "cc r4 r4 LSR r3", "cc_r4_r4_LSR_r3"},
1382     {{hi, r9, r4, ROR, r13}, false, al, "hi r9 r4 ROR r13", "hi_r9_r4_ROR_r13"},
1383     {{cc, r7, r6, ASR, r0}, false, al, "cc r7 r6 ASR r0", "cc_r7_r6_ASR_r0"},
1384     {{ne, r6, r12, ROR, r8}, false, al, "ne r6 r12 ROR r8", "ne_r6_r12_ROR_r8"},
1385     {{cc, r4, r1, LSL, r9}, false, al, "cc r4 r1 LSL r9", "cc_r4_r1_LSL_r9"},
1386     {{ls, r6, r10, LSR, r9}, false, al, "ls r6 r10 LSR r9", "ls_r6_r10_LSR_r9"},
1387     {{ge, r13, r6, ASR, r4}, false, al, "ge r13 r6 ASR r4", "ge_r13_r6_ASR_r4"},
1388     {{pl, r0, r6, ROR, r12}, false, al, "pl r0 r6 ROR r12", "pl_r0_r6_ROR_r12"},
1389     {{eq, r13, r2, LSL, r6}, false, al, "eq r13 r2 LSL r6", "eq_r13_r2_LSL_r6"},
1390     {{vc, r5, r14, LSR, r2}, false, al, "vc r5 r14 LSR r2", "vc_r5_r14_LSR_r2"},
1391     {{ls, r3, r7, LSL, r14}, false, al, "ls r3 r7 LSL r14", "ls_r3_r7_LSL_r14"},
1392     {{le, r13, r7, ROR, r1}, false, al, "le r13 r7 ROR r1", "le_r13_r7_ROR_r1"},
1393     {{ge, r6, r1, ROR, r2}, false, al, "ge r6 r1 ROR r2", "ge_r6_r1_ROR_r2"},
1394     {{le, r5, r13, LSL, r8}, false, al, "le r5 r13 LSL r8", "le_r5_r13_LSL_r8"},
1395     {{eq, r13, r14, ROR, r6},
1396      false,
1397      al,
1398      "eq r13 r14 ROR r6",
1399      "eq_r13_r14_ROR_r6"},
1400     {{vs, r10, r9, ASR, r2}, false, al, "vs r10 r9 ASR r2", "vs_r10_r9_ASR_r2"},
1401     {{ls, r7, r10, LSL, r10},
1402      false,
1403      al,
1404      "ls r7 r10 LSL r10",
1405      "ls_r7_r10_LSL_r10"},
1406     {{mi, r0, r8, LSL, r13}, false, al, "mi r0 r8 LSL r13", "mi_r0_r8_LSL_r13"},
1407     {{cc, r6, r5, ROR, r6}, false, al, "cc r6 r5 ROR r6", "cc_r6_r5_ROR_r6"},
1408     {{cc, r5, r14, ASR, r9}, false, al, "cc r5 r14 ASR r9", "cc_r5_r14_ASR_r9"},
1409     {{ge, r8, r3, ROR, r4}, false, al, "ge r8 r3 ROR r4", "ge_r8_r3_ROR_r4"},
1410     {{ge, r4, r3, ROR, r0}, false, al, "ge r4 r3 ROR r0", "ge_r4_r3_ROR_r0"},
1411     {{lt, r12, r13, ROR, r5},
1412      false,
1413      al,
1414      "lt r12 r13 ROR r5",
1415      "lt_r12_r13_ROR_r5"},
1416     {{cs, r14, r14, LSL, r8},
1417      false,
1418      al,
1419      "cs r14 r14 LSL r8",
1420      "cs_r14_r14_LSL_r8"},
1421     {{mi, r6, r3, ASR, r12}, false, al, "mi r6 r3 ASR r12", "mi_r6_r3_ASR_r12"},
1422     {{gt, r2, r1, ASR, r3}, false, al, "gt r2 r1 ASR r3", "gt_r2_r1_ASR_r3"},
1423     {{vc, r14, r14, LSL, r11},
1424      false,
1425      al,
1426      "vc r14 r14 LSL r11",
1427      "vc_r14_r14_LSL_r11"},
1428     {{pl, r12, r14, ASR, r5},
1429      false,
1430      al,
1431      "pl r12 r14 ASR r5",
1432      "pl_r12_r14_ASR_r5"},
1433     {{cs, r7, r12, LSL, r14},
1434      false,
1435      al,
1436      "cs r7 r12 LSL r14",
1437      "cs_r7_r12_LSL_r14"},
1438     {{eq, r3, r1, LSR, r3}, false, al, "eq r3 r1 LSR r3", "eq_r3_r1_LSR_r3"},
1439     {{cs, r6, r7, ASR, r12}, false, al, "cs r6 r7 ASR r12", "cs_r6_r7_ASR_r12"},
1440     {{le, r6, r4, ROR, r4}, false, al, "le r6 r4 ROR r4", "le_r6_r4_ROR_r4"},
1441     {{hi, r1, r6, LSR, r4}, false, al, "hi r1 r6 LSR r4", "hi_r1_r6_LSR_r4"},
1442     {{mi, r6, r3, ASR, r4}, false, al, "mi r6 r3 ASR r4", "mi_r6_r3_ASR_r4"},
1443     {{vs, r9, r10, ASR, r12},
1444      false,
1445      al,
1446      "vs r9 r10 ASR r12",
1447      "vs_r9_r10_ASR_r12"},
1448     {{cc, r9, r10, LSL, r1}, false, al, "cc r9 r10 LSL r1", "cc_r9_r10_LSL_r1"},
1449     {{ls, r12, r9, ASR, r4}, false, al, "ls r12 r9 ASR r4", "ls_r12_r9_ASR_r4"},
1450     {{vc, r10, r7, ASR, r12},
1451      false,
1452      al,
1453      "vc r10 r7 ASR r12",
1454      "vc_r10_r7_ASR_r12"},
1455     {{cs, r8, r1, LSR, r5}, false, al, "cs r8 r1 LSR r5", "cs_r8_r1_LSR_r5"},
1456     {{eq, r10, r10, ASR, r4},
1457      false,
1458      al,
1459      "eq r10 r10 ASR r4",
1460      "eq_r10_r10_ASR_r4"},
1461     {{ls, r7, r7, LSL, r5}, false, al, "ls r7 r7 LSL r5", "ls_r7_r7_LSL_r5"},
1462     {{vs, r8, r11, ROR, r12},
1463      false,
1464      al,
1465      "vs r8 r11 ROR r12",
1466      "vs_r8_r11_ROR_r12"},
1467     {{vs, r7, r6, ASR, r4}, false, al, "vs r7 r6 ASR r4", "vs_r7_r6_ASR_r4"},
1468     {{ge, r5, r3, LSL, r6}, false, al, "ge r5 r3 LSL r6", "ge_r5_r3_LSL_r6"},
1469     {{vc, r5, r5, LSL, r12}, false, al, "vc r5 r5 LSL r12", "vc_r5_r5_LSL_r12"},
1470     {{le, r0, r13, LSL, r12},
1471      false,
1472      al,
1473      "le r0 r13 LSL r12",
1474      "le_r0_r13_LSL_r12"},
1475     {{ls, r4, r0, ASR, r11}, false, al, "ls r4 r0 ASR r11", "ls_r4_r0_ASR_r11"},
1476     {{ge, r3, r7, ASR, r5}, false, al, "ge r3 r7 ASR r5", "ge_r3_r7_ASR_r5"},
1477     {{ge, r11, r4, ROR, r11},
1478      false,
1479      al,
1480      "ge r11 r4 ROR r11",
1481      "ge_r11_r4_ROR_r11"},
1482     {{al, r6, r7, ROR, r7}, false, al, "al r6 r7 ROR r7", "al_r6_r7_ROR_r7"},
1483     {{gt, r4, r4, LSR, r6}, false, al, "gt r4 r4 LSR r6", "gt_r4_r4_LSR_r6"},
1484     {{pl, r14, r2, LSR, r1}, false, al, "pl r14 r2 LSR r1", "pl_r14_r2_LSR_r1"},
1485     {{le, r10, r9, ROR, r9}, false, al, "le r10 r9 ROR r9", "le_r10_r9_ROR_r9"},
1486     {{ne, r5, r3, ASR, r2}, false, al, "ne r5 r3 ASR r2", "ne_r5_r3_ASR_r2"},
1487     {{lt, r12, r4, LSL, r11},
1488      false,
1489      al,
1490      "lt r12 r4 LSL r11",
1491      "lt_r12_r4_LSL_r11"},
1492     {{mi, r1, r1, LSR, r13}, false, al, "mi r1 r1 LSR r13", "mi_r1_r1_LSR_r13"},
1493     {{hi, r7, r4, ROR, r9}, false, al, "hi r7 r4 ROR r9", "hi_r7_r4_ROR_r9"},
1494     {{lt, r8, r14, LSR, r10},
1495      false,
1496      al,
1497      "lt r8 r14 LSR r10",
1498      "lt_r8_r14_LSR_r10"},
1499     {{ge, r7, r5, ROR, r11}, false, al, "ge r7 r5 ROR r11", "ge_r7_r5_ROR_r11"},
1500     {{ls, r12, r14, LSL, r7},
1501      false,
1502      al,
1503      "ls r12 r14 LSL r7",
1504      "ls_r12_r14_LSL_r7"},
1505     {{hi, r14, r0, LSL, r3}, false, al, "hi r14 r0 LSL r3", "hi_r14_r0_LSL_r3"},
1506     {{ge, r8, r10, ROR, r2}, false, al, "ge r8 r10 ROR r2", "ge_r8_r10_ROR_r2"},
1507     {{hi, r6, r3, LSR, r0}, false, al, "hi r6 r3 LSR r0", "hi_r6_r3_LSR_r0"},
1508     {{ls, r4, r1, ROR, r3}, false, al, "ls r4 r1 ROR r3", "ls_r4_r1_ROR_r3"},
1509     {{ls, r9, r13, ASR, r1}, false, al, "ls r9 r13 ASR r1", "ls_r9_r13_ASR_r1"},
1510     {{lt, r10, r1, LSR, r5}, false, al, "lt r10 r1 LSR r5", "lt_r10_r1_LSR_r5"},
1511     {{vc, r10, r13, ASR, r3},
1512      false,
1513      al,
1514      "vc r10 r13 ASR r3",
1515      "vc_r10_r13_ASR_r3"},
1516     {{gt, r1, r0, LSR, r9}, false, al, "gt r1 r0 LSR r9", "gt_r1_r0_LSR_r9"},
1517     {{vs, r13, r11, LSL, r14},
1518      false,
1519      al,
1520      "vs r13 r11 LSL r14",
1521      "vs_r13_r11_LSL_r14"},
1522     {{eq, r4, r7, LSL, r9}, false, al, "eq r4 r7 LSL r9", "eq_r4_r7_LSL_r9"},
1523     {{lt, r14, r9, LSL, r13},
1524      false,
1525      al,
1526      "lt r14 r9 LSL r13",
1527      "lt_r14_r9_LSL_r13"},
1528     {{le, r8, r8, ASR, r0}, false, al, "le r8 r8 ASR r0", "le_r8_r8_ASR_r0"},
1529     {{vs, r14, r9, LSR, r3}, false, al, "vs r14 r9 LSR r3", "vs_r14_r9_LSR_r3"},
1530     {{al, r10, r6, ROR, r13},
1531      false,
1532      al,
1533      "al r10 r6 ROR r13",
1534      "al_r10_r6_ROR_r13"},
1535     {{vs, r5, r2, ROR, r7}, false, al, "vs r5 r2 ROR r7", "vs_r5_r2_ROR_r7"},
1536     {{vs, r14, r12, ROR, r14},
1537      false,
1538      al,
1539      "vs r14 r12 ROR r14",
1540      "vs_r14_r12_ROR_r14"},
1541     {{lt, r11, r2, ASR, r0}, false, al, "lt r11 r2 ASR r0", "lt_r11_r2_ASR_r0"},
1542     {{vc, r3, r2, LSL, r9}, false, al, "vc r3 r2 LSL r9", "vc_r3_r2_LSL_r9"},
1543     {{hi, r14, r4, LSL, r2}, false, al, "hi r14 r4 LSL r2", "hi_r14_r4_LSL_r2"},
1544     {{gt, r8, r9, ASR, r0}, false, al, "gt r8 r9 ASR r0", "gt_r8_r9_ASR_r0"},
1545     {{gt, r4, r4, LSL, r11}, false, al, "gt r4 r4 LSL r11", "gt_r4_r4_LSL_r11"},
1546     {{cc, r5, r14, LSL, r9}, false, al, "cc r5 r14 LSL r9", "cc_r5_r14_LSL_r9"},
1547     {{lt, r10, r10, ASR, r5},
1548      false,
1549      al,
1550      "lt r10 r10 ASR r5",
1551      "lt_r10_r10_ASR_r5"},
1552     {{eq, r1, r12, LSR, r7}, false, al, "eq r1 r12 LSR r7", "eq_r1_r12_LSR_r7"},
1553     {{eq, r11, r9, ROR, r7}, false, al, "eq r11 r9 ROR r7", "eq_r11_r9_ROR_r7"},
1554     {{gt, r5, r7, ASR, r6}, false, al, "gt r5 r7 ASR r6", "gt_r5_r7_ASR_r6"},
1555     {{cc, r7, r2, LSL, r13}, false, al, "cc r7 r2 LSL r13", "cc_r7_r2_LSL_r13"},
1556     {{cs, r12, r12, LSL, r4},
1557      false,
1558      al,
1559      "cs r12 r12 LSL r4",
1560      "cs_r12_r12_LSL_r4"},
1561     {{ls, r4, r4, ROR, r7}, false, al, "ls r4 r4 ROR r7", "ls_r4_r4_ROR_r7"},
1562     {{al, r13, r8, ASR, r10},
1563      false,
1564      al,
1565      "al r13 r8 ASR r10",
1566      "al_r13_r8_ASR_r10"},
1567     {{cs, r1, r0, ASR, r1}, false, al, "cs r1 r0 ASR r1", "cs_r1_r0_ASR_r1"},
1568     {{ne, r6, r7, LSL, r0}, false, al, "ne r6 r7 LSL r0", "ne_r6_r7_LSL_r0"},
1569     {{cc, r5, r13, LSR, r9}, false, al, "cc r5 r13 LSR r9", "cc_r5_r13_LSR_r9"},
1570     {{cc, r9, r6, LSL, r14}, false, al, "cc r9 r6 LSL r14", "cc_r9_r6_LSL_r14"},
1571     {{al, r12, r13, ASR, r2},
1572      false,
1573      al,
1574      "al r12 r13 ASR r2",
1575      "al_r12_r13_ASR_r2"},
1576     {{gt, r0, r6, LSR, r6}, false, al, "gt r0 r6 LSR r6", "gt_r0_r6_LSR_r6"},
1577     {{al, r6, r10, ROR, r10},
1578      false,
1579      al,
1580      "al r6 r10 ROR r10",
1581      "al_r6_r10_ROR_r10"},
1582     {{lt, r4, r13, LSL, r6}, false, al, "lt r4 r13 LSL r6", "lt_r4_r13_LSL_r6"},
1583     {{hi, r12, r0, LSL, r10},
1584      false,
1585      al,
1586      "hi r12 r0 LSL r10",
1587      "hi_r12_r0_LSL_r10"},
1588     {{ge, r5, r9, ROR, r11}, false, al, "ge r5 r9 ROR r11", "ge_r5_r9_ROR_r11"},
1589     {{ge, r4, r5, ASR, r10}, false, al, "ge r4 r5 ASR r10", "ge_r4_r5_ASR_r10"},
1590     {{al, r0, r5, LSL, r11}, false, al, "al r0 r5 LSL r11", "al_r0_r5_LSL_r11"},
1591     {{mi, r6, r3, LSR, r8}, false, al, "mi r6 r3 LSR r8", "mi_r6_r3_LSR_r8"},
1592     {{gt, r2, r6, LSR, r6}, false, al, "gt r2 r6 LSR r6", "gt_r2_r6_LSR_r6"},
1593     {{le, r7, r3, ROR, r10}, false, al, "le r7 r3 ROR r10", "le_r7_r3_ROR_r10"},
1594     {{vs, r8, r5, LSR, r13}, false, al, "vs r8 r5 LSR r13", "vs_r8_r5_LSR_r13"},
1595     {{al, r10, r7, ASR, r14},
1596      false,
1597      al,
1598      "al r10 r7 ASR r14",
1599      "al_r10_r7_ASR_r14"},
1600     {{lt, r10, r11, LSL, r5},
1601      false,
1602      al,
1603      "lt r10 r11 LSL r5",
1604      "lt_r10_r11_LSL_r5"},
1605     {{lt, r11, r3, LSR, r4}, false, al, "lt r11 r3 LSR r4", "lt_r11_r3_LSR_r4"},
1606     {{vc, r11, r10, LSR, r8},
1607      false,
1608      al,
1609      "vc r11 r10 LSR r8",
1610      "vc_r11_r10_LSR_r8"},
1611     {{cs, r11, r5, LSL, r9}, false, al, "cs r11 r5 LSL r9", "cs_r11_r5_LSL_r9"},
1612     {{cs, r6, r5, LSR, r7}, false, al, "cs r6 r5 LSR r7", "cs_r6_r5_LSR_r7"},
1613     {{lt, r7, r7, ASR, r1}, false, al, "lt r7 r7 ASR r1", "lt_r7_r7_ASR_r1"},
1614     {{cc, r7, r4, ROR, r7}, false, al, "cc r7 r4 ROR r7", "cc_r7_r4_ROR_r7"},
1615     {{ls, r8, r12, LSR, r9}, false, al, "ls r8 r12 LSR r9", "ls_r8_r12_LSR_r9"},
1616     {{le, r5, r13, ROR, r11},
1617      false,
1618      al,
1619      "le r5 r13 ROR r11",
1620      "le_r5_r13_ROR_r11"},
1621     {{eq, r4, r5, ROR, r12}, false, al, "eq r4 r5 ROR r12", "eq_r4_r5_ROR_r12"},
1622     {{ls, r0, r0, LSL, r1}, false, al, "ls r0 r0 LSL r1", "ls_r0_r0_LSL_r1"},
1623     {{ge, r7, r2, ROR, r9}, false, al, "ge r7 r2 ROR r9", "ge_r7_r2_ROR_r9"},
1624     {{cc, r5, r6, LSR, r12}, false, al, "cc r5 r6 LSR r12", "cc_r5_r6_LSR_r12"},
1625     {{cs, r7, r4, ASR, r10}, false, al, "cs r7 r4 ASR r10", "cs_r7_r4_ASR_r10"},
1626     {{al, r5, r4, ROR, r14}, false, al, "al r5 r4 ROR r14", "al_r5_r4_ROR_r14"},
1627     {{eq, r7, r3, ROR, r12}, false, al, "eq r7 r3 ROR r12", "eq_r7_r3_ROR_r12"},
1628     {{cc, r9, r4, LSL, r14}, false, al, "cc r9 r4 LSL r14", "cc_r9_r4_LSL_r14"},
1629     {{le, r5, r2, ASR, r13}, false, al, "le r5 r2 ASR r13", "le_r5_r2_ASR_r13"},
1630     {{eq, r14, r12, ROR, r4},
1631      false,
1632      al,
1633      "eq r14 r12 ROR r4",
1634      "eq_r14_r12_ROR_r4"},
1635     {{eq, r5, r2, ASR, r8}, false, al, "eq r5 r2 ASR r8", "eq_r5_r2_ASR_r8"},
1636     {{gt, r12, r5, LSR, r7}, false, al, "gt r12 r5 LSR r7", "gt_r12_r5_LSR_r7"},
1637     {{cc, r11, r14, ROR, r1},
1638      false,
1639      al,
1640      "cc r11 r14 ROR r1",
1641      "cc_r11_r14_ROR_r1"},
1642     {{ge, r0, r11, LSL, r9}, false, al, "ge r0 r11 LSL r9", "ge_r0_r11_LSL_r9"},
1643     {{ls, r4, r4, ROR, r0}, false, al, "ls r4 r4 ROR r0", "ls_r4_r4_ROR_r0"},
1644     {{cs, r7, r9, ROR, r10}, false, al, "cs r7 r9 ROR r10", "cs_r7_r9_ROR_r10"},
1645     {{le, r9, r4, LSR, r5}, false, al, "le r9 r4 LSR r5", "le_r9_r4_LSR_r5"},
1646     {{ls, r1, r4, LSL, r10}, false, al, "ls r1 r4 LSL r10", "ls_r1_r4_LSL_r10"},
1647     {{lt, r9, r13, LSL, r2}, false, al, "lt r9 r13 LSL r2", "lt_r9_r13_LSL_r2"},
1648     {{vs, r13, r6, ROR, r13},
1649      false,
1650      al,
1651      "vs r13 r6 ROR r13",
1652      "vs_r13_r6_ROR_r13"},
1653     {{cs, r4, r0, LSL, r9}, false, al, "cs r4 r0 LSL r9", "cs_r4_r0_LSL_r9"},
1654     {{le, r8, r13, LSR, r14},
1655      false,
1656      al,
1657      "le r8 r13 LSR r14",
1658      "le_r8_r13_LSR_r14"},
1659     {{al, r9, r7, LSL, r10}, false, al, "al r9 r7 LSL r10", "al_r9_r7_LSL_r10"},
1660     {{mi, r6, r8, LSL, r2}, false, al, "mi r6 r8 LSL r2", "mi_r6_r8_LSL_r2"},
1661     {{ne, r6, r5, ASR, r5}, false, al, "ne r6 r5 ASR r5", "ne_r6_r5_ASR_r5"},
1662     {{ls, r1, r8, LSR, r12}, false, al, "ls r1 r8 LSR r12", "ls_r1_r8_LSR_r12"},
1663     {{cs, r9, r7, LSL, r10}, false, al, "cs r9 r7 LSL r10", "cs_r9_r7_LSL_r10"},
1664     {{cc, r3, r0, ROR, r2}, false, al, "cc r3 r0 ROR r2", "cc_r3_r0_ROR_r2"},
1665     {{vc, r5, r6, ASR, r11}, false, al, "vc r5 r6 ASR r11", "vc_r5_r6_ASR_r11"},
1666     {{le, r11, r9, ROR, r10},
1667      false,
1668      al,
1669      "le r11 r9 ROR r10",
1670      "le_r11_r9_ROR_r10"},
1671     {{gt, r4, r10, ROR, r13},
1672      false,
1673      al,
1674      "gt r4 r10 ROR r13",
1675      "gt_r4_r10_ROR_r13"},
1676     {{lt, r13, r14, LSL, r11},
1677      false,
1678      al,
1679      "lt r13 r14 LSL r11",
1680      "lt_r13_r14_LSL_r11"},
1681     {{ls, r10, r8, LSL, r11},
1682      false,
1683      al,
1684      "ls r10 r8 LSL r11",
1685      "ls_r10_r8_LSL_r11"},
1686     {{gt, r7, r9, ROR, r12}, false, al, "gt r7 r9 ROR r12", "gt_r7_r9_ROR_r12"},
1687     {{le, r11, r8, LSR, r0}, false, al, "le r11 r8 LSR r0", "le_r11_r8_LSR_r0"},
1688     {{vs, r3, r1, LSR, r3}, false, al, "vs r3 r1 LSR r3", "vs_r3_r1_LSR_r3"},
1689     {{cs, r14, r13, ROR, r5},
1690      false,
1691      al,
1692      "cs r14 r13 ROR r5",
1693      "cs_r14_r13_ROR_r5"},
1694     {{pl, r1, r0, LSL, r6}, false, al, "pl r1 r0 LSL r6", "pl_r1_r0_LSL_r6"},
1695     {{hi, r13, r8, ROR, r12},
1696      false,
1697      al,
1698      "hi r13 r8 ROR r12",
1699      "hi_r13_r8_ROR_r12"},
1700     {{vc, r6, r7, LSR, r0}, false, al, "vc r6 r7 LSR r0", "vc_r6_r7_LSR_r0"},
1701     {{gt, r4, r10, LSL, r4}, false, al, "gt r4 r10 LSL r4", "gt_r4_r10_LSL_r4"},
1702     {{ge, r4, r12, LSR, r7}, false, al, "ge r4 r12 LSR r7", "ge_r4_r12_LSR_r7"},
1703     {{pl, r1, r8, LSR, r3}, false, al, "pl r1 r8 LSR r3", "pl_r1_r8_LSR_r3"},
1704     {{hi, r0, r0, ASR, r7}, false, al, "hi r0 r0 ASR r7", "hi_r0_r0_ASR_r7"},
1705     {{cs, r0, r7, ROR, r12}, false, al, "cs r0 r7 ROR r12", "cs_r0_r7_ROR_r12"},
1706     {{eq, r10, r9, LSR, r0}, false, al, "eq r10 r9 LSR r0", "eq_r10_r9_LSR_r0"},
1707     {{cc, r5, r10, ROR, r10},
1708      false,
1709      al,
1710      "cc r5 r10 ROR r10",
1711      "cc_r5_r10_ROR_r10"},
1712     {{cs, r0, r14, ROR, r8}, false, al, "cs r0 r14 ROR r8", "cs_r0_r14_ROR_r8"},
1713     {{eq, r14, r11, LSR, r5},
1714      false,
1715      al,
1716      "eq r14 r11 LSR r5",
1717      "eq_r14_r11_LSR_r5"},
1718     {{le, r14, r4, LSR, r12},
1719      false,
1720      al,
1721      "le r14 r4 LSR r12",
1722      "le_r14_r4_LSR_r12"},
1723     {{lt, r10, r8, LSL, r10},
1724      false,
1725      al,
1726      "lt r10 r8 LSL r10",
1727      "lt_r10_r8_LSL_r10"},
1728     {{le, r13, r4, LSR, r0}, false, al, "le r13 r4 LSR r0", "le_r13_r4_LSR_r0"},
1729     {{vc, r9, r9, LSL, r14}, false, al, "vc r9 r9 LSL r14", "vc_r9_r9_LSL_r14"},
1730     {{vs, r1, r2, LSR, r7}, false, al, "vs r1 r2 LSR r7", "vs_r1_r2_LSR_r7"},
1731     {{al, r14, r4, ROR, r4}, false, al, "al r14 r4 ROR r4", "al_r14_r4_ROR_r4"},
1732     {{vs, r10, r6, ROR, r10},
1733      false,
1734      al,
1735      "vs r10 r6 ROR r10",
1736      "vs_r10_r6_ROR_r10"},
1737     {{cc, r11, r13, LSL, r11},
1738      false,
1739      al,
1740      "cc r11 r13 LSL r11",
1741      "cc_r11_r13_LSL_r11"},
1742     {{lt, r4, r9, ROR, r2}, false, al, "lt r4 r9 ROR r2", "lt_r4_r9_ROR_r2"},
1743     {{gt, r4, r12, ASR, r8}, false, al, "gt r4 r12 ASR r8", "gt_r4_r12_ASR_r8"},
1744     {{hi, r3, r6, LSR, r14}, false, al, "hi r3 r6 LSR r14", "hi_r3_r6_LSR_r14"},
1745     {{vs, r11, r6, LSL, r5}, false, al, "vs r11 r6 LSL r5", "vs_r11_r6_LSL_r5"},
1746     {{ne, r14, r12, LSR, r9},
1747      false,
1748      al,
1749      "ne r14 r12 LSR r9",
1750      "ne_r14_r12_LSR_r9"},
1751     {{cc, r12, r5, ROR, r0}, false, al, "cc r12 r5 ROR r0", "cc_r12_r5_ROR_r0"},
1752     {{al, r11, r1, ASR, r14},
1753      false,
1754      al,
1755      "al r11 r1 ASR r14",
1756      "al_r11_r1_ASR_r14"},
1757     {{ge, r9, r1, LSR, r12}, false, al, "ge r9 r1 LSR r12", "ge_r9_r1_LSR_r12"},
1758     {{pl, r12, r1, LSR, r11},
1759      false,
1760      al,
1761      "pl r12 r1 LSR r11",
1762      "pl_r12_r1_LSR_r11"},
1763     {{pl, r0, r1, ROR, r4}, false, al, "pl r0 r1 ROR r4", "pl_r0_r1_ROR_r4"},
1764     {{mi, r10, r12, ROR, r10},
1765      false,
1766      al,
1767      "mi r10 r12 ROR r10",
1768      "mi_r10_r12_ROR_r10"},
1769     {{cs, r4, r5, ASR, r0}, false, al, "cs r4 r5 ASR r0", "cs_r4_r5_ASR_r0"},
1770     {{lt, r6, r3, ASR, r11}, false, al, "lt r6 r3 ASR r11", "lt_r6_r3_ASR_r11"},
1771     {{cs, r5, r13, ASR, r6}, false, al, "cs r5 r13 ASR r6", "cs_r5_r13_ASR_r6"},
1772     {{vs, r10, r3, LSR, r10},
1773      false,
1774      al,
1775      "vs r10 r3 LSR r10",
1776      "vs_r10_r3_LSR_r10"},
1777     {{vc, r5, r12, LSR, r8}, false, al, "vc r5 r12 LSR r8", "vc_r5_r12_LSR_r8"},
1778     {{al, r3, r10, ROR, r8}, false, al, "al r3 r10 ROR r8", "al_r3_r10_ROR_r8"},
1779     {{vc, r11, r4, ASR, r0}, false, al, "vc r11 r4 ASR r0", "vc_r11_r4_ASR_r0"},
1780     {{ge, r10, r1, LSL, r11},
1781      false,
1782      al,
1783      "ge r10 r1 LSL r11",
1784      "ge_r10_r1_LSL_r11"},
1785     {{eq, r1, r3, LSR, r8}, false, al, "eq r1 r3 LSR r8", "eq_r1_r3_LSR_r8"},
1786     {{vc, r14, r4, LSL, r9}, false, al, "vc r14 r4 LSL r9", "vc_r14_r4_LSL_r9"},
1787     {{gt, r2, r0, ROR, r3}, false, al, "gt r2 r0 ROR r3", "gt_r2_r0_ROR_r3"},
1788     {{mi, r10, r3, LSR, r4}, false, al, "mi r10 r3 LSR r4", "mi_r10_r3_LSR_r4"},
1789     {{vs, r7, r9, ROR, r13}, false, al, "vs r7 r9 ROR r13", "vs_r7_r9_ROR_r13"},
1790     {{eq, r4, r3, LSR, r1}, false, al, "eq r4 r3 LSR r1", "eq_r4_r3_LSR_r1"},
1791     {{mi, r7, r0, LSL, r0}, false, al, "mi r7 r0 LSL r0", "mi_r7_r0_LSL_r0"},
1792     {{ls, r11, r6, LSR, r11},
1793      false,
1794      al,
1795      "ls r11 r6 LSR r11",
1796      "ls_r11_r6_LSR_r11"},
1797     {{al, r8, r4, LSL, r12}, false, al, "al r8 r4 LSL r12", "al_r8_r4_LSL_r12"},
1798     {{pl, r7, r13, LSR, r8}, false, al, "pl r7 r13 LSR r8", "pl_r7_r13_LSR_r8"},
1799     {{eq, r4, r4, LSR, r13}, false, al, "eq r4 r4 LSR r13", "eq_r4_r4_LSR_r13"},
1800     {{eq, r3, r4, ROR, r6}, false, al, "eq r3 r4 ROR r6", "eq_r3_r4_ROR_r6"},
1801     {{ne, r8, r11, LSR, r14},
1802      false,
1803      al,
1804      "ne r8 r11 LSR r14",
1805      "ne_r8_r11_LSR_r14"},
1806     {{ge, r12, r7, LSL, r1}, false, al, "ge r12 r7 LSL r1", "ge_r12_r7_LSL_r1"},
1807     {{gt, r12, r7, LSL, r14},
1808      false,
1809      al,
1810      "gt r12 r7 LSL r14",
1811      "gt_r12_r7_LSL_r14"},
1812     {{ne, r14, r13, LSR, r2},
1813      false,
1814      al,
1815      "ne r14 r13 LSR r2",
1816      "ne_r14_r13_LSR_r2"},
1817     {{ne, r14, r2, LSR, r14},
1818      false,
1819      al,
1820      "ne r14 r2 LSR r14",
1821      "ne_r14_r2_LSR_r14"},
1822     {{vs, r14, r5, ROR, r1}, false, al, "vs r14 r5 ROR r1", "vs_r14_r5_ROR_r1"},
1823     {{ne, r2, r6, ROR, r4}, false, al, "ne r2 r6 ROR r4", "ne_r2_r6_ROR_r4"},
1824     {{lt, r4, r11, ROR, r13},
1825      false,
1826      al,
1827      "lt r4 r11 ROR r13",
1828      "lt_r4_r11_ROR_r13"},
1829     {{pl, r9, r3, ASR, r2}, false, al, "pl r9 r3 ASR r2", "pl_r9_r3_ASR_r2"},
1830     {{cs, r5, r5, LSR, r2}, false, al, "cs r5 r5 LSR r2", "cs_r5_r5_LSR_r2"},
1831     {{cc, r3, r1, ASR, r5}, false, al, "cc r3 r1 ASR r5", "cc_r3_r1_ASR_r5"},
1832     {{ne, r0, r10, LSL, r1}, false, al, "ne r0 r10 LSL r1", "ne_r0_r10_LSL_r1"},
1833     {{pl, r5, r9, LSR, r0}, false, al, "pl r5 r9 LSR r0", "pl_r5_r9_LSR_r0"},
1834     {{gt, r11, r7, LSL, r11},
1835      false,
1836      al,
1837      "gt r11 r7 LSL r11",
1838      "gt_r11_r7_LSL_r11"},
1839     {{al, r5, r13, LSR, r0}, false, al, "al r5 r13 LSR r0", "al_r5_r13_LSR_r0"},
1840     {{al, r0, r6, ROR, r9}, false, al, "al r0 r6 ROR r9", "al_r0_r6_ROR_r9"},
1841     {{cc, r1, r1, LSR, r11}, false, al, "cc r1 r1 LSR r11", "cc_r1_r1_LSR_r11"},
1842     {{cs, r5, r5, ASR, r3}, false, al, "cs r5 r5 ASR r3", "cs_r5_r5_ASR_r3"},
1843     {{lt, r4, r5, ASR, r3}, false, al, "lt r4 r5 ASR r3", "lt_r4_r5_ASR_r3"},
1844     {{mi, r2, r5, LSL, r5}, false, al, "mi r2 r5 LSL r5", "mi_r2_r5_LSL_r5"},
1845     {{al, r5, r3, ASR, r1}, false, al, "al r5 r3 ASR r1", "al_r5_r3_ASR_r1"},
1846     {{gt, r8, r2, LSR, r3}, false, al, "gt r8 r2 LSR r3", "gt_r8_r2_LSR_r3"},
1847     {{ne, r5, r0, ASR, r3}, false, al, "ne r5 r0 ASR r3", "ne_r5_r0_ASR_r3"},
1848     {{ge, r12, r14, LSR, r6},
1849      false,
1850      al,
1851      "ge r12 r14 LSR r6",
1852      "ge_r12_r14_LSR_r6"},
1853     {{al, r13, r7, ASR, r10},
1854      false,
1855      al,
1856      "al r13 r7 ASR r10",
1857      "al_r13_r7_ASR_r10"},
1858     {{vs, r5, r12, ASR, r3}, false, al, "vs r5 r12 ASR r3", "vs_r5_r12_ASR_r3"},
1859     {{vc, r10, r10, ROR, r8},
1860      false,
1861      al,
1862      "vc r10 r10 ROR r8",
1863      "vc_r10_r10_ROR_r8"},
1864     {{vc, r4, r4, ASR, r4}, false, al, "vc r4 r4 ASR r4", "vc_r4_r4_ASR_r4"},
1865     {{hi, r1, r1, LSR, r3}, false, al, "hi r1 r1 LSR r3", "hi_r1_r1_LSR_r3"},
1866     {{ge, r14, r8, LSR, r8}, false, al, "ge r14 r8 LSR r8", "ge_r14_r8_LSR_r8"},
1867     {{le, r5, r5, LSL, r1}, false, al, "le r5 r5 LSL r1", "le_r5_r5_LSL_r1"},
1868     {{vc, r2, r8, LSL, r8}, false, al, "vc r2 r8 LSL r8", "vc_r2_r8_LSL_r8"},
1869     {{hi, r0, r6, LSL, r5}, false, al, "hi r0 r6 LSL r5", "hi_r0_r6_LSL_r5"},
1870     {{le, r8, r7, LSR, r3}, false, al, "le r8 r7 LSR r3", "le_r8_r7_LSR_r3"},
1871     {{cc, r10, r4, LSR, r4}, false, al, "cc r10 r4 LSR r4", "cc_r10_r4_LSR_r4"},
1872     {{cc, r5, r9, LSL, r7}, false, al, "cc r5 r9 LSL r7", "cc_r5_r9_LSL_r7"},
1873     {{lt, r1, r14, ROR, r13},
1874      false,
1875      al,
1876      "lt r1 r14 ROR r13",
1877      "lt_r1_r14_ROR_r13"},
1878     {{mi, r9, r9, ROR, r10}, false, al, "mi r9 r9 ROR r10", "mi_r9_r9_ROR_r10"},
1879     {{cc, r0, r5, ROR, r7}, false, al, "cc r0 r5 ROR r7", "cc_r0_r5_ROR_r7"},
1880     {{vs, r6, r5, LSR, r10}, false, al, "vs r6 r5 LSR r10", "vs_r6_r5_LSR_r10"},
1881     {{pl, r14, r13, ASR, r4},
1882      false,
1883      al,
1884      "pl r14 r13 ASR r4",
1885      "pl_r14_r13_ASR_r4"},
1886     {{ne, r7, r9, LSL, r11}, false, al, "ne r7 r9 LSL r11", "ne_r7_r9_LSL_r11"},
1887     {{ne, r13, r3, ROR, r9}, false, al, "ne r13 r3 ROR r9", "ne_r13_r3_ROR_r9"},
1888     {{mi, r6, r13, ROR, r5}, false, al, "mi r6 r13 ROR r5", "mi_r6_r13_ROR_r5"},
1889     {{vc, r10, r0, ASR, r6}, false, al, "vc r10 r0 ASR r6", "vc_r10_r0_ASR_r6"},
1890     {{ge, r5, r4, LSR, r12}, false, al, "ge r5 r4 LSR r12", "ge_r5_r4_LSR_r12"},
1891     {{vc, r10, r3, LSR, r8}, false, al, "vc r10 r3 LSR r8", "vc_r10_r3_LSR_r8"},
1892     {{hi, r8, r1, LSR, r7}, false, al, "hi r8 r1 LSR r7", "hi_r8_r1_LSR_r7"},
1893     {{al, r3, r6, ASR, r11}, false, al, "al r3 r6 ASR r11", "al_r3_r6_ASR_r11"},
1894     {{cc, r1, r5, ASR, r0}, false, al, "cc r1 r5 ASR r0", "cc_r1_r5_ASR_r0"},
1895     {{mi, r11, r3, LSR, r8}, false, al, "mi r11 r3 LSR r8", "mi_r11_r3_LSR_r8"},
1896     {{gt, r4, r8, ASR, r12}, false, al, "gt r4 r8 ASR r12", "gt_r4_r8_ASR_r12"},
1897     {{hi, r0, r8, ROR, r10}, false, al, "hi r0 r8 ROR r10", "hi_r0_r8_ROR_r10"},
1898     {{gt, r14, r8, LSR, r9}, false, al, "gt r14 r8 LSR r9", "gt_r14_r8_LSR_r9"},
1899     {{pl, r14, r13, LSR, r9},
1900      false,
1901      al,
1902      "pl r14 r13 LSR r9",
1903      "pl_r14_r13_LSR_r9"},
1904     {{cs, r11, r0, LSR, r8}, false, al, "cs r11 r0 LSR r8", "cs_r11_r0_LSR_r8"},
1905     {{cs, r10, r3, LSR, r4}, false, al, "cs r10 r3 LSR r4", "cs_r10_r3_LSR_r4"},
1906     {{ge, r9, r0, ASR, r3}, false, al, "ge r9 r0 ASR r3", "ge_r9_r0_ASR_r3"},
1907     {{eq, r12, r14, LSL, r9},
1908      false,
1909      al,
1910      "eq r12 r14 LSL r9",
1911      "eq_r12_r14_LSL_r9"},
1912     {{eq, r2, r11, ASR, r8}, false, al, "eq r2 r11 ASR r8", "eq_r2_r11_ASR_r8"},
1913     {{le, r9, r12, ASR, r4}, false, al, "le r9 r12 ASR r4", "le_r9_r12_ASR_r4"},
1914     {{lt, r6, r12, LSL, r0}, false, al, "lt r6 r12 LSL r0", "lt_r6_r12_LSL_r0"},
1915     {{vc, r14, r4, ROR, r6}, false, al, "vc r14 r4 ROR r6", "vc_r14_r4_ROR_r6"},
1916     {{hi, r6, r1, LSL, r8}, false, al, "hi r6 r1 LSL r8", "hi_r6_r1_LSL_r8"},
1917     {{le, r10, r12, ROR, r14},
1918      false,
1919      al,
1920      "le r10 r12 ROR r14",
1921      "le_r10_r12_ROR_r14"},
1922     {{ls, r9, r1, ROR, r5}, false, al, "ls r9 r1 ROR r5", "ls_r9_r1_ROR_r5"},
1923     {{mi, r3, r5, LSL, r9}, false, al, "mi r3 r5 LSL r9", "mi_r3_r5_LSL_r9"},
1924     {{hi, r5, r4, LSR, r10}, false, al, "hi r5 r4 LSR r10", "hi_r5_r4_LSR_r10"},
1925     {{ge, r2, r5, LSR, r9}, false, al, "ge r2 r5 LSR r9", "ge_r2_r5_LSR_r9"},
1926     {{ge, r11, r14, LSL, r9},
1927      false,
1928      al,
1929      "ge r11 r14 LSL r9",
1930      "ge_r11_r14_LSL_r9"},
1931     {{vc, r7, r2, LSR, r6}, false, al, "vc r7 r2 LSR r6", "vc_r7_r2_LSR_r6"},
1932     {{ls, r12, r1, ASR, r6}, false, al, "ls r12 r1 ASR r6", "ls_r12_r1_ASR_r6"},
1933     {{cs, r3, r2, ROR, r4}, false, al, "cs r3 r2 ROR r4", "cs_r3_r2_ROR_r4"},
1934     {{lt, r13, r14, ROR, r7},
1935      false,
1936      al,
1937      "lt r13 r14 ROR r7",
1938      "lt_r13_r14_ROR_r7"},
1939     {{le, r13, r9, LSR, r2}, false, al, "le r13 r9 LSR r2", "le_r13_r9_LSR_r2"},
1940     {{ls, r0, r4, LSL, r8}, false, al, "ls r0 r4 LSL r8", "ls_r0_r4_LSL_r8"},
1941     {{pl, r14, r5, ROR, r5}, false, al, "pl r14 r5 ROR r5", "pl_r14_r5_ROR_r5"},
1942     {{le, r7, r8, ASR, r13}, false, al, "le r7 r8 ASR r13", "le_r7_r8_ASR_r13"},
1943     {{vc, r4, r5, ASR, r5}, false, al, "vc r4 r5 ASR r5", "vc_r4_r5_ASR_r5"},
1944     {{gt, r14, r2, ROR, r3}, false, al, "gt r14 r2 ROR r3", "gt_r14_r2_ROR_r3"},
1945     {{eq, r13, r12, LSL, r5},
1946      false,
1947      al,
1948      "eq r13 r12 LSL r5",
1949      "eq_r13_r12_LSL_r5"},
1950     {{pl, r5, r12, LSR, r2}, false, al, "pl r5 r12 LSR r2", "pl_r5_r12_LSR_r2"},
1951     {{cc, r4, r13, ROR, r14},
1952      false,
1953      al,
1954      "cc r4 r13 ROR r14",
1955      "cc_r4_r13_ROR_r14"},
1956     {{ne, r10, r9, LSL, r9}, false, al, "ne r10 r9 LSL r9", "ne_r10_r9_LSL_r9"},
1957     {{eq, r1, r1, ROR, r14}, false, al, "eq r1 r1 ROR r14", "eq_r1_r1_ROR_r14"},
1958     {{eq, r13, r0, LSL, r13},
1959      false,
1960      al,
1961      "eq r13 r0 LSL r13",
1962      "eq_r13_r0_LSL_r13"},
1963     {{vc, r0, r11, ASR, r3}, false, al, "vc r0 r11 ASR r3", "vc_r0_r11_ASR_r3"},
1964     {{vc, r1, r4, LSR, r3}, false, al, "vc r1 r4 LSR r3", "vc_r1_r4_LSR_r3"},
1965     {{cc, r8, r3, ASR, r12}, false, al, "cc r8 r3 ASR r12", "cc_r8_r3_ASR_r12"},
1966     {{vs, r3, r10, LSL, r4}, false, al, "vs r3 r10 LSL r4", "vs_r3_r10_LSL_r4"},
1967     {{gt, r10, r9, ASR, r10},
1968      false,
1969      al,
1970      "gt r10 r9 ASR r10",
1971      "gt_r10_r9_ASR_r10"},
1972     {{cc, r10, r2, LSL, r10},
1973      false,
1974      al,
1975      "cc r10 r2 LSL r10",
1976      "cc_r10_r2_LSL_r10"},
1977     {{cs, r0, r2, LSL, r1}, false, al, "cs r0 r2 LSL r1", "cs_r0_r2_LSL_r1"},
1978     {{hi, r14, r14, ASR, r13},
1979      false,
1980      al,
1981      "hi r14 r14 ASR r13",
1982      "hi_r14_r14_ASR_r13"},
1983     {{mi, r4, r3, LSL, r1}, false, al, "mi r4 r3 LSL r1", "mi_r4_r3_LSL_r1"},
1984     {{gt, r5, r14, ROR, r2}, false, al, "gt r5 r14 ROR r2", "gt_r5_r14_ROR_r2"},
1985     {{cc, r10, r13, ASR, r12},
1986      false,
1987      al,
1988      "cc r10 r13 ASR r12",
1989      "cc_r10_r13_ASR_r12"},
1990     {{cs, r2, r4, LSL, r12}, false, al, "cs r2 r4 LSL r12", "cs_r2_r4_LSL_r12"},
1991     {{vs, r4, r2, ROR, r11}, false, al, "vs r4 r2 ROR r11", "vs_r4_r2_ROR_r11"},
1992     {{cs, r1, r13, LSR, r7}, false, al, "cs r1 r13 LSR r7", "cs_r1_r13_LSR_r7"},
1993     {{al, r3, r6, ASR, r5}, false, al, "al r3 r6 ASR r5", "al_r3_r6_ASR_r5"},
1994     {{ge, r12, r4, LSL, r2}, false, al, "ge r12 r4 LSL r2", "ge_r12_r4_LSL_r2"},
1995     {{cc, r8, r13, ROR, r5}, false, al, "cc r8 r13 ROR r5", "cc_r8_r13_ROR_r5"},
1996     {{vc, r0, r10, LSL, r7}, false, al, "vc r0 r10 LSL r7", "vc_r0_r10_LSL_r7"},
1997     {{ge, r13, r0, LSL, r4}, false, al, "ge r13 r0 LSL r4", "ge_r13_r0_LSL_r4"},
1998     {{cc, r14, r12, LSL, r10},
1999      false,
2000      al,
2001      "cc r14 r12 LSL r10",
2002      "cc_r14_r12_LSL_r10"},
2003     {{mi, r9, r9, ASR, r9}, false, al, "mi r9 r9 ASR r9", "mi_r9_r9_ASR_r9"},
2004     {{al, r1, r13, ROR, r14},
2005      false,
2006      al,
2007      "al r1 r13 ROR r14",
2008      "al_r1_r13_ROR_r14"},
2009     {{ls, r5, r10, ROR, r1}, false, al, "ls r5 r10 ROR r1", "ls_r5_r10_ROR_r1"},
2010     {{mi, r7, r9, LSL, r7}, false, al, "mi r7 r9 LSL r7", "mi_r7_r9_LSL_r7"},
2011     {{ne, r11, r13, LSR, r5},
2012      false,
2013      al,
2014      "ne r11 r13 LSR r5",
2015      "ne_r11_r13_LSR_r5"},
2016     {{mi, r1, r6, ROR, r9}, false, al, "mi r1 r6 ROR r9", "mi_r1_r6_ROR_r9"},
2017     {{le, r1, r2, LSR, r2}, false, al, "le r1 r2 LSR r2", "le_r1_r2_LSR_r2"},
2018     {{vc, r12, r9, LSR, r6}, false, al, "vc r12 r9 LSR r6", "vc_r12_r9_LSR_r6"},
2019     {{cc, r11, r2, ROR, r9}, false, al, "cc r11 r2 ROR r9", "cc_r11_r2_ROR_r9"},
2020     {{mi, r6, r11, LSL, r10},
2021      false,
2022      al,
2023      "mi r6 r11 LSL r10",
2024      "mi_r6_r11_LSL_r10"},
2025     {{cc, r6, r1, ROR, r6}, false, al, "cc r6 r1 ROR r6", "cc_r6_r1_ROR_r6"},
2026     {{gt, r1, r13, LSL, r10},
2027      false,
2028      al,
2029      "gt r1 r13 LSL r10",
2030      "gt_r1_r13_LSL_r10"},
2031     {{eq, r10, r12, ROR, r11},
2032      false,
2033      al,
2034      "eq r10 r12 ROR r11",
2035      "eq_r10_r12_ROR_r11"},
2036     {{cs, r5, r7, LSL, r5}, false, al, "cs r5 r7 LSL r5", "cs_r5_r7_LSL_r5"},
2037     {{cs, r2, r14, ROR, r6}, false, al, "cs r2 r14 ROR r6", "cs_r2_r14_ROR_r6"},
2038     {{cc, r4, r6, ASR, r7}, false, al, "cc r4 r6 ASR r7", "cc_r4_r6_ASR_r7"},
2039     {{mi, r5, r3, ASR, r8}, false, al, "mi r5 r3 ASR r8", "mi_r5_r3_ASR_r8"},
2040     {{vs, r5, r0, LSR, r4}, false, al, "vs r5 r0 LSR r4", "vs_r5_r0_LSR_r4"},
2041     {{ge, r4, r7, ASR, r5}, false, al, "ge r4 r7 ASR r5", "ge_r4_r7_ASR_r5"},
2042     {{lt, r4, r9, ASR, r7}, false, al, "lt r4 r9 ASR r7", "lt_r4_r9_ASR_r7"},
2043     {{cs, r3, r13, ASR, r6}, false, al, "cs r3 r13 ASR r6", "cs_r3_r13_ASR_r6"},
2044     {{vs, r3, r7, LSR, r2}, false, al, "vs r3 r7 LSR r2", "vs_r3_r7_LSR_r2"},
2045     {{pl, r0, r3, ASR, r7}, false, al, "pl r0 r3 ASR r7", "pl_r0_r3_ASR_r7"},
2046     {{lt, r7, r10, LSL, r0}, false, al, "lt r7 r10 LSL r0", "lt_r7_r10_LSL_r0"},
2047     {{pl, r5, r1, LSR, r4}, false, al, "pl r5 r1 LSR r4", "pl_r5_r1_LSR_r4"},
2048     {{gt, r10, r7, LSL, r10},
2049      false,
2050      al,
2051      "gt r10 r7 LSL r10",
2052      "gt_r10_r7_LSL_r10"},
2053     {{ls, r14, r6, ROR, r0}, false, al, "ls r14 r6 ROR r0", "ls_r14_r6_ROR_r0"},
2054     {{le, r1, r5, ROR, r11}, false, al, "le r1 r5 ROR r11", "le_r1_r5_ROR_r11"},
2055     {{ls, r6, r14, LSL, r8}, false, al, "ls r6 r14 LSL r8", "ls_r6_r14_LSL_r8"},
2056     {{mi, r12, r11, LSL, r5},
2057      false,
2058      al,
2059      "mi r12 r11 LSL r5",
2060      "mi_r12_r11_LSL_r5"},
2061     {{le, r13, r5, ASR, r3}, false, al, "le r13 r5 ASR r3", "le_r13_r5_ASR_r3"},
2062     {{ls, r14, r10, ROR, r14},
2063      false,
2064      al,
2065      "ls r14 r10 ROR r14",
2066      "ls_r14_r10_ROR_r14"},
2067     {{eq, r5, r12, ASR, r5}, false, al, "eq r5 r12 ASR r5", "eq_r5_r12_ASR_r5"},
2068     {{gt, r14, r4, ASR, r14},
2069      false,
2070      al,
2071      "gt r14 r4 ASR r14",
2072      "gt_r14_r4_ASR_r14"},
2073     {{ls, r0, r5, ASR, r13}, false, al, "ls r0 r5 ASR r13", "ls_r0_r5_ASR_r13"},
2074     {{pl, r6, r4, LSR, r1}, false, al, "pl r6 r4 LSR r1", "pl_r6_r4_LSR_r1"},
2075     {{pl, r7, r11, ROR, r3}, false, al, "pl r7 r11 ROR r3", "pl_r7_r11_ROR_r3"},
2076     {{lt, r11, r9, ASR, r13},
2077      false,
2078      al,
2079      "lt r11 r9 ASR r13",
2080      "lt_r11_r9_ASR_r13"},
2081     {{cc, r3, r9, ASR, r4}, false, al, "cc r3 r9 ASR r4", "cc_r3_r9_ASR_r4"},
2082     {{eq, r2, r1, ASR, r7}, false, al, "eq r2 r1 ASR r7", "eq_r2_r1_ASR_r7"},
2083     {{le, r8, r10, ASR, r9}, false, al, "le r8 r10 ASR r9", "le_r8_r10_ASR_r9"},
2084     {{hi, r14, r2, LSL, r6}, false, al, "hi r14 r2 LSL r6", "hi_r14_r2_LSL_r6"},
2085     {{mi, r12, r4, LSR, r8}, false, al, "mi r12 r4 LSR r8", "mi_r12_r4_LSR_r8"},
2086     {{pl, r4, r1, ROR, r2}, false, al, "pl r4 r1 ROR r2", "pl_r4_r1_ROR_r2"},
2087     {{hi, r5, r9, ROR, r7}, false, al, "hi r5 r9 ROR r7", "hi_r5_r9_ROR_r7"},
2088     {{le, r4, r2, LSR, r1}, false, al, "le r4 r2 LSR r1", "le_r4_r2_LSR_r1"},
2089     {{al, r8, r1, ROR, r9}, false, al, "al r8 r1 ROR r9", "al_r8_r1_ROR_r9"},
2090     {{mi, r3, r6, ASR, r6}, false, al, "mi r3 r6 ASR r6", "mi_r3_r6_ASR_r6"},
2091     {{ls, r1, r12, LSR, r9}, false, al, "ls r1 r12 LSR r9", "ls_r1_r12_LSR_r9"},
2092     {{le, r13, r5, LSR, r13},
2093      false,
2094      al,
2095      "le r13 r5 LSR r13",
2096      "le_r13_r5_LSR_r13"},
2097     {{ne, r3, r12, ROR, r7}, false, al, "ne r3 r12 ROR r7", "ne_r3_r12_ROR_r7"},
2098     {{mi, r0, r9, LSR, r5}, false, al, "mi r0 r9 LSR r5", "mi_r0_r9_LSR_r5"},
2099     {{al, r4, r4, ROR, r3}, false, al, "al r4 r4 ROR r3", "al_r4_r4_ROR_r3"},
2100     {{cc, r1, r1, ASR, r3}, false, al, "cc r1 r1 ASR r3", "cc_r1_r1_ASR_r3"},
2101     {{lt, r12, r0, LSL, r10},
2102      false,
2103      al,
2104      "lt r12 r0 LSL r10",
2105      "lt_r12_r0_LSL_r10"},
2106     {{ge, r1, r10, LSL, r4}, false, al, "ge r1 r10 LSL r4", "ge_r1_r10_LSL_r4"},
2107     {{hi, r2, r7, LSL, r4}, false, al, "hi r2 r7 LSL r4", "hi_r2_r7_LSL_r4"},
2108     {{le, r1, r6, ASR, r13}, false, al, "le r1 r6 ASR r13", "le_r1_r6_ASR_r13"},
2109     {{eq, r0, r2, ROR, r8}, false, al, "eq r0 r2 ROR r8", "eq_r0_r2_ROR_r8"},
2110     {{vc, r6, r0, LSL, r8}, false, al, "vc r6 r0 LSL r8", "vc_r6_r0_LSL_r8"},
2111     {{hi, r11, r7, LSL, r5}, false, al, "hi r11 r7 LSL r5", "hi_r11_r7_LSL_r5"},
2112     {{ne, r0, r1, ASR, r2}, false, al, "ne r0 r1 ASR r2", "ne_r0_r1_ASR_r2"},
2113     {{gt, r7, r10, ROR, r8}, false, al, "gt r7 r10 ROR r8", "gt_r7_r10_ROR_r8"},
2114     {{vc, r5, r2, ASR, r8}, false, al, "vc r5 r2 ASR r8", "vc_r5_r2_ASR_r8"},
2115     {{ls, r4, r9, LSL, r14}, false, al, "ls r4 r9 LSL r14", "ls_r4_r9_LSL_r14"},
2116     {{vs, r4, r4, LSR, r5}, false, al, "vs r4 r4 LSR r5", "vs_r4_r4_LSR_r5"},
2117     {{hi, r4, r14, LSL, r13},
2118      false,
2119      al,
2120      "hi r4 r14 LSL r13",
2121      "hi_r4_r14_LSL_r13"},
2122     {{cc, r8, r11, ROR, r13},
2123      false,
2124      al,
2125      "cc r8 r11 ROR r13",
2126      "cc_r8_r11_ROR_r13"},
2127     {{ls, r2, r2, LSR, r14}, false, al, "ls r2 r2 LSR r14", "ls_r2_r2_LSR_r14"},
2128     {{lt, r1, r4, ROR, r12}, false, al, "lt r1 r4 ROR r12", "lt_r1_r4_ROR_r12"},
2129     {{mi, r2, r6, ROR, r14}, false, al, "mi r2 r6 ROR r14", "mi_r2_r6_ROR_r14"},
2130     {{hi, r7, r2, ASR, r9}, false, al, "hi r7 r2 ASR r9", "hi_r7_r2_ASR_r9"},
2131     {{le, r10, r14, ROR, r13},
2132      false,
2133      al,
2134      "le r10 r14 ROR r13",
2135      "le_r10_r14_ROR_r13"},
2136     {{vc, r7, r14, ASR, r11},
2137      false,
2138      al,
2139      "vc r7 r14 ASR r11",
2140      "vc_r7_r14_ASR_r11"},
2141     {{mi, r4, r5, ASR, r6}, false, al, "mi r4 r5 ASR r6", "mi_r4_r5_ASR_r6"},
2142     {{al, r11, r14, ROR, r9},
2143      false,
2144      al,
2145      "al r11 r14 ROR r9",
2146      "al_r11_r14_ROR_r9"},
2147     {{vc, r0, r10, ASR, r13},
2148      false,
2149      al,
2150      "vc r0 r10 ASR r13",
2151      "vc_r0_r10_ASR_r13"},
2152     {{al, r10, r2, ROR, r13},
2153      false,
2154      al,
2155      "al r10 r2 ROR r13",
2156      "al_r10_r2_ROR_r13"},
2157     {{hi, r9, r2, LSR, r9}, false, al, "hi r9 r2 LSR r9", "hi_r9_r2_LSR_r9"},
2158     {{gt, r2, r0, ASR, r10}, false, al, "gt r2 r0 ASR r10", "gt_r2_r0_ASR_r10"},
2159     {{hi, r4, r12, ASR, r13},
2160      false,
2161      al,
2162      "hi r4 r12 ASR r13",
2163      "hi_r4_r12_ASR_r13"},
2164     {{vc, r10, r14, ASR, r0},
2165      false,
2166      al,
2167      "vc r10 r14 ASR r0",
2168      "vc_r10_r14_ASR_r0"},
2169     {{ne, r13, r9, ASR, r4}, false, al, "ne r13 r9 ASR r4", "ne_r13_r9_ASR_r4"},
2170     {{eq, r5, r8, ROR, r5}, false, al, "eq r5 r8 ROR r5", "eq_r5_r8_ROR_r5"},
2171     {{lt, r0, r13, ROR, r3}, false, al, "lt r0 r13 ROR r3", "lt_r0_r13_ROR_r3"},
2172     {{hi, r0, r1, LSL, r1}, false, al, "hi r0 r1 LSL r1", "hi_r0_r1_LSL_r1"},
2173     {{pl, r13, r6, ASR, r10},
2174      false,
2175      al,
2176      "pl r13 r6 ASR r10",
2177      "pl_r13_r6_ASR_r10"},
2178     {{hi, r0, r4, LSR, r2}, false, al, "hi r0 r4 LSR r2", "hi_r0_r4_LSR_r2"},
2179     {{eq, r5, r3, ASR, r8}, false, al, "eq r5 r3 ASR r8", "eq_r5_r3_ASR_r8"},
2180     {{al, r1, r5, LSR, r4}, false, al, "al r1 r5 LSR r4", "al_r1_r5_LSR_r4"},
2181     {{eq, r8, r5, LSR, r14}, false, al, "eq r8 r5 LSR r14", "eq_r8_r5_LSR_r14"},
2182     {{ne, r12, r13, ROR, r0},
2183      false,
2184      al,
2185      "ne r12 r13 ROR r0",
2186      "ne_r12_r13_ROR_r0"},
2187     {{pl, r0, r2, ROR, r11}, false, al, "pl r0 r2 ROR r11", "pl_r0_r2_ROR_r11"},
2188     {{cs, r10, r6, ROR, r9}, false, al, "cs r10 r6 ROR r9", "cs_r10_r6_ROR_r9"},
2189     {{eq, r10, r4, ASR, r14},
2190      false,
2191      al,
2192      "eq r10 r4 ASR r14",
2193      "eq_r10_r4_ASR_r14"},
2194     {{ls, r9, r4, LSR, r14}, false, al, "ls r9 r4 LSR r14", "ls_r9_r4_LSR_r14"},
2195     {{cs, r14, r2, ROR, r5}, false, al, "cs r14 r2 ROR r5", "cs_r14_r2_ROR_r5"},
2196     {{vc, r9, r9, LSL, r7}, false, al, "vc r9 r9 LSL r7", "vc_r9_r9_LSL_r7"},
2197     {{mi, r7, r0, LSL, r4}, false, al, "mi r7 r0 LSL r4", "mi_r7_r0_LSL_r4"},
2198     {{cc, r2, r10, ASR, r7}, false, al, "cc r2 r10 ASR r7", "cc_r2_r10_ASR_r7"},
2199     {{cs, r5, r10, LSR, r9},
2200      false,
2201      al,
2202      "cs r5 r10 LSR r9",
2203      "cs_r5_r10_LSR_"
2204      "r9"}};
2205 
2206 // These headers each contain an array of `TestResult` with the reference output
2207 // values. The reference arrays are names `kReference{mnemonic}`.
2208 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-cmn-a32.h"
2209 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-cmp-a32.h"
2210 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-mov-a32.h"
2211 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-movs-a32.h"
2212 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-mvn-a32.h"
2213 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-mvns-a32.h"
2214 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-teq-a32.h"
2215 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-tst-a32.h"
2216 
2217 
2218 // The maximum number of errors to report in detail for each test.
2219 const unsigned kErrorReportLimit = 8;
2220 
2221 typedef void (MacroAssembler::*Fn)(Condition cond,
2222                                    Register rd,
2223                                    const Operand& op);
2224 
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])2225 void TestHelper(Fn instruction,
2226                 const char* mnemonic,
2227                 const TestResult reference[]) {
2228   unsigned total_error_count = 0;
2229   MacroAssembler masm(BUF_SIZE);
2230 
2231   masm.UseA32();
2232 
2233   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
2234     // Values to pass to the macro-assembler.
2235     Condition cond = kTests[i].operands.cond;
2236     Register rd = kTests[i].operands.rd;
2237     Register rn = kTests[i].operands.rn;
2238     ShiftType shift = kTests[i].operands.shift;
2239     Register rs = kTests[i].operands.rs;
2240     Operand op(rn, shift, rs);
2241 
2242     int32_t start = masm.GetCursorOffset();
2243     {
2244       // We never generate more that 4 bytes, as IT instructions are only
2245       // allowed for narrow encodings.
2246       ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
2247       if (kTests[i].in_it_block) {
2248         masm.it(kTests[i].it_condition);
2249       }
2250       (masm.*instruction)(cond, rd, op);
2251     }
2252     int32_t end = masm.GetCursorOffset();
2253 
2254     const byte* result_ptr =
2255         masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
2256     VIXL_ASSERT(start < end);
2257     uint32_t result_size = end - start;
2258 
2259     if (Test::generate_test_trace()) {
2260       // Print the result bytes.
2261       printf("const byte kInstruction_%s_%s[] = {\n",
2262              mnemonic,
2263              kTests[i].identifier);
2264       for (uint32_t j = 0; j < result_size; j++) {
2265         if (j == 0) {
2266           printf("  0x%02" PRIx8, result_ptr[j]);
2267         } else {
2268           printf(", 0x%02" PRIx8, result_ptr[j]);
2269         }
2270       }
2271       // This comment is meant to be used by external tools to validate
2272       // the encoding. We can parse the comment to figure out what
2273       // instruction this corresponds to.
2274       if (kTests[i].in_it_block) {
2275         printf(" // It %s; %s %s\n};\n",
2276                kTests[i].it_condition.GetName(),
2277                mnemonic,
2278                kTests[i].operands_description);
2279       } else {
2280         printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
2281       }
2282     } else {
2283       // Check we've emitted the exact same encoding as present in the
2284       // trace file. Only print up to `kErrorReportLimit` errors.
2285       if (((result_size != reference[i].size) ||
2286            (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
2287             0)) &&
2288           (++total_error_count <= kErrorReportLimit)) {
2289         printf("Error when testing \"%s\" with operands \"%s\":\n",
2290                mnemonic,
2291                kTests[i].operands_description);
2292         printf("  Expected: ");
2293         for (uint32_t j = 0; j < reference[i].size; j++) {
2294           if (j == 0) {
2295             printf("0x%02" PRIx8, reference[i].encoding[j]);
2296           } else {
2297             printf(", 0x%02" PRIx8, reference[i].encoding[j]);
2298           }
2299         }
2300         printf("\n");
2301         printf("  Found:    ");
2302         for (uint32_t j = 0; j < result_size; j++) {
2303           if (j == 0) {
2304             printf("0x%02" PRIx8, result_ptr[j]);
2305           } else {
2306             printf(", 0x%02" PRIx8, result_ptr[j]);
2307           }
2308         }
2309         printf("\n");
2310       }
2311     }
2312   }
2313 
2314   masm.FinalizeCode();
2315 
2316   if (Test::generate_test_trace()) {
2317     // Finalize the trace file by writing the final `TestResult` array
2318     // which links all generated instruction encodings.
2319     printf("const TestResult kReference%s[] = {\n", mnemonic);
2320     for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
2321       printf("  {\n");
2322       printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
2323              mnemonic,
2324              kTests[i].identifier);
2325       printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
2326       printf("  },\n");
2327     }
2328     printf("};\n");
2329   } else {
2330     if (total_error_count > kErrorReportLimit) {
2331       printf("%u other errors follow.\n",
2332              total_error_count - kErrorReportLimit);
2333     }
2334     // Crash if the test failed.
2335     VIXL_CHECK(total_error_count == 0);
2336   }
2337 }
2338 
2339 // Instantiate tests for each instruction in the list.
2340 #define TEST(mnemonic)                                                      \
2341   void Test_##mnemonic() {                                                  \
2342     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
2343   }                                                                         \
2344   Test test_##mnemonic(                                                     \
2345       "AARCH32_ASSEMBLER_COND_RD_OPERAND_RN_SHIFT_RS_" #mnemonic "_A32",    \
2346       &Test_##mnemonic);
2347 FOREACH_INSTRUCTION(TEST)
2348 #undef TEST
2349 
2350 }  // namespace
2351 #endif
2352 
2353 }  // namespace aarch32
2354 }  // namespace vixl
2355