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