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(add)                       \
53   M(sub)
54 
55 
56 // The following definitions are defined again in each generated test, therefore
57 // we need to place them in an anomymous namespace. It expresses that they are
58 // local to this file only, and the compiler is not allowed to share these types
59 // across test files during template instantiation. Specifically, `Operands` has
60 // various layouts across generated tests so it absolutely cannot be shared.
61 
62 #ifdef VIXL_INCLUDE_TARGET_T32
63 namespace {
64 
65 // Values to be passed to the assembler to produce the instruction under test.
66 struct Operands {
67   Condition cond;
68   Register rd;
69   Register rn;
70   int32_t immediate;
71 };
72 
73 // This structure contains all data needed to test one specific
74 // instruction.
75 struct TestData {
76   // The `operands` field represents what to pass to the assembler to
77   // produce the instruction.
78   Operands operands;
79   // True if we need to generate an IT instruction for this test to be valid.
80   bool in_it_block;
81   // The condition to give the IT instruction, this will be set to "al" by
82   // default.
83   Condition it_condition;
84   // Description of the operands, used for error reporting.
85   const char* operands_description;
86   // Unique identifier, used for generating traces.
87   const char* identifier;
88 };
89 
90 struct TestResult {
91   size_t size;
92   const byte* encoding;
93 };
94 
95 // Each element of this array produce one instruction encoding.
96 const TestData kTests[] =
97     {{{pl, r0, r0, 7}, true, pl, "pl r0 r0 7", "pl_r0_r0_7"},
98      {{cs, r0, r2, 5}, true, cs, "cs r0 r2 5", "cs_r0_r2_5"},
99      {{ls, r1, r6, 0}, true, ls, "ls r1 r6 0", "ls_r1_r6_0"},
100      {{cc, r5, r1, 6}, true, cc, "cc r5 r1 6", "cc_r5_r1_6"},
101      {{cs, r5, r2, 0}, true, cs, "cs r5 r2 0", "cs_r5_r2_0"},
102      {{vs, r5, r6, 7}, true, vs, "vs r5 r6 7", "vs_r5_r6_7"},
103      {{ls, r2, r0, 5}, true, ls, "ls r2 r0 5", "ls_r2_r0_5"},
104      {{eq, r3, r4, 5}, true, eq, "eq r3 r4 5", "eq_r3_r4_5"},
105      {{lt, r4, r5, 7}, true, lt, "lt r4 r5 7", "lt_r4_r5_7"},
106      {{lt, r6, r7, 1}, true, lt, "lt r6 r7 1", "lt_r6_r7_1"},
107      {{eq, r1, r0, 3}, true, eq, "eq r1 r0 3", "eq_r1_r0_3"},
108      {{le, r4, r1, 0}, true, le, "le r4 r1 0", "le_r4_r1_0"},
109      {{vc, r5, r2, 5}, true, vc, "vc r5 r2 5", "vc_r5_r2_5"},
110      {{cs, r1, r1, 5}, true, cs, "cs r1 r1 5", "cs_r1_r1_5"},
111      {{cs, r2, r5, 4}, true, cs, "cs r2 r5 4", "cs_r2_r5_4"},
112      {{ge, r7, r5, 7}, true, ge, "ge r7 r5 7", "ge_r7_r5_7"},
113      {{eq, r3, r4, 4}, true, eq, "eq r3 r4 4", "eq_r3_r4_4"},
114      {{ls, r1, r0, 2}, true, ls, "ls r1 r0 2", "ls_r1_r0_2"},
115      {{vc, r1, r2, 0}, true, vc, "vc r1 r2 0", "vc_r1_r2_0"},
116      {{ls, r6, r6, 4}, true, ls, "ls r6 r6 4", "ls_r6_r6_4"},
117      {{hi, r3, r1, 0}, true, hi, "hi r3 r1 0", "hi_r3_r1_0"},
118      {{ge, r7, r1, 0}, true, ge, "ge r7 r1 0", "ge_r7_r1_0"},
119      {{ge, r2, r0, 0}, true, ge, "ge r2 r0 0", "ge_r2_r0_0"},
120      {{ge, r1, r7, 0}, true, ge, "ge r1 r7 0", "ge_r1_r7_0"},
121      {{lt, r5, r2, 0}, true, lt, "lt r5 r2 0", "lt_r5_r2_0"},
122      {{ls, r6, r3, 0}, true, ls, "ls r6 r3 0", "ls_r6_r3_0"},
123      {{ne, r5, r7, 4}, true, ne, "ne r5 r7 4", "ne_r5_r7_4"},
124      {{le, r5, r3, 2}, true, le, "le r5 r3 2", "le_r5_r3_2"},
125      {{eq, r6, r1, 4}, true, eq, "eq r6 r1 4", "eq_r6_r1_4"},
126      {{gt, r6, r0, 1}, true, gt, "gt r6 r0 1", "gt_r6_r0_1"},
127      {{pl, r5, r2, 2}, true, pl, "pl r5 r2 2", "pl_r5_r2_2"},
128      {{ls, r7, r2, 0}, true, ls, "ls r7 r2 0", "ls_r7_r2_0"},
129      {{hi, r4, r7, 6}, true, hi, "hi r4 r7 6", "hi_r4_r7_6"},
130      {{hi, r1, r2, 5}, true, hi, "hi r1 r2 5", "hi_r1_r2_5"},
131      {{ls, r3, r0, 3}, true, ls, "ls r3 r0 3", "ls_r3_r0_3"},
132      {{le, r5, r5, 7}, true, le, "le r5 r5 7", "le_r5_r5_7"},
133      {{pl, r5, r0, 2}, true, pl, "pl r5 r0 2", "pl_r5_r0_2"},
134      {{cs, r3, r1, 7}, true, cs, "cs r3 r1 7", "cs_r3_r1_7"},
135      {{le, r4, r6, 6}, true, le, "le r4 r6 6", "le_r4_r6_6"},
136      {{lt, r7, r5, 2}, true, lt, "lt r7 r5 2", "lt_r7_r5_2"},
137      {{le, r5, r4, 3}, true, le, "le r5 r4 3", "le_r5_r4_3"},
138      {{ne, r4, r7, 0}, true, ne, "ne r4 r7 0", "ne_r4_r7_0"},
139      {{gt, r0, r3, 5}, true, gt, "gt r0 r3 5", "gt_r0_r3_5"},
140      {{hi, r0, r4, 5}, true, hi, "hi r0 r4 5", "hi_r0_r4_5"},
141      {{cs, r4, r0, 6}, true, cs, "cs r4 r0 6", "cs_r4_r0_6"},
142      {{ne, r6, r3, 0}, true, ne, "ne r6 r3 0", "ne_r6_r3_0"},
143      {{ge, r0, r5, 3}, true, ge, "ge r0 r5 3", "ge_r0_r5_3"},
144      {{vc, r4, r2, 7}, true, vc, "vc r4 r2 7", "vc_r4_r2_7"},
145      {{le, r3, r0, 6}, true, le, "le r3 r0 6", "le_r3_r0_6"},
146      {{lt, r0, r4, 5}, true, lt, "lt r0 r4 5", "lt_r0_r4_5"},
147      {{cs, r7, r0, 4}, true, cs, "cs r7 r0 4", "cs_r7_r0_4"},
148      {{ge, r0, r0, 6}, true, ge, "ge r0 r0 6", "ge_r0_r0_6"},
149      {{hi, r2, r6, 0}, true, hi, "hi r2 r6 0", "hi_r2_r6_0"},
150      {{hi, r1, r4, 0}, true, hi, "hi r1 r4 0", "hi_r1_r4_0"},
151      {{lt, r1, r5, 5}, true, lt, "lt r1 r5 5", "lt_r1_r5_5"},
152      {{eq, r0, r6, 7}, true, eq, "eq r0 r6 7", "eq_r0_r6_7"},
153      {{hi, r2, r4, 6}, true, hi, "hi r2 r4 6", "hi_r2_r4_6"},
154      {{ls, r4, r4, 2}, true, ls, "ls r4 r4 2", "ls_r4_r4_2"},
155      {{gt, r1, r5, 5}, true, gt, "gt r1 r5 5", "gt_r1_r5_5"},
156      {{gt, r5, r4, 2}, true, gt, "gt r5 r4 2", "gt_r5_r4_2"},
157      {{gt, r0, r3, 6}, true, gt, "gt r0 r3 6", "gt_r0_r3_6"},
158      {{hi, r6, r2, 6}, true, hi, "hi r6 r2 6", "hi_r6_r2_6"},
159      {{le, r0, r7, 5}, true, le, "le r0 r7 5", "le_r0_r7_5"},
160      {{mi, r2, r7, 6}, true, mi, "mi r2 r7 6", "mi_r2_r7_6"},
161      {{le, r5, r6, 2}, true, le, "le r5 r6 2", "le_r5_r6_2"},
162      {{eq, r0, r4, 5}, true, eq, "eq r0 r4 5", "eq_r0_r4_5"},
163      {{hi, r4, r5, 2}, true, hi, "hi r4 r5 2", "hi_r4_r5_2"},
164      {{gt, r0, r7, 0}, true, gt, "gt r0 r7 0", "gt_r0_r7_0"},
165      {{eq, r6, r4, 0}, true, eq, "eq r6 r4 0", "eq_r6_r4_0"},
166      {{mi, r2, r2, 4}, true, mi, "mi r2 r2 4", "mi_r2_r2_4"},
167      {{vs, r7, r4, 2}, true, vs, "vs r7 r4 2", "vs_r7_r4_2"},
168      {{ne, r5, r3, 6}, true, ne, "ne r5 r3 6", "ne_r5_r3_6"},
169      {{ge, r0, r3, 2}, true, ge, "ge r0 r3 2", "ge_r0_r3_2"},
170      {{cc, r1, r5, 5}, true, cc, "cc r1 r5 5", "cc_r1_r5_5"},
171      {{ge, r7, r3, 5}, true, ge, "ge r7 r3 5", "ge_r7_r3_5"},
172      {{ls, r6, r4, 0}, true, ls, "ls r6 r4 0", "ls_r6_r4_0"},
173      {{cs, r5, r1, 4}, true, cs, "cs r5 r1 4", "cs_r5_r1_4"},
174      {{ls, r6, r7, 0}, true, ls, "ls r6 r7 0", "ls_r6_r7_0"},
175      {{cc, r5, r7, 5}, true, cc, "cc r5 r7 5", "cc_r5_r7_5"},
176      {{eq, r0, r2, 5}, true, eq, "eq r0 r2 5", "eq_r0_r2_5"},
177      {{hi, r1, r6, 6}, true, hi, "hi r1 r6 6", "hi_r1_r6_6"},
178      {{vs, r4, r6, 7}, true, vs, "vs r4 r6 7", "vs_r4_r6_7"},
179      {{lt, r1, r5, 4}, true, lt, "lt r1 r5 4", "lt_r1_r5_4"},
180      {{gt, r1, r2, 7}, true, gt, "gt r1 r2 7", "gt_r1_r2_7"},
181      {{cc, r4, r5, 4}, true, cc, "cc r4 r5 4", "cc_r4_r5_4"},
182      {{pl, r6, r5, 2}, true, pl, "pl r6 r5 2", "pl_r6_r5_2"},
183      {{lt, r5, r1, 0}, true, lt, "lt r5 r1 0", "lt_r5_r1_0"},
184      {{vc, r1, r7, 1}, true, vc, "vc r1 r7 1", "vc_r1_r7_1"},
185      {{eq, r1, r2, 6}, true, eq, "eq r1 r2 6", "eq_r1_r2_6"},
186      {{ls, r0, r4, 2}, true, ls, "ls r0 r4 2", "ls_r0_r4_2"},
187      {{vs, r2, r6, 0}, true, vs, "vs r2 r6 0", "vs_r2_r6_0"},
188      {{le, r6, r3, 6}, true, le, "le r6 r3 6", "le_r6_r3_6"},
189      {{mi, r6, r7, 1}, true, mi, "mi r6 r7 1", "mi_r6_r7_1"},
190      {{lt, r2, r0, 5}, true, lt, "lt r2 r0 5", "lt_r2_r0_5"},
191      {{le, r0, r6, 1}, true, le, "le r0 r6 1", "le_r0_r6_1"},
192      {{hi, r6, r6, 6}, true, hi, "hi r6 r6 6", "hi_r6_r6_6"},
193      {{eq, r5, r6, 1}, true, eq, "eq r5 r6 1", "eq_r5_r6_1"},
194      {{eq, r2, r1, 4}, true, eq, "eq r2 r1 4", "eq_r2_r1_4"},
195      {{gt, r5, r6, 5}, true, gt, "gt r5 r6 5", "gt_r5_r6_5"},
196      {{vc, r3, r4, 3}, true, vc, "vc r3 r4 3", "vc_r3_r4_3"},
197      {{cc, r0, r1, 4}, true, cc, "cc r0 r1 4", "cc_r0_r1_4"},
198      {{hi, r3, r1, 7}, true, hi, "hi r3 r1 7", "hi_r3_r1_7"},
199      {{ge, r2, r3, 5}, true, ge, "ge r2 r3 5", "ge_r2_r3_5"},
200      {{mi, r1, r0, 5}, true, mi, "mi r1 r0 5", "mi_r1_r0_5"},
201      {{vc, r3, r0, 3}, true, vc, "vc r3 r0 3", "vc_r3_r0_3"},
202      {{vs, r0, r5, 7}, true, vs, "vs r0 r5 7", "vs_r0_r5_7"},
203      {{eq, r2, r1, 5}, true, eq, "eq r2 r1 5", "eq_r2_r1_5"},
204      {{ne, r3, r0, 0}, true, ne, "ne r3 r0 0", "ne_r3_r0_0"},
205      {{vs, r0, r6, 1}, true, vs, "vs r0 r6 1", "vs_r0_r6_1"},
206      {{cs, r6, r1, 4}, true, cs, "cs r6 r1 4", "cs_r6_r1_4"},
207      {{cs, r5, r2, 4}, true, cs, "cs r5 r2 4", "cs_r5_r2_4"},
208      {{cs, r4, r4, 7}, true, cs, "cs r4 r4 7", "cs_r4_r4_7"},
209      {{vs, r1, r2, 4}, true, vs, "vs r1 r2 4", "vs_r1_r2_4"},
210      {{ne, r0, r1, 6}, true, ne, "ne r0 r1 6", "ne_r0_r1_6"},
211      {{ge, r2, r4, 0}, true, ge, "ge r2 r4 0", "ge_r2_r4_0"},
212      {{pl, r0, r4, 4}, true, pl, "pl r0 r4 4", "pl_r0_r4_4"},
213      {{vs, r6, r2, 6}, true, vs, "vs r6 r2 6", "vs_r6_r2_6"},
214      {{lt, r4, r0, 6}, true, lt, "lt r4 r0 6", "lt_r4_r0_6"},
215      {{cc, r3, r1, 2}, true, cc, "cc r3 r1 2", "cc_r3_r1_2"},
216      {{hi, r6, r1, 2}, true, hi, "hi r6 r1 2", "hi_r6_r1_2"},
217      {{cc, r0, r5, 4}, true, cc, "cc r0 r5 4", "cc_r0_r5_4"},
218      {{lt, r3, r3, 2}, true, lt, "lt r3 r3 2", "lt_r3_r3_2"},
219      {{vc, r0, r2, 3}, true, vc, "vc r0 r2 3", "vc_r0_r2_3"},
220      {{ne, r5, r3, 5}, true, ne, "ne r5 r3 5", "ne_r5_r3_5"},
221      {{gt, r4, r3, 6}, true, gt, "gt r4 r3 6", "gt_r4_r3_6"},
222      {{eq, r5, r5, 7}, true, eq, "eq r5 r5 7", "eq_r5_r5_7"},
223      {{cc, r6, r1, 6}, true, cc, "cc r6 r1 6", "cc_r6_r1_6"},
224      {{ls, r4, r4, 4}, true, ls, "ls r4 r4 4", "ls_r4_r4_4"},
225      {{vs, r7, r3, 2}, true, vs, "vs r7 r3 2", "vs_r7_r3_2"},
226      {{cc, r0, r4, 1}, true, cc, "cc r0 r4 1", "cc_r0_r4_1"},
227      {{ge, r4, r2, 3}, true, ge, "ge r4 r2 3", "ge_r4_r2_3"},
228      {{pl, r1, r6, 0}, true, pl, "pl r1 r6 0", "pl_r1_r6_0"},
229      {{eq, r1, r5, 4}, true, eq, "eq r1 r5 4", "eq_r1_r5_4"},
230      {{pl, r0, r1, 7}, true, pl, "pl r0 r1 7", "pl_r0_r1_7"},
231      {{cs, r5, r6, 2}, true, cs, "cs r5 r6 2", "cs_r5_r6_2"},
232      {{mi, r1, r2, 3}, true, mi, "mi r1 r2 3", "mi_r1_r2_3"},
233      {{mi, r3, r4, 0}, true, mi, "mi r3 r4 0", "mi_r3_r4_0"},
234      {{ne, r5, r1, 1}, true, ne, "ne r5 r1 1", "ne_r5_r1_1"},
235      {{cc, r3, r5, 4}, true, cc, "cc r3 r5 4", "cc_r3_r5_4"},
236      {{ne, r4, r1, 4}, true, ne, "ne r4 r1 4", "ne_r4_r1_4"},
237      {{vs, r4, r4, 4}, true, vs, "vs r4 r4 4", "vs_r4_r4_4"},
238      {{mi, r4, r2, 6}, true, mi, "mi r4 r2 6", "mi_r4_r2_6"},
239      {{hi, r4, r5, 3}, true, hi, "hi r4 r5 3", "hi_r4_r5_3"},
240      {{pl, r2, r5, 7}, true, pl, "pl r2 r5 7", "pl_r2_r5_7"},
241      {{cs, r1, r4, 1}, true, cs, "cs r1 r4 1", "cs_r1_r4_1"},
242      {{hi, r7, r5, 0}, true, hi, "hi r7 r5 0", "hi_r7_r5_0"},
243      {{mi, r5, r6, 4}, true, mi, "mi r5 r6 4", "mi_r5_r6_4"},
244      {{pl, r3, r2, 1}, true, pl, "pl r3 r2 1", "pl_r3_r2_1"},
245      {{le, r1, r5, 2}, true, le, "le r1 r5 2", "le_r1_r5_2"},
246      {{le, r1, r0, 0}, true, le, "le r1 r0 0", "le_r1_r0_0"},
247      {{vc, r5, r5, 4}, true, vc, "vc r5 r5 4", "vc_r5_r5_4"},
248      {{vc, r7, r2, 5}, true, vc, "vc r7 r2 5", "vc_r7_r2_5"},
249      {{hi, r5, r4, 2}, true, hi, "hi r5 r4 2", "hi_r5_r4_2"},
250      {{ls, r4, r4, 1}, true, ls, "ls r4 r4 1", "ls_r4_r4_1"},
251      {{cc, r6, r6, 4}, true, cc, "cc r6 r6 4", "cc_r6_r6_4"},
252      {{mi, r6, r7, 0}, true, mi, "mi r6 r7 0", "mi_r6_r7_0"},
253      {{eq, r0, r1, 2}, true, eq, "eq r0 r1 2", "eq_r0_r1_2"},
254      {{cc, r7, r2, 5}, true, cc, "cc r7 r2 5", "cc_r7_r2_5"},
255      {{ls, r6, r7, 7}, true, ls, "ls r6 r7 7", "ls_r6_r7_7"},
256      {{cs, r1, r1, 3}, true, cs, "cs r1 r1 3", "cs_r1_r1_3"},
257      {{ls, r7, r1, 2}, true, ls, "ls r7 r1 2", "ls_r7_r1_2"},
258      {{gt, r3, r1, 3}, true, gt, "gt r3 r1 3", "gt_r3_r1_3"},
259      {{gt, r4, r7, 0}, true, gt, "gt r4 r7 0", "gt_r4_r7_0"},
260      {{pl, r4, r5, 2}, true, pl, "pl r4 r5 2", "pl_r4_r5_2"},
261      {{vs, r4, r7, 6}, true, vs, "vs r4 r7 6", "vs_r4_r7_6"},
262      {{vc, r5, r1, 6}, true, vc, "vc r5 r1 6", "vc_r5_r1_6"},
263      {{vs, r6, r5, 5}, true, vs, "vs r6 r5 5", "vs_r6_r5_5"},
264      {{eq, r5, r0, 1}, true, eq, "eq r5 r0 1", "eq_r5_r0_1"},
265      {{mi, r4, r6, 1}, true, mi, "mi r4 r6 1", "mi_r4_r6_1"},
266      {{cs, r1, r5, 7}, true, cs, "cs r1 r5 7", "cs_r1_r5_7"},
267      {{lt, r0, r3, 6}, true, lt, "lt r0 r3 6", "lt_r0_r3_6"},
268      {{eq, r7, r0, 6}, true, eq, "eq r7 r0 6", "eq_r7_r0_6"},
269      {{vc, r3, r5, 3}, true, vc, "vc r3 r5 3", "vc_r3_r5_3"},
270      {{gt, r4, r7, 7}, true, gt, "gt r4 r7 7", "gt_r4_r7_7"},
271      {{ne, r4, r1, 1}, true, ne, "ne r4 r1 1", "ne_r4_r1_1"},
272      {{ge, r6, r7, 4}, true, ge, "ge r6 r7 4", "ge_r6_r7_4"},
273      {{le, r2, r0, 2}, true, le, "le r2 r0 2", "le_r2_r0_2"},
274      {{mi, r7, r5, 7}, true, mi, "mi r7 r5 7", "mi_r7_r5_7"},
275      {{lt, r5, r3, 6}, true, lt, "lt r5 r3 6", "lt_r5_r3_6"},
276      {{vs, r1, r4, 7}, true, vs, "vs r1 r4 7", "vs_r1_r4_7"},
277      {{cs, r2, r2, 4}, true, cs, "cs r2 r2 4", "cs_r2_r2_4"},
278      {{cs, r1, r0, 1}, true, cs, "cs r1 r0 1", "cs_r1_r0_1"},
279      {{ne, r0, r7, 4}, true, ne, "ne r0 r7 4", "ne_r0_r7_4"},
280      {{vs, r6, r0, 4}, true, vs, "vs r6 r0 4", "vs_r6_r0_4"},
281      {{vc, r7, r1, 2}, true, vc, "vc r7 r1 2", "vc_r7_r1_2"},
282      {{ls, r5, r0, 4}, true, ls, "ls r5 r0 4", "ls_r5_r0_4"},
283      {{le, r0, r1, 1}, true, le, "le r0 r1 1", "le_r0_r1_1"},
284      {{cs, r7, r3, 1}, true, cs, "cs r7 r3 1", "cs_r7_r3_1"},
285      {{cs, r7, r5, 3}, true, cs, "cs r7 r5 3", "cs_r7_r5_3"},
286      {{gt, r3, r7, 2}, true, gt, "gt r3 r7 2", "gt_r3_r7_2"},
287      {{eq, r3, r4, 1}, true, eq, "eq r3 r4 1", "eq_r3_r4_1"},
288      {{mi, r3, r4, 6}, true, mi, "mi r3 r4 6", "mi_r3_r4_6"},
289      {{eq, r0, r4, 3}, true, eq, "eq r0 r4 3", "eq_r0_r4_3"},
290      {{le, r0, r7, 6}, true, le, "le r0 r7 6", "le_r0_r7_6"},
291      {{le, r5, r6, 3}, true, le, "le r5 r6 3", "le_r5_r6_3"},
292      {{vs, r3, r5, 3}, true, vs, "vs r3 r5 3", "vs_r3_r5_3"},
293      {{pl, r3, r4, 3}, true, pl, "pl r3 r4 3", "pl_r3_r4_3"},
294      {{le, r2, r3, 0}, true, le, "le r2 r3 0", "le_r2_r3_0"},
295      {{vc, r5, r4, 4}, true, vc, "vc r5 r4 4", "vc_r5_r4_4"},
296      {{le, r5, r0, 6}, true, le, "le r5 r0 6", "le_r5_r0_6"},
297      {{vs, r6, r5, 6}, true, vs, "vs r6 r5 6", "vs_r6_r5_6"},
298      {{ge, r2, r2, 3}, true, ge, "ge r2 r2 3", "ge_r2_r2_3"},
299      {{vs, r5, r4, 5}, true, vs, "vs r5 r4 5", "vs_r5_r4_5"},
300      {{vc, r6, r4, 2}, true, vc, "vc r6 r4 2", "vc_r6_r4_2"},
301      {{ne, r4, r2, 2}, true, ne, "ne r4 r2 2", "ne_r4_r2_2"},
302      {{ge, r5, r7, 7}, true, ge, "ge r5 r7 7", "ge_r5_r7_7"},
303      {{ne, r1, r7, 7}, true, ne, "ne r1 r7 7", "ne_r1_r7_7"},
304      {{vc, r6, r1, 2}, true, vc, "vc r6 r1 2", "vc_r6_r1_2"},
305      {{mi, r2, r4, 0}, true, mi, "mi r2 r4 0", "mi_r2_r4_0"},
306      {{hi, r6, r3, 1}, true, hi, "hi r6 r3 1", "hi_r6_r3_1"},
307      {{cc, r5, r1, 5}, true, cc, "cc r5 r1 5", "cc_r5_r1_5"},
308      {{mi, r3, r5, 1}, true, mi, "mi r3 r5 1", "mi_r3_r5_1"},
309      {{vs, r0, r5, 3}, true, vs, "vs r0 r5 3", "vs_r0_r5_3"},
310      {{gt, r0, r1, 4}, true, gt, "gt r0 r1 4", "gt_r0_r1_4"},
311      {{vs, r7, r5, 4}, true, vs, "vs r7 r5 4", "vs_r7_r5_4"},
312      {{mi, r1, r5, 3}, true, mi, "mi r1 r5 3", "mi_r1_r5_3"},
313      {{hi, r6, r6, 0}, true, hi, "hi r6 r6 0", "hi_r6_r6_0"},
314      {{gt, r6, r4, 3}, true, gt, "gt r6 r4 3", "gt_r6_r4_3"},
315      {{gt, r3, r2, 6}, true, gt, "gt r3 r2 6", "gt_r3_r2_6"},
316      {{mi, r3, r7, 7}, true, mi, "mi r3 r7 7", "mi_r3_r7_7"},
317      {{gt, r4, r6, 0}, true, gt, "gt r4 r6 0", "gt_r4_r6_0"},
318      {{cs, r6, r4, 0}, true, cs, "cs r6 r4 0", "cs_r6_r4_0"},
319      {{ne, r6, r2, 0}, true, ne, "ne r6 r2 0", "ne_r6_r2_0"},
320      {{ne, r3, r3, 0}, true, ne, "ne r3 r3 0", "ne_r3_r3_0"},
321      {{gt, r2, r3, 5}, true, gt, "gt r2 r3 5", "gt_r2_r3_5"},
322      {{ne, r5, r0, 5}, true, ne, "ne r5 r0 5", "ne_r5_r0_5"},
323      {{le, r7, r7, 4}, true, le, "le r7 r7 4", "le_r7_r7_4"},
324      {{ge, r7, r3, 0}, true, ge, "ge r7 r3 0", "ge_r7_r3_0"},
325      {{le, r4, r5, 6}, true, le, "le r4 r5 6", "le_r4_r5_6"},
326      {{ls, r3, r2, 6}, true, ls, "ls r3 r2 6", "ls_r3_r2_6"},
327      {{gt, r4, r5, 7}, true, gt, "gt r4 r5 7", "gt_r4_r5_7"},
328      {{eq, r2, r1, 3}, true, eq, "eq r2 r1 3", "eq_r2_r1_3"},
329      {{lt, r3, r0, 6}, true, lt, "lt r3 r0 6", "lt_r3_r0_6"},
330      {{ne, r4, r0, 2}, true, ne, "ne r4 r0 2", "ne_r4_r0_2"},
331      {{lt, r7, r6, 5}, true, lt, "lt r7 r6 5", "lt_r7_r6_5"},
332      {{hi, r6, r0, 6}, true, hi, "hi r6 r0 6", "hi_r6_r0_6"},
333      {{vs, r1, r6, 7}, true, vs, "vs r1 r6 7", "vs_r1_r6_7"},
334      {{cc, r0, r6, 6}, true, cc, "cc r0 r6 6", "cc_r0_r6_6"},
335      {{ne, r1, r7, 6}, true, ne, "ne r1 r7 6", "ne_r1_r7_6"},
336      {{cs, r2, r3, 1}, true, cs, "cs r2 r3 1", "cs_r2_r3_1"},
337      {{lt, r3, r7, 7}, true, lt, "lt r3 r7 7", "lt_r3_r7_7"},
338      {{cc, r3, r3, 0}, true, cc, "cc r3 r3 0", "cc_r3_r3_0"},
339      {{eq, r4, r3, 6}, true, eq, "eq r4 r3 6", "eq_r4_r3_6"},
340      {{cs, r0, r5, 7}, true, cs, "cs r0 r5 7", "cs_r0_r5_7"},
341      {{gt, r1, r2, 4}, true, gt, "gt r1 r2 4", "gt_r1_r2_4"},
342      {{cc, r2, r1, 5}, true, cc, "cc r2 r1 5", "cc_r2_r1_5"},
343      {{pl, r7, r5, 5}, true, pl, "pl r7 r5 5", "pl_r7_r5_5"},
344      {{pl, r5, r7, 6}, true, pl, "pl r5 r7 6", "pl_r5_r7_6"},
345      {{vc, r2, r2, 7}, true, vc, "vc r2 r2 7", "vc_r2_r2_7"},
346      {{vs, r4, r4, 0}, true, vs, "vs r4 r4 0", "vs_r4_r4_0"},
347      {{vc, r2, r6, 5}, true, vc, "vc r2 r6 5", "vc_r2_r6_5"},
348      {{gt, r1, r7, 0}, true, gt, "gt r1 r7 0", "gt_r1_r7_0"},
349      {{pl, r4, r1, 7}, true, pl, "pl r4 r1 7", "pl_r4_r1_7"},
350      {{lt, r4, r3, 2}, true, lt, "lt r4 r3 2", "lt_r4_r3_2"},
351      {{ge, r0, r2, 4}, true, ge, "ge r0 r2 4", "ge_r0_r2_4"},
352      {{ne, r7, r5, 7}, true, ne, "ne r7 r5 7", "ne_r7_r5_7"},
353      {{gt, r2, r1, 6}, true, gt, "gt r2 r1 6", "gt_r2_r1_6"},
354      {{eq, r4, r1, 6}, true, eq, "eq r4 r1 6", "eq_r4_r1_6"},
355      {{vs, r3, r7, 3}, true, vs, "vs r3 r7 3", "vs_r3_r7_3"},
356      {{mi, r0, r7, 3}, true, mi, "mi r0 r7 3", "mi_r0_r7_3"},
357      {{eq, r3, r5, 6}, true, eq, "eq r3 r5 6", "eq_r3_r5_6"},
358      {{lt, r6, r2, 3}, true, lt, "lt r6 r2 3", "lt_r6_r2_3"},
359      {{lt, r7, r5, 5}, true, lt, "lt r7 r5 5", "lt_r7_r5_5"},
360      {{vc, r6, r5, 6}, true, vc, "vc r6 r5 6", "vc_r6_r5_6"},
361      {{cs, r2, r0, 7}, true, cs, "cs r2 r0 7", "cs_r2_r0_7"},
362      {{hi, r4, r2, 3}, true, hi, "hi r4 r2 3", "hi_r4_r2_3"},
363      {{vs, r5, r4, 7}, true, vs, "vs r5 r4 7", "vs_r5_r4_7"},
364      {{ge, r7, r1, 2}, true, ge, "ge r7 r1 2", "ge_r7_r1_2"},
365      {{cc, r6, r4, 6}, true, cc, "cc r6 r4 6", "cc_r6_r4_6"},
366      {{ls, r4, r1, 0}, true, ls, "ls r4 r1 0", "ls_r4_r1_0"},
367      {{cc, r1, r1, 1}, true, cc, "cc r1 r1 1", "cc_r1_r1_1"},
368      {{ls, r2, r3, 5}, true, ls, "ls r2 r3 5", "ls_r2_r3_5"},
369      {{cc, r2, r0, 6}, true, cc, "cc r2 r0 6", "cc_r2_r0_6"},
370      {{gt, r6, r5, 4}, true, gt, "gt r6 r5 4", "gt_r6_r5_4"},
371      {{le, r3, r3, 3}, true, le, "le r3 r3 3", "le_r3_r3_3"},
372      {{ls, r4, r5, 7}, true, ls, "ls r4 r5 7", "ls_r4_r5_7"},
373      {{ls, r3, r7, 0}, true, ls, "ls r3 r7 0", "ls_r3_r7_0"},
374      {{lt, r5, r4, 1}, true, lt, "lt r5 r4 1", "lt_r5_r4_1"},
375      {{hi, r0, r2, 3}, true, hi, "hi r0 r2 3", "hi_r0_r2_3"},
376      {{ne, r7, r2, 2}, true, ne, "ne r7 r2 2", "ne_r7_r2_2"},
377      {{gt, r6, r4, 4}, true, gt, "gt r6 r4 4", "gt_r6_r4_4"},
378      {{cc, r5, r1, 0}, true, cc, "cc r5 r1 0", "cc_r5_r1_0"},
379      {{le, r6, r5, 3}, true, le, "le r6 r5 3", "le_r6_r5_3"},
380      {{cs, r3, r4, 4}, true, cs, "cs r3 r4 4", "cs_r3_r4_4"},
381      {{mi, r4, r7, 5}, true, mi, "mi r4 r7 5", "mi_r4_r7_5"},
382      {{mi, r1, r3, 6}, true, mi, "mi r1 r3 6", "mi_r1_r3_6"},
383      {{hi, r0, r7, 5}, true, hi, "hi r0 r7 5", "hi_r0_r7_5"},
384      {{ls, r4, r3, 2}, true, ls, "ls r4 r3 2", "ls_r4_r3_2"},
385      {{ne, r4, r7, 6}, true, ne, "ne r4 r7 6", "ne_r4_r7_6"},
386      {{cs, r4, r5, 5}, true, cs, "cs r4 r5 5", "cs_r4_r5_5"},
387      {{mi, r3, r5, 0}, true, mi, "mi r3 r5 0", "mi_r3_r5_0"},
388      {{cs, r5, r0, 1}, true, cs, "cs r5 r0 1", "cs_r5_r0_1"},
389      {{pl, r3, r2, 6}, true, pl, "pl r3 r2 6", "pl_r3_r2_6"},
390      {{vs, r1, r6, 5}, true, vs, "vs r1 r6 5", "vs_r1_r6_5"},
391      {{le, r4, r0, 2}, true, le, "le r4 r0 2", "le_r4_r0_2"},
392      {{eq, r3, r7, 7}, true, eq, "eq r3 r7 7", "eq_r3_r7_7"},
393      {{lt, r6, r4, 7}, true, lt, "lt r6 r4 7", "lt_r6_r4_7"},
394      {{hi, r2, r0, 5}, true, hi, "hi r2 r0 5", "hi_r2_r0_5"},
395      {{ge, r1, r3, 3}, true, ge, "ge r1 r3 3", "ge_r1_r3_3"},
396      {{pl, r6, r3, 0}, true, pl, "pl r6 r3 0", "pl_r6_r3_0"},
397      {{hi, r1, r0, 4}, true, hi, "hi r1 r0 4", "hi_r1_r0_4"},
398      {{lt, r3, r5, 3}, true, lt, "lt r3 r5 3", "lt_r3_r5_3"},
399      {{ge, r2, r7, 3}, true, ge, "ge r2 r7 3", "ge_r2_r7_3"},
400      {{mi, r0, r7, 4}, true, mi, "mi r0 r7 4", "mi_r0_r7_4"},
401      {{pl, r7, r5, 1}, true, pl, "pl r7 r5 1", "pl_r7_r5_1"},
402      {{lt, r0, r3, 4}, true, lt, "lt r0 r3 4", "lt_r0_r3_4"},
403      {{mi, r6, r4, 2}, true, mi, "mi r6 r4 2", "mi_r6_r4_2"},
404      {{vc, r4, r4, 1}, true, vc, "vc r4 r4 1", "vc_r4_r4_1"},
405      {{gt, r1, r5, 3}, true, gt, "gt r1 r5 3", "gt_r1_r5_3"},
406      {{cc, r2, r0, 7}, true, cc, "cc r2 r0 7", "cc_r2_r0_7"},
407      {{le, r6, r4, 0}, true, le, "le r6 r4 0", "le_r6_r4_0"},
408      {{le, r0, r6, 2}, true, le, "le r0 r6 2", "le_r0_r6_2"},
409      {{le, r1, r1, 7}, true, le, "le r1 r1 7", "le_r1_r1_7"},
410      {{vs, r1, r1, 5}, true, vs, "vs r1 r1 5", "vs_r1_r1_5"},
411      {{cs, r6, r0, 2}, true, cs, "cs r6 r0 2", "cs_r6_r0_2"},
412      {{vs, r3, r0, 7}, true, vs, "vs r3 r0 7", "vs_r3_r0_7"},
413      {{vs, r3, r3, 4}, true, vs, "vs r3 r3 4", "vs_r3_r3_4"},
414      {{cs, r4, r2, 7}, true, cs, "cs r4 r2 7", "cs_r4_r2_7"},
415      {{mi, r4, r0, 1}, true, mi, "mi r4 r0 1", "mi_r4_r0_1"},
416      {{gt, r2, r4, 1}, true, gt, "gt r2 r4 1", "gt_r2_r4_1"},
417      {{ne, r4, r6, 0}, true, ne, "ne r4 r6 0", "ne_r4_r6_0"},
418      {{cs, r4, r1, 5}, true, cs, "cs r4 r1 5", "cs_r4_r1_5"},
419      {{cc, r2, r6, 3}, true, cc, "cc r2 r6 3", "cc_r2_r6_3"},
420      {{ge, r6, r1, 0}, true, ge, "ge r6 r1 0", "ge_r6_r1_0"},
421      {{pl, r2, r5, 3}, true, pl, "pl r2 r5 3", "pl_r2_r5_3"},
422      {{ne, r1, r7, 4}, true, ne, "ne r1 r7 4", "ne_r1_r7_4"},
423      {{le, r2, r6, 0}, true, le, "le r2 r6 0", "le_r2_r6_0"},
424      {{gt, r7, r1, 6}, true, gt, "gt r7 r1 6", "gt_r7_r1_6"},
425      {{cs, r0, r3, 7}, true, cs, "cs r0 r3 7", "cs_r0_r3_7"},
426      {{mi, r1, r1, 0}, true, mi, "mi r1 r1 0", "mi_r1_r1_0"},
427      {{eq, r4, r0, 5}, true, eq, "eq r4 r0 5", "eq_r4_r0_5"},
428      {{lt, r5, r0, 6}, true, lt, "lt r5 r0 6", "lt_r5_r0_6"},
429      {{vc, r2, r6, 6}, true, vc, "vc r2 r6 6", "vc_r2_r6_6"},
430      {{cs, r1, r2, 7}, true, cs, "cs r1 r2 7", "cs_r1_r2_7"},
431      {{ls, r6, r6, 3}, true, ls, "ls r6 r6 3", "ls_r6_r6_3"},
432      {{lt, r5, r0, 4}, true, lt, "lt r5 r0 4", "lt_r5_r0_4"},
433      {{gt, r1, r6, 0}, true, gt, "gt r1 r6 0", "gt_r1_r6_0"},
434      {{vs, r7, r2, 2}, true, vs, "vs r7 r2 2", "vs_r7_r2_2"},
435      {{gt, r1, r3, 5}, true, gt, "gt r1 r3 5", "gt_r1_r3_5"},
436      {{mi, r2, r6, 5}, true, mi, "mi r2 r6 5", "mi_r2_r6_5"},
437      {{cs, r3, r6, 2}, true, cs, "cs r3 r6 2", "cs_r3_r6_2"},
438      {{cs, r2, r6, 2}, true, cs, "cs r2 r6 2", "cs_r2_r6_2"},
439      {{cs, r7, r3, 6}, true, cs, "cs r7 r3 6", "cs_r7_r3_6"},
440      {{cs, r7, r7, 6}, true, cs, "cs r7 r7 6", "cs_r7_r7_6"},
441      {{eq, r1, r1, 4}, true, eq, "eq r1 r1 4", "eq_r1_r1_4"},
442      {{mi, r3, r2, 2}, true, mi, "mi r3 r2 2", "mi_r3_r2_2"},
443      {{vc, r5, r7, 0}, true, vc, "vc r5 r7 0", "vc_r5_r7_0"},
444      {{hi, r1, r6, 7}, true, hi, "hi r1 r6 7", "hi_r1_r6_7"},
445      {{vs, r5, r7, 3}, true, vs, "vs r5 r7 3", "vs_r5_r7_3"},
446      {{gt, r1, r7, 2}, true, gt, "gt r1 r7 2", "gt_r1_r7_2"},
447      {{vc, r4, r5, 0}, true, vc, "vc r4 r5 0", "vc_r4_r5_0"},
448      {{le, r6, r7, 0}, true, le, "le r6 r7 0", "le_r6_r7_0"},
449      {{ge, r6, r1, 5}, true, ge, "ge r6 r1 5", "ge_r6_r1_5"},
450      {{cc, r0, r2, 1}, true, cc, "cc r0 r2 1", "cc_r0_r2_1"},
451      {{le, r7, r3, 5}, true, le, "le r7 r3 5", "le_r7_r3_5"},
452      {{hi, r7, r1, 2}, true, hi, "hi r7 r1 2", "hi_r7_r1_2"},
453      {{cc, r7, r5, 0}, true, cc, "cc r7 r5 0", "cc_r7_r5_0"},
454      {{gt, r0, r6, 0}, true, gt, "gt r0 r6 0", "gt_r0_r6_0"},
455      {{ne, r6, r5, 4}, true, ne, "ne r6 r5 4", "ne_r6_r5_4"},
456      {{cc, r7, r0, 1}, true, cc, "cc r7 r0 1", "cc_r7_r0_1"},
457      {{eq, r6, r6, 5}, true, eq, "eq r6 r6 5", "eq_r6_r6_5"},
458      {{pl, r4, r3, 0}, true, pl, "pl r4 r3 0", "pl_r4_r3_0"},
459      {{ne, r2, r3, 6}, true, ne, "ne r2 r3 6", "ne_r2_r3_6"},
460      {{le, r0, r2, 1}, true, le, "le r0 r2 1", "le_r0_r2_1"},
461      {{eq, r0, r1, 5}, true, eq, "eq r0 r1 5", "eq_r0_r1_5"},
462      {{ls, r5, r6, 2}, true, ls, "ls r5 r6 2", "ls_r5_r6_2"},
463      {{ne, r3, r4, 5}, true, ne, "ne r3 r4 5", "ne_r3_r4_5"},
464      {{gt, r1, r4, 2}, true, gt, "gt r1 r4 2", "gt_r1_r4_2"},
465      {{le, r3, r5, 2}, true, le, "le r3 r5 2", "le_r3_r5_2"},
466      {{vc, r0, r5, 5}, true, vc, "vc r0 r5 5", "vc_r0_r5_5"},
467      {{pl, r5, r3, 6}, true, pl, "pl r5 r3 6", "pl_r5_r3_6"},
468      {{eq, r0, r1, 4}, true, eq, "eq r0 r1 4", "eq_r0_r1_4"},
469      {{cs, r0, r0, 7}, true, cs, "cs r0 r0 7", "cs_r0_r0_7"},
470      {{lt, r6, r5, 6}, true, lt, "lt r6 r5 6", "lt_r6_r5_6"},
471      {{vs, r1, r1, 2}, true, vs, "vs r1 r1 2", "vs_r1_r1_2"},
472      {{mi, r4, r5, 0}, true, mi, "mi r4 r5 0", "mi_r4_r5_0"},
473      {{vc, r3, r0, 4}, true, vc, "vc r3 r0 4", "vc_r3_r0_4"},
474      {{le, r2, r2, 3}, true, le, "le r2 r2 3", "le_r2_r2_3"},
475      {{gt, r3, r7, 5}, true, gt, "gt r3 r7 5", "gt_r3_r7_5"},
476      {{cs, r0, r4, 0}, true, cs, "cs r0 r4 0", "cs_r0_r4_0"},
477      {{gt, r5, r0, 2}, true, gt, "gt r5 r0 2", "gt_r5_r0_2"},
478      {{vs, r4, r1, 1}, true, vs, "vs r4 r1 1", "vs_r4_r1_1"},
479      {{cc, r7, r3, 5}, true, cc, "cc r7 r3 5", "cc_r7_r3_5"},
480      {{ls, r5, r0, 3}, true, ls, "ls r5 r0 3", "ls_r5_r0_3"},
481      {{vs, r2, r4, 3}, true, vs, "vs r2 r4 3", "vs_r2_r4_3"},
482      {{vc, r3, r3, 4}, true, vc, "vc r3 r3 4", "vc_r3_r3_4"},
483      {{gt, r0, r6, 1}, true, gt, "gt r0 r6 1", "gt_r0_r6_1"},
484      {{hi, r1, r7, 1}, true, hi, "hi r1 r7 1", "hi_r1_r7_1"},
485      {{ne, r2, r4, 5}, true, ne, "ne r2 r4 5", "ne_r2_r4_5"},
486      {{hi, r0, r7, 0}, true, hi, "hi r0 r7 0", "hi_r0_r7_0"},
487      {{ne, r1, r1, 5}, true, ne, "ne r1 r1 5", "ne_r1_r1_5"},
488      {{cc, r1, r0, 2}, true, cc, "cc r1 r0 2", "cc_r1_r0_2"},
489      {{cc, r7, r3, 3}, true, cc, "cc r7 r3 3", "cc_r7_r3_3"},
490      {{lt, r0, r0, 3}, true, lt, "lt r0 r0 3", "lt_r0_r0_3"},
491      {{hi, r1, r1, 1}, true, hi, "hi r1 r1 1", "hi_r1_r1_1"},
492      {{vs, r7, r2, 4}, true, vs, "vs r7 r2 4", "vs_r7_r2_4"},
493      {{cs, r2, r1, 3}, true, cs, "cs r2 r1 3", "cs_r2_r1_3"},
494      {{ge, r4, r0, 7}, true, ge, "ge r4 r0 7", "ge_r4_r0_7"},
495      {{gt, r0, r2, 2}, true, gt, "gt r0 r2 2", "gt_r0_r2_2"},
496      {{lt, r6, r4, 4}, true, lt, "lt r6 r4 4", "lt_r6_r4_4"},
497      {{lt, r2, r4, 1}, true, lt, "lt r2 r4 1", "lt_r2_r4_1"},
498      {{cc, r5, r5, 3}, true, cc, "cc r5 r5 3", "cc_r5_r5_3"},
499      {{eq, r7, r3, 0}, true, eq, "eq r7 r3 0", "eq_r7_r3_0"},
500      {{cc, r0, r2, 2}, true, cc, "cc r0 r2 2", "cc_r0_r2_2"},
501      {{mi, r5, r7, 7}, true, mi, "mi r5 r7 7", "mi_r5_r7_7"},
502      {{eq, r2, r4, 5}, true, eq, "eq r2 r4 5", "eq_r2_r4_5"},
503      {{pl, r1, r7, 0}, true, pl, "pl r1 r7 0", "pl_r1_r7_0"},
504      {{vs, r6, r2, 0}, true, vs, "vs r6 r2 0", "vs_r6_r2_0"},
505      {{cc, r0, r1, 6}, true, cc, "cc r0 r1 6", "cc_r0_r1_6"},
506      {{cs, r2, r2, 5}, true, cs, "cs r2 r2 5", "cs_r2_r2_5"},
507      {{le, r0, r6, 7}, true, le, "le r0 r6 7", "le_r0_r6_7"},
508      {{hi, r5, r0, 7}, true, hi, "hi r5 r0 7", "hi_r5_r0_7"},
509      {{gt, r2, r5, 1}, true, gt, "gt r2 r5 1", "gt_r2_r5_1"},
510      {{gt, r2, r1, 2}, true, gt, "gt r2 r1 2", "gt_r2_r1_2"},
511      {{le, r6, r2, 5}, true, le, "le r6 r2 5", "le_r6_r2_5"},
512      {{ls, r4, r3, 3}, true, ls, "ls r4 r3 3", "ls_r4_r3_3"},
513      {{le, r0, r2, 6}, true, le, "le r0 r2 6", "le_r0_r2_6"},
514      {{pl, r0, r7, 6}, true, pl, "pl r0 r7 6", "pl_r0_r7_6"},
515      {{pl, r4, r5, 4}, true, pl, "pl r4 r5 4", "pl_r4_r5_4"},
516      {{vs, r3, r2, 2}, true, vs, "vs r3 r2 2", "vs_r3_r2_2"},
517      {{vc, r2, r4, 3}, true, vc, "vc r2 r4 3", "vc_r2_r4_3"},
518      {{ge, r1, r5, 7}, true, ge, "ge r1 r5 7", "ge_r1_r5_7"},
519      {{pl, r1, r6, 3}, true, pl, "pl r1 r6 3", "pl_r1_r6_3"},
520      {{hi, r3, r6, 0}, true, hi, "hi r3 r6 0", "hi_r3_r6_0"},
521      {{ne, r0, r4, 3}, true, ne, "ne r0 r4 3", "ne_r0_r4_3"},
522      {{ne, r4, r5, 0}, true, ne, "ne r4 r5 0", "ne_r4_r5_0"},
523      {{cc, r7, r6, 2}, true, cc, "cc r7 r6 2", "cc_r7_r6_2"},
524      {{cc, r2, r0, 5}, true, cc, "cc r2 r0 5", "cc_r2_r0_5"},
525      {{ge, r3, r1, 2}, true, ge, "ge r3 r1 2", "ge_r3_r1_2"},
526      {{ge, r1, r1, 2}, true, ge, "ge r1 r1 2", "ge_r1_r1_2"},
527      {{hi, r5, r6, 4}, true, hi, "hi r5 r6 4", "hi_r5_r6_4"},
528      {{ne, r6, r4, 3}, true, ne, "ne r6 r4 3", "ne_r6_r4_3"},
529      {{ne, r3, r1, 0}, true, ne, "ne r3 r1 0", "ne_r3_r1_0"},
530      {{cs, r3, r4, 0}, true, cs, "cs r3 r4 0", "cs_r3_r4_0"},
531      {{eq, r5, r0, 6}, true, eq, "eq r5 r0 6", "eq_r5_r0_6"},
532      {{pl, r1, r5, 1}, true, pl, "pl r1 r5 1", "pl_r1_r5_1"},
533      {{ls, r7, r7, 4}, true, ls, "ls r7 r7 4", "ls_r7_r7_4"},
534      {{le, r2, r2, 2}, true, le, "le r2 r2 2", "le_r2_r2_2"},
535      {{eq, r6, r4, 5}, true, eq, "eq r6 r4 5", "eq_r6_r4_5"},
536      {{cc, r1, r3, 0}, true, cc, "cc r1 r3 0", "cc_r1_r3_0"},
537      {{gt, r3, r5, 5}, true, gt, "gt r3 r5 5", "gt_r3_r5_5"},
538      {{ge, r7, r2, 2}, true, ge, "ge r7 r2 2", "ge_r7_r2_2"},
539      {{gt, r2, r7, 4}, true, gt, "gt r2 r7 4", "gt_r2_r7_4"},
540      {{vs, r7, r3, 3}, true, vs, "vs r7 r3 3", "vs_r7_r3_3"},
541      {{ge, r2, r5, 4}, true, ge, "ge r2 r5 4", "ge_r2_r5_4"},
542      {{ge, r0, r3, 0}, true, ge, "ge r0 r3 0", "ge_r0_r3_0"},
543      {{hi, r3, r1, 4}, true, hi, "hi r3 r1 4", "hi_r3_r1_4"},
544      {{pl, r7, r7, 2}, true, pl, "pl r7 r7 2", "pl_r7_r7_2"},
545      {{pl, r6, r0, 0}, true, pl, "pl r6 r0 0", "pl_r6_r0_0"},
546      {{ls, r0, r6, 4}, true, ls, "ls r0 r6 4", "ls_r0_r6_4"},
547      {{pl, r3, r4, 0}, true, pl, "pl r3 r4 0", "pl_r3_r4_0"},
548      {{ge, r5, r3, 5}, true, ge, "ge r5 r3 5", "ge_r5_r3_5"},
549      {{ls, r3, r2, 5}, true, ls, "ls r3 r2 5", "ls_r3_r2_5"},
550      {{vs, r3, r2, 4}, true, vs, "vs r3 r2 4", "vs_r3_r2_4"},
551      {{gt, r7, r6, 7}, true, gt, "gt r7 r6 7", "gt_r7_r6_7"},
552      {{hi, r0, r2, 6}, true, hi, "hi r0 r2 6", "hi_r0_r2_6"},
553      {{lt, r2, r6, 4}, true, lt, "lt r2 r6 4", "lt_r2_r6_4"},
554      {{mi, r1, r0, 3}, true, mi, "mi r1 r0 3", "mi_r1_r0_3"},
555      {{le, r5, r4, 7}, true, le, "le r5 r4 7", "le_r5_r4_7"},
556      {{ge, r0, r7, 6}, true, ge, "ge r0 r7 6", "ge_r0_r7_6"},
557      {{hi, r7, r3, 3}, true, hi, "hi r7 r3 3", "hi_r7_r3_3"},
558      {{cc, r4, r4, 7}, true, cc, "cc r4 r4 7", "cc_r4_r4_7"},
559      {{le, r4, r2, 5}, true, le, "le r4 r2 5", "le_r4_r2_5"},
560      {{gt, r0, r0, 3}, true, gt, "gt r0 r0 3", "gt_r0_r0_3"},
561      {{pl, r0, r4, 5}, true, pl, "pl r0 r4 5", "pl_r0_r4_5"},
562      {{ge, r0, r5, 6}, true, ge, "ge r0 r5 6", "ge_r0_r5_6"},
563      {{lt, r7, r3, 1}, true, lt, "lt r7 r3 1", "lt_r7_r3_1"},
564      {{cs, r4, r2, 0}, true, cs, "cs r4 r2 0", "cs_r4_r2_0"},
565      {{vs, r2, r5, 5}, true, vs, "vs r2 r5 5", "vs_r2_r5_5"},
566      {{le, r5, r4, 1}, true, le, "le r5 r4 1", "le_r5_r4_1"},
567      {{ge, r5, r5, 1}, true, ge, "ge r5 r5 1", "ge_r5_r5_1"},
568      {{ls, r2, r4, 6}, true, ls, "ls r2 r4 6", "ls_r2_r4_6"},
569      {{lt, r4, r4, 0}, true, lt, "lt r4 r4 0", "lt_r4_r4_0"},
570      {{vs, r4, r6, 1}, true, vs, "vs r4 r6 1", "vs_r4_r6_1"},
571      {{hi, r4, r1, 0}, true, hi, "hi r4 r1 0", "hi_r4_r1_0"},
572      {{vc, r0, r7, 1}, true, vc, "vc r0 r7 1", "vc_r0_r7_1"},
573      {{lt, r2, r7, 2}, true, lt, "lt r2 r7 2", "lt_r2_r7_2"},
574      {{ls, r7, r5, 6}, true, ls, "ls r7 r5 6", "ls_r7_r5_6"},
575      {{vs, r3, r2, 5}, true, vs, "vs r3 r2 5", "vs_r3_r2_5"},
576      {{vs, r6, r3, 4}, true, vs, "vs r6 r3 4", "vs_r6_r3_4"},
577      {{le, r1, r2, 6}, true, le, "le r1 r2 6", "le_r1_r2_6"},
578      {{vc, r3, r7, 7}, true, vc, "vc r3 r7 7", "vc_r3_r7_7"},
579      {{le, r7, r7, 0}, true, le, "le r7 r7 0", "le_r7_r7_0"},
580      {{lt, r0, r0, 6}, true, lt, "lt r0 r0 6", "lt_r0_r0_6"},
581      {{ne, r4, r5, 2}, true, ne, "ne r4 r5 2", "ne_r4_r5_2"},
582      {{mi, r4, r1, 6}, true, mi, "mi r4 r1 6", "mi_r4_r1_6"},
583      {{ge, r1, r4, 2}, true, ge, "ge r1 r4 2", "ge_r1_r4_2"},
584      {{mi, r4, r3, 3}, true, mi, "mi r4 r3 3", "mi_r4_r3_3"},
585      {{lt, r2, r5, 0}, true, lt, "lt r2 r5 0", "lt_r2_r5_0"},
586      {{gt, r3, r4, 1}, true, gt, "gt r3 r4 1", "gt_r3_r4_1"},
587      {{le, r6, r3, 3}, true, le, "le r6 r3 3", "le_r6_r3_3"},
588      {{ge, r2, r6, 6}, true, ge, "ge r2 r6 6", "ge_r2_r6_6"},
589      {{ne, r2, r1, 5}, true, ne, "ne r2 r1 5", "ne_r2_r1_5"},
590      {{cc, r1, r6, 0}, true, cc, "cc r1 r6 0", "cc_r1_r6_0"},
591      {{lt, r1, r6, 1}, true, lt, "lt r1 r6 1", "lt_r1_r6_1"},
592      {{vc, r2, r7, 2}, true, vc, "vc r2 r7 2", "vc_r2_r7_2"},
593      {{le, r5, r1, 1}, true, le, "le r5 r1 1", "le_r5_r1_1"},
594      {{ge, r1, r7, 3}, true, ge, "ge r1 r7 3", "ge_r1_r7_3"},
595      {{gt, r5, r3, 5}, true, gt, "gt r5 r3 5", "gt_r5_r3_5"},
596      {{ne, r1, r5, 3}, true, ne, "ne r1 r5 3", "ne_r1_r5_3"},
597      {{gt, r5, r6, 4}, true, gt, "gt r5 r6 4", "gt_r5_r6_4"},
598      {{eq, r3, r2, 0}, true, eq, "eq r3 r2 0", "eq_r3_r2_0"},
599      {{lt, r0, r0, 1}, true, lt, "lt r0 r0 1", "lt_r0_r0_1"},
600      {{cc, r0, r3, 1}, true, cc, "cc r0 r3 1", "cc_r0_r3_1"},
601      {{cc, r0, r1, 5}, true, cc, "cc r0 r1 5", "cc_r0_r1_5"},
602      {{ne, r4, r4, 0}, true, ne, "ne r4 r4 0", "ne_r4_r4_0"},
603      {{ge, r0, r6, 4}, true, ge, "ge r0 r6 4", "ge_r0_r6_4"},
604      {{lt, r2, r6, 0}, true, lt, "lt r2 r6 0", "lt_r2_r6_0"},
605      {{cs, r0, r6, 5}, true, cs, "cs r0 r6 5", "cs_r0_r6_5"},
606      {{lt, r3, r5, 1}, true, lt, "lt r3 r5 1", "lt_r3_r5_1"},
607      {{lt, r7, r1, 0}, true, lt, "lt r7 r1 0", "lt_r7_r1_0"},
608      {{cc, r6, r3, 6}, true, cc, "cc r6 r3 6", "cc_r6_r3_6"},
609      {{gt, r1, r0, 0}, true, gt, "gt r1 r0 0", "gt_r1_r0_0"},
610      {{ls, r0, r7, 5}, true, ls, "ls r0 r7 5", "ls_r0_r7_5"},
611      {{hi, r5, r2, 6}, true, hi, "hi r5 r2 6", "hi_r5_r2_6"},
612      {{pl, r5, r2, 7}, true, pl, "pl r5 r2 7", "pl_r5_r2_7"},
613      {{mi, r7, r0, 5}, true, mi, "mi r7 r0 5", "mi_r7_r0_5"},
614      {{cc, r3, r0, 1}, true, cc, "cc r3 r0 1", "cc_r3_r0_1"},
615      {{lt, r2, r2, 0}, true, lt, "lt r2 r2 0", "lt_r2_r2_0"},
616      {{vc, r2, r1, 6}, true, vc, "vc r2 r1 6", "vc_r2_r1_6"},
617      {{le, r2, r3, 3}, true, le, "le r2 r3 3", "le_r2_r3_3"},
618      {{le, r1, r3, 1}, true, le, "le r1 r3 1", "le_r1_r3_1"},
619      {{ls, r5, r6, 4}, true, ls, "ls r5 r6 4", "ls_r5_r6_4"},
620      {{ne, r5, r1, 0}, true, ne, "ne r5 r1 0", "ne_r5_r1_0"},
621      {{le, r0, r0, 5}, true, le, "le r0 r0 5", "le_r0_r0_5"},
622      {{cc, r4, r7, 0}, true, cc, "cc r4 r7 0", "cc_r4_r7_0"},
623      {{ne, r1, r4, 0}, true, ne, "ne r1 r4 0", "ne_r1_r4_0"},
624      {{hi, r5, r3, 7}, true, hi, "hi r5 r3 7", "hi_r5_r3_7"},
625      {{ne, r0, r3, 1}, true, ne, "ne r0 r3 1", "ne_r0_r3_1"},
626      {{vs, r1, r3, 0}, true, vs, "vs r1 r3 0", "vs_r1_r3_0"},
627      {{gt, r6, r5, 7}, true, gt, "gt r6 r5 7", "gt_r6_r5_7"},
628      {{cs, r3, r0, 1}, true, cs, "cs r3 r0 1", "cs_r3_r0_1"},
629      {{cc, r7, r0, 5}, true, cc, "cc r7 r0 5", "cc_r7_r0_5"},
630      {{pl, r5, r2, 5}, true, pl, "pl r5 r2 5", "pl_r5_r2_5"},
631      {{vs, r5, r1, 6}, true, vs, "vs r5 r1 6", "vs_r5_r1_6"},
632      {{ge, r1, r1, 0}, true, ge, "ge r1 r1 0", "ge_r1_r1_0"},
633      {{eq, r6, r1, 2}, true, eq, "eq r6 r1 2", "eq_r6_r1_2"},
634      {{lt, r0, r5, 5}, true, lt, "lt r0 r5 5", "lt_r0_r5_5"},
635      {{vc, r2, r2, 1}, true, vc, "vc r2 r2 1", "vc_r2_r2_1"},
636      {{vc, r0, r4, 4}, true, vc, "vc r0 r4 4", "vc_r0_r4_4"},
637      {{pl, r2, r6, 4}, true, pl, "pl r2 r6 4", "pl_r2_r6_4"},
638      {{hi, r1, r3, 2}, true, hi, "hi r1 r3 2", "hi_r1_r3_2"},
639      {{hi, r7, r2, 1}, true, hi, "hi r7 r2 1", "hi_r7_r2_1"},
640      {{lt, r0, r1, 4}, true, lt, "lt r0 r1 4", "lt_r0_r1_4"},
641      {{cc, r6, r2, 0}, true, cc, "cc r6 r2 0", "cc_r6_r2_0"},
642      {{vs, r5, r4, 2}, true, vs, "vs r5 r4 2", "vs_r5_r4_2"},
643      {{pl, r0, r5, 3}, true, pl, "pl r0 r5 3", "pl_r0_r5_3"},
644      {{le, r0, r3, 4}, true, le, "le r0 r3 4", "le_r0_r3_4"},
645      {{cc, r6, r2, 5}, true, cc, "cc r6 r2 5", "cc_r6_r2_5"},
646      {{ls, r6, r1, 3}, true, ls, "ls r6 r1 3", "ls_r6_r1_3"},
647      {{ne, r6, r6, 0}, true, ne, "ne r6 r6 0", "ne_r6_r6_0"},
648      {{vc, r1, r3, 1}, true, vc, "vc r1 r3 1", "vc_r1_r3_1"},
649      {{lt, r1, r7, 6}, true, lt, "lt r1 r7 6", "lt_r1_r7_6"},
650      {{hi, r5, r3, 5}, true, hi, "hi r5 r3 5", "hi_r5_r3_5"},
651      {{gt, r6, r4, 6}, true, gt, "gt r6 r4 6", "gt_r6_r4_6"},
652      {{ne, r6, r6, 3}, true, ne, "ne r6 r6 3", "ne_r6_r6_3"},
653      {{pl, r2, r4, 1}, true, pl, "pl r2 r4 1", "pl_r2_r4_1"},
654      {{cc, r3, r6, 7}, true, cc, "cc r3 r6 7", "cc_r3_r6_7"},
655      {{cs, r3, r7, 0}, true, cs, "cs r3 r7 0", "cs_r3_r7_0"},
656      {{cc, r7, r7, 5}, true, cc, "cc r7 r7 5", "cc_r7_r7_5"},
657      {{vc, r6, r0, 7}, true, vc, "vc r6 r0 7", "vc_r6_r0_7"},
658      {{lt, r2, r0, 3}, true, lt, "lt r2 r0 3", "lt_r2_r0_3"},
659      {{ne, r5, r4, 7}, true, ne, "ne r5 r4 7", "ne_r5_r4_7"},
660      {{vc, r2, r7, 6}, true, vc, "vc r2 r7 6", "vc_r2_r7_6"},
661      {{cc, r4, r3, 2}, true, cc, "cc r4 r3 2", "cc_r4_r3_2"},
662      {{lt, r3, r7, 6}, true, lt, "lt r3 r7 6", "lt_r3_r7_6"},
663      {{gt, r3, r7, 7}, true, gt, "gt r3 r7 7", "gt_r3_r7_7"},
664      {{ge, r6, r7, 5}, true, ge, "ge r6 r7 5", "ge_r6_r7_5"},
665      {{ls, r1, r4, 5}, true, ls, "ls r1 r4 5", "ls_r1_r4_5"},
666      {{eq, r1, r7, 3}, true, eq, "eq r1 r7 3", "eq_r1_r7_3"},
667      {{le, r1, r4, 6}, true, le, "le r1 r4 6", "le_r1_r4_6"},
668      {{ne, r4, r3, 1}, true, ne, "ne r4 r3 1", "ne_r4_r3_1"},
669      {{pl, r7, r3, 6}, true, pl, "pl r7 r3 6", "pl_r7_r3_6"},
670      {{ne, r7, r7, 0}, true, ne, "ne r7 r7 0", "ne_r7_r7_0"},
671      {{lt, r1, r2, 6}, true, lt, "lt r1 r2 6", "lt_r1_r2_6"},
672      {{le, r0, r7, 2}, true, le, "le r0 r7 2", "le_r0_r7_2"},
673      {{pl, r2, r2, 0}, true, pl, "pl r2 r2 0", "pl_r2_r2_0"},
674      {{vs, r2, r6, 2}, true, vs, "vs r2 r6 2", "vs_r2_r6_2"},
675      {{pl, r0, r7, 7}, true, pl, "pl r0 r7 7", "pl_r0_r7_7"},
676      {{gt, r6, r2, 5}, true, gt, "gt r6 r2 5", "gt_r6_r2_5"},
677      {{cs, r4, r3, 1}, true, cs, "cs r4 r3 1", "cs_r4_r3_1"},
678      {{ne, r3, r5, 4}, true, ne, "ne r3 r5 4", "ne_r3_r5_4"},
679      {{mi, r0, r0, 0}, true, mi, "mi r0 r0 0", "mi_r0_r0_0"},
680      {{ge, r2, r0, 1}, true, ge, "ge r2 r0 1", "ge_r2_r0_1"},
681      {{mi, r7, r3, 7}, true, mi, "mi r7 r3 7", "mi_r7_r3_7"},
682      {{ne, r0, r7, 2}, true, ne, "ne r0 r7 2", "ne_r0_r7_2"},
683      {{ge, r0, r6, 2}, true, ge, "ge r0 r6 2", "ge_r0_r6_2"},
684      {{hi, r2, r7, 2}, true, hi, "hi r2 r7 2", "hi_r2_r7_2"},
685      {{vs, r0, r4, 0}, true, vs, "vs r0 r4 0", "vs_r0_r4_0"},
686      {{hi, r2, r1, 0}, true, hi, "hi r2 r1 0", "hi_r2_r1_0"},
687      {{hi, r7, r0, 3}, true, hi, "hi r7 r0 3", "hi_r7_r0_3"},
688      {{ge, r5, r4, 0}, true, ge, "ge r5 r4 0", "ge_r5_r4_0"},
689      {{mi, r4, r1, 3}, true, mi, "mi r4 r1 3", "mi_r4_r1_3"},
690      {{le, r1, r6, 3}, true, le, "le r1 r6 3", "le_r1_r6_3"},
691      {{le, r7, r6, 2}, true, le, "le r7 r6 2", "le_r7_r6_2"},
692      {{mi, r6, r3, 4}, true, mi, "mi r6 r3 4", "mi_r6_r3_4"},
693      {{cs, r4, r4, 0}, true, cs, "cs r4 r4 0", "cs_r4_r4_0"},
694      {{cc, r2, r3, 2}, true, cc, "cc r2 r3 2", "cc_r2_r3_2"},
695      {{mi, r1, r5, 4}, true, mi, "mi r1 r5 4", "mi_r1_r5_4"},
696      {{cc, r5, r3, 2}, true, cc, "cc r5 r3 2", "cc_r5_r3_2"},
697      {{gt, r2, r0, 2}, true, gt, "gt r2 r0 2", "gt_r2_r0_2"},
698      {{le, r2, r4, 7}, true, le, "le r2 r4 7", "le_r2_r4_7"},
699      {{vc, r2, r3, 3}, true, vc, "vc r2 r3 3", "vc_r2_r3_3"},
700      {{eq, r4, r2, 3}, true, eq, "eq r4 r2 3", "eq_r4_r2_3"},
701      {{ge, r6, r0, 7}, true, ge, "ge r6 r0 7", "ge_r6_r0_7"},
702      {{eq, r0, r7, 7}, true, eq, "eq r0 r7 7", "eq_r0_r7_7"},
703      {{gt, r5, r6, 2}, true, gt, "gt r5 r6 2", "gt_r5_r6_2"},
704      {{ne, r6, r0, 7}, true, ne, "ne r6 r0 7", "ne_r6_r0_7"},
705      {{ne, r7, r0, 4}, true, ne, "ne r7 r0 4", "ne_r7_r0_4"},
706      {{eq, r7, r7, 1}, true, eq, "eq r7 r7 1", "eq_r7_r7_1"},
707      {{le, r6, r5, 0}, true, le, "le r6 r5 0", "le_r6_r5_0"},
708      {{vc, r3, r6, 7}, true, vc, "vc r3 r6 7", "vc_r3_r6_7"},
709      {{pl, r0, r3, 7}, true, pl, "pl r0 r3 7", "pl_r0_r3_7"},
710      {{ls, r5, r5, 0}, true, ls, "ls r5 r5 0", "ls_r5_r5_0"},
711      {{ge, r6, r3, 7}, true, ge, "ge r6 r3 7", "ge_r6_r3_7"},
712      {{eq, r3, r2, 6}, true, eq, "eq r3 r2 6", "eq_r3_r2_6"},
713      {{cs, r5, r3, 7}, true, cs, "cs r5 r3 7", "cs_r5_r3_7"},
714      {{cc, r3, r5, 7}, true, cc, "cc r3 r5 7", "cc_r3_r5_7"},
715      {{ge, r6, r1, 4}, true, ge, "ge r6 r1 4", "ge_r6_r1_4"},
716      {{mi, r5, r4, 5}, true, mi, "mi r5 r4 5", "mi_r5_r4_5"},
717      {{eq, r7, r6, 6}, true, eq, "eq r7 r6 6", "eq_r7_r6_6"},
718      {{gt, r2, r2, 2}, true, gt, "gt r2 r2 2", "gt_r2_r2_2"},
719      {{mi, r1, r0, 2}, true, mi, "mi r1 r0 2", "mi_r1_r0_2"},
720      {{eq, r2, r2, 1}, true, eq, "eq r2 r2 1", "eq_r2_r2_1"},
721      {{lt, r1, r2, 1}, true, lt, "lt r1 r2 1", "lt_r1_r2_1"},
722      {{cc, r5, r1, 3}, true, cc, "cc r5 r1 3", "cc_r5_r1_3"},
723      {{ge, r1, r7, 5}, true, ge, "ge r1 r7 5", "ge_r1_r7_5"},
724      {{lt, r6, r3, 3}, true, lt, "lt r6 r3 3", "lt_r6_r3_3"},
725      {{vc, r3, r1, 7}, true, vc, "vc r3 r1 7", "vc_r3_r1_7"},
726      {{mi, r7, r2, 7}, true, mi, "mi r7 r2 7", "mi_r7_r2_7"},
727      {{lt, r0, r3, 1}, true, lt, "lt r0 r3 1", "lt_r0_r3_1"},
728      {{cs, r1, r7, 1}, true, cs, "cs r1 r7 1", "cs_r1_r7_1"},
729      {{cc, r3, r4, 5}, true, cc, "cc r3 r4 5", "cc_r3_r4_5"},
730      {{lt, r5, r0, 2}, true, lt, "lt r5 r0 2", "lt_r5_r0_2"},
731      {{hi, r1, r5, 7}, true, hi, "hi r1 r5 7", "hi_r1_r5_7"},
732      {{ne, r4, r6, 5}, true, ne, "ne r4 r6 5", "ne_r4_r6_5"},
733      {{vc, r2, r3, 6}, true, vc, "vc r2 r3 6", "vc_r2_r3_6"},
734      {{mi, r1, r7, 0}, true, mi, "mi r1 r7 0", "mi_r1_r7_0"},
735      {{hi, r0, r2, 4}, true, hi, "hi r0 r2 4", "hi_r0_r2_4"},
736      {{cs, r5, r2, 5}, true, cs, "cs r5 r2 5", "cs_r5_r2_5"},
737      {{ge, r2, r6, 3}, true, ge, "ge r2 r6 3", "ge_r2_r6_3"},
738      {{cs, r2, r7, 5}, true, cs, "cs r2 r7 5", "cs_r2_r7_5"},
739      {{eq, r1, r6, 5}, true, eq, "eq r1 r6 5", "eq_r1_r6_5"},
740      {{vc, r7, r0, 6}, true, vc, "vc r7 r0 6", "vc_r7_r0_6"},
741      {{vs, r1, r0, 2}, true, vs, "vs r1 r0 2", "vs_r1_r0_2"},
742      {{eq, r3, r3, 5}, true, eq, "eq r3 r3 5", "eq_r3_r3_5"},
743      {{cc, r0, r4, 5}, true, cc, "cc r0 r4 5", "cc_r0_r4_5"},
744      {{lt, r7, r2, 5}, true, lt, "lt r7 r2 5", "lt_r7_r2_5"},
745      {{pl, r1, r1, 0}, true, pl, "pl r1 r1 0", "pl_r1_r1_0"},
746      {{hi, r7, r2, 5}, true, hi, "hi r7 r2 5", "hi_r7_r2_5"},
747      {{cc, r0, r4, 0}, true, cc, "cc r0 r4 0", "cc_r0_r4_0"},
748      {{eq, r0, r3, 7}, true, eq, "eq r0 r3 7", "eq_r0_r3_7"},
749      {{lt, r4, r5, 0}, true, lt, "lt r4 r5 0", "lt_r4_r5_0"},
750      {{vc, r5, r4, 7}, true, vc, "vc r5 r4 7", "vc_r5_r4_7"},
751      {{gt, r7, r7, 0}, true, gt, "gt r7 r7 0", "gt_r7_r7_0"},
752      {{le, r1, r2, 7}, true, le, "le r1 r2 7", "le_r1_r2_7"},
753      {{cc, r0, r4, 6}, true, cc, "cc r0 r4 6", "cc_r0_r4_6"},
754      {{eq, r1, r5, 5}, true, eq, "eq r1 r5 5", "eq_r1_r5_5"},
755      {{hi, r1, r5, 2}, true, hi, "hi r1 r5 2", "hi_r1_r5_2"},
756      {{ne, r2, r4, 1}, true, ne, "ne r2 r4 1", "ne_r2_r4_1"},
757      {{cc, r3, r6, 6}, true, cc, "cc r3 r6 6", "cc_r3_r6_6"},
758      {{eq, r7, r7, 6}, true, eq, "eq r7 r7 6", "eq_r7_r7_6"},
759      {{ne, r5, r4, 4}, true, ne, "ne r5 r4 4", "ne_r5_r4_4"},
760      {{eq, r2, r4, 2}, true, eq, "eq r2 r4 2", "eq_r2_r4_2"},
761      {{vc, r2, r1, 2}, true, vc, "vc r2 r1 2", "vc_r2_r1_2"},
762      {{ge, r5, r1, 3}, true, ge, "ge r5 r1 3", "ge_r5_r1_3"},
763      {{hi, r0, r0, 5}, true, hi, "hi r0 r0 5", "hi_r0_r0_5"},
764      {{ne, r6, r2, 6}, true, ne, "ne r6 r2 6", "ne_r6_r2_6"},
765      {{vc, r2, r5, 0}, true, vc, "vc r2 r5 0", "vc_r2_r5_0"},
766      {{le, r1, r3, 3}, true, le, "le r1 r3 3", "le_r1_r3_3"},
767      {{mi, r0, r2, 0}, true, mi, "mi r0 r2 0", "mi_r0_r2_0"},
768      {{mi, r1, r2, 7}, true, mi, "mi r1 r2 7", "mi_r1_r2_7"},
769      {{vc, r6, r5, 5}, true, vc, "vc r6 r5 5", "vc_r6_r5_5"},
770      {{ge, r2, r0, 3}, true, ge, "ge r2 r0 3", "ge_r2_r0_3"},
771      {{le, r5, r0, 7}, true, le, "le r5 r0 7", "le_r5_r0_7"},
772      {{lt, r1, r4, 0}, true, lt, "lt r1 r4 0", "lt_r1_r4_0"},
773      {{le, r4, r4, 3}, true, le, "le r4 r4 3", "le_r4_r4_3"},
774      {{vs, r0, r6, 5}, true, vs, "vs r0 r6 5", "vs_r0_r6_5"},
775      {{vs, r0, r0, 2}, true, vs, "vs r0 r0 2", "vs_r0_r0_2"},
776      {{ne, r4, r3, 3}, true, ne, "ne r4 r3 3", "ne_r4_r3_3"},
777      {{ge, r0, r6, 5}, true, ge, "ge r0 r6 5", "ge_r0_r6_5"},
778      {{pl, r6, r0, 5}, true, pl, "pl r6 r0 5", "pl_r6_r0_5"},
779      {{ls, r5, r3, 4}, true, ls, "ls r5 r3 4", "ls_r5_r3_4"},
780      {{vs, r3, r4, 5}, true, vs, "vs r3 r4 5", "vs_r3_r4_5"},
781      {{gt, r1, r4, 6}, true, gt, "gt r1 r4 6", "gt_r1_r4_6"},
782      {{vc, r1, r1, 2}, true, vc, "vc r1 r1 2", "vc_r1_r1_2"},
783      {{lt, r7, r1, 5}, true, lt, "lt r7 r1 5", "lt_r7_r1_5"},
784      {{eq, r0, r4, 1}, true, eq, "eq r0 r4 1", "eq_r0_r4_1"},
785      {{le, r0, r4, 2}, true, le, "le r0 r4 2", "le_r0_r4_2"},
786      {{vc, r0, r0, 4}, true, vc, "vc r0 r0 4", "vc_r0_r0_4"},
787      {{eq, r4, r6, 3}, true, eq, "eq r4 r6 3", "eq_r4_r6_3"},
788      {{eq, r7, r1, 4}, true, eq, "eq r7 r1 4", "eq_r7_r1_4"},
789      {{pl, r5, r4, 7}, true, pl, "pl r5 r4 7", "pl_r5_r4_7"},
790      {{ge, r6, r0, 3}, true, ge, "ge r6 r0 3", "ge_r6_r0_3"},
791      {{gt, r5, r5, 4}, true, gt, "gt r5 r5 4", "gt_r5_r5_4"},
792      {{mi, r6, r0, 2}, true, mi, "mi r6 r0 2", "mi_r6_r0_2"},
793      {{gt, r7, r5, 2}, true, gt, "gt r7 r5 2", "gt_r7_r5_2"},
794      {{le, r0, r6, 5}, true, le, "le r0 r6 5", "le_r0_r6_5"},
795      {{vc, r1, r5, 6}, true, vc, "vc r1 r5 6", "vc_r1_r5_6"},
796      {{eq, r5, r5, 5}, true, eq, "eq r5 r5 5", "eq_r5_r5_5"},
797      {{ge, r2, r6, 2}, true, ge, "ge r2 r6 2", "ge_r2_r6_2"},
798      {{eq, r4, r4, 7}, true, eq, "eq r4 r4 7", "eq_r4_r4_7"},
799      {{ne, r5, r5, 4}, true, ne, "ne r5 r5 4", "ne_r5_r5_4"},
800      {{lt, r2, r1, 0}, true, lt, "lt r2 r1 0", "lt_r2_r1_0"},
801      {{gt, r4, r0, 4}, true, gt, "gt r4 r0 4", "gt_r4_r0_4"},
802      {{le, r0, r0, 1}, true, le, "le r0 r0 1", "le_r0_r0_1"},
803      {{pl, r1, r3, 1}, true, pl, "pl r1 r3 1", "pl_r1_r3_1"},
804      {{ge, r6, r2, 0}, true, ge, "ge r6 r2 0", "ge_r6_r2_0"},
805      {{ne, r2, r6, 0}, true, ne, "ne r2 r6 0", "ne_r2_r6_0"},
806      {{cs, r3, r2, 5}, true, cs, "cs r3 r2 5", "cs_r3_r2_5"},
807      {{eq, r3, r3, 2}, true, eq, "eq r3 r3 2", "eq_r3_r3_2"},
808      {{ne, r6, r6, 5}, true, ne, "ne r6 r6 5", "ne_r6_r6_5"},
809      {{vc, r5, r2, 2}, true, vc, "vc r5 r2 2", "vc_r5_r2_2"},
810      {{pl, r3, r6, 4}, true, pl, "pl r3 r6 4", "pl_r3_r6_4"},
811      {{cs, r5, r7, 6}, true, cs, "cs r5 r7 6", "cs_r5_r7_6"},
812      {{cs, r2, r1, 7}, true, cs, "cs r2 r1 7", "cs_r2_r1_7"},
813      {{pl, r4, r5, 5}, true, pl, "pl r4 r5 5", "pl_r4_r5_5"},
814      {{pl, r1, r5, 7}, true, pl, "pl r1 r5 7", "pl_r1_r5_7"},
815      {{mi, r4, r3, 5}, true, mi, "mi r4 r3 5", "mi_r4_r3_5"},
816      {{vc, r0, r4, 0}, true, vc, "vc r0 r4 0", "vc_r0_r4_0"},
817      {{le, r2, r7, 0}, true, le, "le r2 r7 0", "le_r2_r7_0"},
818      {{cc, r7, r2, 6}, true, cc, "cc r7 r2 6", "cc_r7_r2_6"},
819      {{vs, r7, r1, 1}, true, vs, "vs r7 r1 1", "vs_r7_r1_1"},
820      {{gt, r3, r3, 5}, true, gt, "gt r3 r3 5", "gt_r3_r3_5"},
821      {{eq, r7, r1, 1}, true, eq, "eq r7 r1 1", "eq_r7_r1_1"},
822      {{pl, r5, r7, 5}, true, pl, "pl r5 r7 5", "pl_r5_r7_5"},
823      {{hi, r5, r6, 1}, true, hi, "hi r5 r6 1", "hi_r5_r6_1"},
824      {{cc, r2, r0, 0}, true, cc, "cc r2 r0 0", "cc_r2_r0_0"},
825      {{cs, r7, r7, 2}, true, cs, "cs r7 r7 2", "cs_r7_r7_2"},
826      {{ne, r0, r3, 6}, true, ne, "ne r0 r3 6", "ne_r0_r3_6"},
827      {{mi, r4, r7, 2}, true, mi, "mi r4 r7 2", "mi_r4_r7_2"},
828      {{le, r4, r4, 7}, true, le, "le r4 r4 7", "le_r4_r4_7"},
829      {{gt, r1, r1, 0}, true, gt, "gt r1 r1 0", "gt_r1_r1_0"},
830      {{vs, r2, r5, 1}, true, vs, "vs r2 r5 1", "vs_r2_r5_1"},
831      {{ls, r7, r2, 4}, true, ls, "ls r7 r2 4", "ls_r7_r2_4"},
832      {{vs, r2, r1, 4}, true, vs, "vs r2 r1 4", "vs_r2_r1_4"},
833      {{eq, r5, r6, 5}, true, eq, "eq r5 r6 5", "eq_r5_r6_5"},
834      {{vs, r4, r3, 4}, true, vs, "vs r4 r3 4", "vs_r4_r3_4"},
835      {{vs, r2, r1, 2}, true, vs, "vs r2 r1 2", "vs_r2_r1_2"},
836      {{hi, r0, r3, 3}, true, hi, "hi r0 r3 3", "hi_r0_r3_3"},
837      {{hi, r4, r1, 5}, true, hi, "hi r4 r1 5", "hi_r4_r1_5"},
838      {{pl, r6, r6, 7}, true, pl, "pl r6 r6 7", "pl_r6_r6_7"},
839      {{gt, r0, r5, 0}, true, gt, "gt r0 r5 0", "gt_r0_r5_0"},
840      {{cc, r5, r0, 7}, true, cc, "cc r5 r0 7", "cc_r5_r0_7"},
841      {{ls, r7, r7, 7}, true, ls, "ls r7 r7 7", "ls_r7_r7_7"},
842      {{vc, r6, r3, 0}, true, vc, "vc r6 r3 0", "vc_r6_r3_0"},
843      {{cc, r6, r4, 4}, true, cc, "cc r6 r4 4", "cc_r6_r4_4"},
844      {{cc, r6, r5, 0}, true, cc, "cc r6 r5 0", "cc_r6_r5_0"},
845      {{le, r2, r0, 6}, true, le, "le r2 r0 6", "le_r2_r0_6"},
846      {{gt, r5, r6, 3}, true, gt, "gt r5 r6 3", "gt_r5_r6_3"},
847      {{vs, r3, r4, 0}, true, vs, "vs r3 r4 0", "vs_r3_r4_0"},
848      {{le, r4, r4, 1}, true, le, "le r4 r4 1", "le_r4_r4_1"},
849      {{ge, r4, r0, 6}, true, ge, "ge r4 r0 6", "ge_r4_r0_6"},
850      {{eq, r2, r3, 2}, true, eq, "eq r2 r3 2", "eq_r2_r3_2"},
851      {{lt, r5, r1, 6}, true, lt, "lt r5 r1 6", "lt_r5_r1_6"},
852      {{le, r7, r2, 0}, true, le, "le r7 r2 0", "le_r7_r2_0"},
853      {{mi, r2, r4, 6}, true, mi, "mi r2 r4 6", "mi_r2_r4_6"},
854      {{vc, r6, r5, 4}, true, vc, "vc r6 r5 4", "vc_r6_r5_4"},
855      {{gt, r3, r6, 5}, true, gt, "gt r3 r6 5", "gt_r3_r6_5"},
856      {{pl, r3, r2, 0}, true, pl, "pl r3 r2 0", "pl_r3_r2_0"},
857      {{ls, r3, r2, 2}, true, ls, "ls r3 r2 2", "ls_r3_r2_2"},
858      {{ge, r2, r7, 7}, true, ge, "ge r2 r7 7", "ge_r2_r7_7"},
859      {{vc, r3, r5, 0}, true, vc, "vc r3 r5 0", "vc_r3_r5_0"},
860      {{cc, r4, r0, 7}, true, cc, "cc r4 r0 7", "cc_r4_r0_7"},
861      {{ls, r3, r5, 2}, true, ls, "ls r3 r5 2", "ls_r3_r5_2"},
862      {{vc, r6, r7, 6}, true, vc, "vc r6 r7 6", "vc_r6_r7_6"},
863      {{ls, r0, r3, 6}, true, ls, "ls r0 r3 6", "ls_r0_r3_6"},
864      {{hi, r6, r0, 1}, true, hi, "hi r6 r0 1", "hi_r6_r0_1"},
865      {{mi, r5, r0, 6}, true, mi, "mi r5 r0 6", "mi_r5_r0_6"},
866      {{mi, r2, r5, 3}, true, mi, "mi r2 r5 3", "mi_r2_r5_3"},
867      {{ge, r0, r7, 0}, true, ge, "ge r0 r7 0", "ge_r0_r7_0"},
868      {{vc, r7, r3, 3}, true, vc, "vc r7 r3 3", "vc_r7_r3_3"},
869      {{mi, r0, r2, 5}, true, mi, "mi r0 r2 5", "mi_r0_r2_5"},
870      {{cc, r4, r3, 5}, true, cc, "cc r4 r3 5", "cc_r4_r3_5"},
871      {{pl, r0, r3, 0}, true, pl, "pl r0 r3 0", "pl_r0_r3_0"},
872      {{gt, r6, r3, 1}, true, gt, "gt r6 r3 1", "gt_r6_r3_1"},
873      {{lt, r3, r3, 0}, true, lt, "lt r3 r3 0", "lt_r3_r3_0"},
874      {{hi, r1, r5, 6}, true, hi, "hi r1 r5 6", "hi_r1_r5_6"},
875      {{hi, r4, r7, 0}, true, hi, "hi r4 r7 0", "hi_r4_r7_0"},
876      {{ge, r6, r2, 2}, true, ge, "ge r6 r2 2", "ge_r6_r2_2"},
877      {{pl, r7, r4, 4}, true, pl, "pl r7 r4 4", "pl_r7_r4_4"},
878      {{cc, r5, r5, 5}, true, cc, "cc r5 r5 5", "cc_r5_r5_5"},
879      {{pl, r6, r1, 1}, true, pl, "pl r6 r1 1", "pl_r6_r1_1"},
880      {{le, r7, r6, 3}, true, le, "le r7 r6 3", "le_r7_r6_3"},
881      {{lt, r4, r7, 1}, true, lt, "lt r4 r7 1", "lt_r4_r7_1"},
882      {{pl, r2, r4, 7}, true, pl, "pl r2 r4 7", "pl_r2_r4_7"},
883      {{vc, r1, r3, 0}, true, vc, "vc r1 r3 0", "vc_r1_r3_0"},
884      {{pl, r7, r7, 3}, true, pl, "pl r7 r7 3", "pl_r7_r7_3"},
885      {{ls, r4, r1, 3}, true, ls, "ls r4 r1 3", "ls_r4_r1_3"},
886      {{lt, r6, r6, 2}, true, lt, "lt r6 r6 2", "lt_r6_r6_2"},
887      {{mi, r4, r2, 4}, true, mi, "mi r4 r2 4", "mi_r4_r2_4"},
888      {{pl, r3, r4, 7}, true, pl, "pl r3 r4 7", "pl_r3_r4_7"},
889      {{ls, r2, r6, 6}, true, ls, "ls r2 r6 6", "ls_r2_r6_6"},
890      {{hi, r5, r7, 6}, true, hi, "hi r5 r7 6", "hi_r5_r7_6"},
891      {{lt, r0, r4, 1}, true, lt, "lt r0 r4 1", "lt_r0_r4_1"},
892      {{ge, r5, r5, 6}, true, ge, "ge r5 r5 6", "ge_r5_r5_6"},
893      {{pl, r1, r7, 3}, true, pl, "pl r1 r7 3", "pl_r1_r7_3"},
894      {{cs, r6, r2, 1}, true, cs, "cs r6 r2 1", "cs_r6_r2_1"},
895      {{ne, r1, r3, 0}, true, ne, "ne r1 r3 0", "ne_r1_r3_0"},
896      {{mi, r6, r5, 7}, true, mi, "mi r6 r5 7", "mi_r6_r5_7"},
897      {{gt, r2, r2, 0}, true, gt, "gt r2 r2 0", "gt_r2_r2_0"},
898      {{ls, r6, r4, 6}, true, ls, "ls r6 r4 6", "ls_r6_r4_6"},
899      {{pl, r2, r6, 7}, true, pl, "pl r2 r6 7", "pl_r2_r6_7"},
900      {{ne, r1, r5, 4}, true, ne, "ne r1 r5 4", "ne_r1_r5_4"},
901      {{mi, r0, r0, 5}, true, mi, "mi r0 r0 5", "mi_r0_r0_5"},
902      {{eq, r5, r5, 2}, true, eq, "eq r5 r5 2", "eq_r5_r5_2"},
903      {{mi, r7, r7, 3}, true, mi, "mi r7 r7 3", "mi_r7_r7_3"},
904      {{vc, r7, r7, 1}, true, vc, "vc r7 r7 1", "vc_r7_r7_1"},
905      {{vc, r5, r4, 3}, true, vc, "vc r5 r4 3", "vc_r5_r4_3"},
906      {{mi, r5, r7, 6}, true, mi, "mi r5 r7 6", "mi_r5_r7_6"},
907      {{vs, r2, r3, 0}, true, vs, "vs r2 r3 0", "vs_r2_r3_0"},
908      {{ne, r2, r4, 2}, true, ne, "ne r2 r4 2", "ne_r2_r4_2"},
909      {{eq, r6, r7, 3}, true, eq, "eq r6 r7 3", "eq_r6_r7_3"},
910      {{ne, r0, r1, 5}, true, ne, "ne r0 r1 5", "ne_r0_r1_5"},
911      {{lt, r3, r2, 6}, true, lt, "lt r3 r2 6", "lt_r3_r2_6"},
912      {{gt, r4, r2, 1}, true, gt, "gt r4 r2 1", "gt_r4_r2_1"},
913      {{ls, r6, r1, 0}, true, ls, "ls r6 r1 0", "ls_r6_r1_0"},
914      {{cc, r6, r2, 3}, true, cc, "cc r6 r2 3", "cc_r6_r2_3"},
915      {{hi, r3, r2, 7}, true, hi, "hi r3 r2 7", "hi_r3_r2_7"},
916      {{cc, r6, r7, 3}, true, cc, "cc r6 r7 3", "cc_r6_r7_3"},
917      {{vs, r7, r6, 4}, true, vs, "vs r7 r6 4", "vs_r7_r6_4"},
918      {{gt, r5, r4, 5}, true, gt, "gt r5 r4 5", "gt_r5_r4_5"},
919      {{vc, r5, r7, 6}, true, vc, "vc r5 r7 6", "vc_r5_r7_6"},
920      {{hi, r0, r6, 5}, true, hi, "hi r0 r6 5", "hi_r0_r6_5"},
921      {{eq, r2, r7, 3}, true, eq, "eq r2 r7 3", "eq_r2_r7_3"},
922      {{le, r6, r5, 7}, true, le, "le r6 r5 7", "le_r6_r5_7"},
923      {{ge, r0, r5, 5}, true, ge, "ge r0 r5 5", "ge_r0_r5_5"},
924      {{pl, r1, r6, 4}, true, pl, "pl r1 r6 4", "pl_r1_r6_4"},
925      {{mi, r3, r0, 6}, true, mi, "mi r3 r0 6", "mi_r3_r0_6"},
926      {{cs, r7, r6, 1}, true, cs, "cs r7 r6 1", "cs_r7_r6_1"},
927      {{vc, r3, r6, 3}, true, vc, "vc r3 r6 3", "vc_r3_r6_3"},
928      {{ls, r5, r1, 4}, true, ls, "ls r5 r1 4", "ls_r5_r1_4"},
929      {{le, r6, r2, 3}, true, le, "le r6 r2 3", "le_r6_r2_3"},
930      {{cc, r1, r6, 4}, true, cc, "cc r1 r6 4", "cc_r1_r6_4"},
931      {{mi, r0, r7, 0}, true, mi, "mi r0 r7 0", "mi_r0_r7_0"},
932      {{vc, r6, r2, 2}, true, vc, "vc r6 r2 2", "vc_r6_r2_2"},
933      {{gt, r3, r0, 4}, true, gt, "gt r3 r0 4", "gt_r3_r0_4"},
934      {{cs, r4, r0, 5}, true, cs, "cs r4 r0 5", "cs_r4_r0_5"},
935      {{hi, r4, r4, 6}, true, hi, "hi r4 r4 6", "hi_r4_r4_6"},
936      {{cc, r5, r5, 1}, true, cc, "cc r5 r5 1", "cc_r5_r5_1"},
937      {{pl, r6, r3, 4}, true, pl, "pl r6 r3 4", "pl_r6_r3_4"},
938      {{ge, r7, r4, 0}, true, ge, "ge r7 r4 0", "ge_r7_r4_0"},
939      {{hi, r2, r1, 3}, true, hi, "hi r2 r1 3", "hi_r2_r1_3"},
940      {{le, r4, r3, 1}, true, le, "le r4 r3 1", "le_r4_r3_1"},
941      {{gt, r0, r0, 7}, true, gt, "gt r0 r0 7", "gt_r0_r0_7"},
942      {{gt, r2, r0, 6}, true, gt, "gt r2 r0 6", "gt_r2_r0_6"},
943      {{ge, r4, r3, 5}, true, ge, "ge r4 r3 5", "ge_r4_r3_5"},
944      {{le, r2, r0, 7}, true, le, "le r2 r0 7", "le_r2_r0_7"},
945      {{vc, r7, r7, 4}, true, vc, "vc r7 r7 4", "vc_r7_r7_4"},
946      {{lt, r6, r5, 1}, true, lt, "lt r6 r5 1", "lt_r6_r5_1"},
947      {{vs, r1, r0, 4}, true, vs, "vs r1 r0 4", "vs_r1_r0_4"},
948      {{vs, r1, r1, 6}, true, vs, "vs r1 r1 6", "vs_r1_r1_6"},
949      {{ge, r1, r0, 6}, true, ge, "ge r1 r0 6", "ge_r1_r0_6"},
950      {{eq, r1, r6, 0}, true, eq, "eq r1 r6 0", "eq_r1_r6_0"},
951      {{cs, r0, r5, 5}, true, cs, "cs r0 r5 5", "cs_r0_r5_5"},
952      {{mi, r7, r6, 5}, true, mi, "mi r7 r6 5", "mi_r7_r6_5"},
953      {{vc, r1, r4, 3}, true, vc, "vc r1 r4 3", "vc_r1_r4_3"},
954      {{hi, r1, r3, 4}, true, hi, "hi r1 r3 4", "hi_r1_r3_4"},
955      {{vs, r3, r6, 3}, true, vs, "vs r3 r6 3", "vs_r3_r6_3"},
956      {{vc, r1, r6, 1}, true, vc, "vc r1 r6 1", "vc_r1_r6_1"},
957      {{mi, r3, r7, 1}, true, mi, "mi r3 r7 1", "mi_r3_r7_1"},
958      {{eq, r7, r0, 1}, true, eq, "eq r7 r0 1", "eq_r7_r0_1"},
959      {{hi, r3, r7, 7}, true, hi, "hi r3 r7 7", "hi_r3_r7_7"},
960      {{mi, r3, r4, 3}, true, mi, "mi r3 r4 3", "mi_r3_r4_3"},
961      {{le, r3, r1, 2}, true, le, "le r3 r1 2", "le_r3_r1_2"},
962      {{mi, r1, r3, 5}, true, mi, "mi r1 r3 5", "mi_r1_r3_5"},
963      {{vc, r2, r2, 4}, true, vc, "vc r2 r2 4", "vc_r2_r2_4"},
964      {{vc, r4, r7, 2}, true, vc, "vc r4 r7 2", "vc_r4_r7_2"},
965      {{vs, r3, r7, 0}, true, vs, "vs r3 r7 0", "vs_r3_r7_0"},
966      {{gt, r7, r1, 3}, true, gt, "gt r7 r1 3", "gt_r7_r1_3"},
967      {{hi, r7, r4, 7}, true, hi, "hi r7 r4 7", "hi_r7_r4_7"},
968      {{hi, r1, r0, 3}, true, hi, "hi r1 r0 3", "hi_r1_r0_3"},
969      {{ne, r0, r4, 5}, true, ne, "ne r0 r4 5", "ne_r0_r4_5"},
970      {{hi, r7, r6, 3}, true, hi, "hi r7 r6 3", "hi_r7_r6_3"},
971      {{ne, r3, r4, 4}, true, ne, "ne r3 r4 4", "ne_r3_r4_4"},
972      {{pl, r2, r5, 5}, true, pl, "pl r2 r5 5", "pl_r2_r5_5"},
973      {{ge, r6, r7, 0}, true, ge, "ge r6 r7 0", "ge_r6_r7_0"},
974      {{ne, r7, r3, 4}, true, ne, "ne r7 r3 4", "ne_r7_r3_4"},
975      {{ls, r5, r2, 6}, true, ls, "ls r5 r2 6", "ls_r5_r2_6"},
976      {{cs, r6, r3, 2}, true, cs, "cs r6 r3 2", "cs_r6_r3_2"},
977      {{vs, r0, r1, 6}, true, vs, "vs r0 r1 6", "vs_r0_r1_6"},
978      {{vc, r6, r3, 7}, true, vc, "vc r6 r3 7", "vc_r6_r3_7"},
979      {{eq, r3, r0, 5}, true, eq, "eq r3 r0 5", "eq_r3_r0_5"},
980      {{cc, r4, r5, 0}, true, cc, "cc r4 r5 0", "cc_r4_r5_0"},
981      {{hi, r3, r1, 2}, true, hi, "hi r3 r1 2", "hi_r3_r1_2"},
982      {{lt, r2, r5, 5}, true, lt, "lt r2 r5 5", "lt_r2_r5_5"},
983      {{le, r0, r3, 3}, true, le, "le r0 r3 3", "le_r0_r3_3"},
984      {{vc, r2, r5, 7}, true, vc, "vc r2 r5 7", "vc_r2_r5_7"},
985      {{gt, r7, r1, 7}, true, gt, "gt r7 r1 7", "gt_r7_r1_7"},
986      {{le, r2, r1, 5}, true, le, "le r2 r1 5", "le_r2_r1_5"},
987      {{mi, r4, r2, 0}, true, mi, "mi r4 r2 0", "mi_r4_r2_0"},
988      {{ne, r4, r3, 2}, true, ne, "ne r4 r3 2", "ne_r4_r3_2"},
989      {{le, r3, r0, 7}, true, le, "le r3 r0 7", "le_r3_r0_7"},
990      {{vc, r6, r5, 7}, true, vc, "vc r6 r5 7", "vc_r6_r5_7"},
991      {{lt, r5, r5, 0}, true, lt, "lt r5 r5 0", "lt_r5_r5_0"},
992      {{le, r5, r7, 2}, true, le, "le r5 r7 2", "le_r5_r7_2"},
993      {{mi, r2, r6, 4}, true, mi, "mi r2 r6 4", "mi_r2_r6_4"},
994      {{ne, r5, r4, 5}, true, ne, "ne r5 r4 5", "ne_r5_r4_5"},
995      {{mi, r5, r7, 2}, true, mi, "mi r5 r7 2", "mi_r5_r7_2"},
996      {{lt, r7, r1, 1}, true, lt, "lt r7 r1 1", "lt_r7_r1_1"},
997      {{cc, r3, r0, 5}, true, cc, "cc r3 r0 5", "cc_r3_r0_5"},
998      {{pl, r2, r2, 7}, true, pl, "pl r2 r2 7", "pl_r2_r2_7"},
999      {{lt, r3, r5, 0}, true, lt, "lt r3 r5 0", "lt_r3_r5_0"},
1000      {{cs, r7, r7, 5}, true, cs, "cs r7 r7 5", "cs_r7_r7_5"},
1001      {{ge, r6, r5, 2}, true, ge, "ge r6 r5 2", "ge_r6_r5_2"},
1002      {{pl, r2, r7, 1}, true, pl, "pl r2 r7 1", "pl_r2_r7_1"},
1003      {{gt, r1, r5, 0}, true, gt, "gt r1 r5 0", "gt_r1_r5_0"},
1004      {{hi, r4, r2, 6}, true, hi, "hi r4 r2 6", "hi_r4_r2_6"},
1005      {{ls, r4, r6, 1}, true, ls, "ls r4 r6 1", "ls_r4_r6_1"},
1006      {{vc, r4, r6, 5}, true, vc, "vc r4 r6 5", "vc_r4_r6_5"},
1007      {{ne, r0, r2, 7}, true, ne, "ne r0 r2 7", "ne_r0_r2_7"},
1008      {{ne, r1, r7, 3}, true, ne, "ne r1 r7 3", "ne_r1_r7_3"},
1009      {{pl, r2, r1, 2}, true, pl, "pl r2 r1 2", "pl_r2_r1_2"},
1010      {{le, r6, r2, 2}, true, le, "le r6 r2 2", "le_r6_r2_2"},
1011      {{ne, r3, r6, 0}, true, ne, "ne r3 r6 0", "ne_r3_r6_0"},
1012      {{lt, r5, r6, 6}, true, lt, "lt r5 r6 6", "lt_r5_r6_6"},
1013      {{eq, r3, r2, 2}, true, eq, "eq r3 r2 2", "eq_r3_r2_2"},
1014      {{pl, r1, r6, 7}, true, pl, "pl r1 r6 7", "pl_r1_r6_7"},
1015      {{mi, r7, r0, 6}, true, mi, "mi r7 r0 6", "mi_r7_r0_6"},
1016      {{le, r7, r2, 7}, true, le, "le r7 r2 7", "le_r7_r2_7"},
1017      {{hi, r0, r3, 1}, true, hi, "hi r0 r3 1", "hi_r0_r3_1"},
1018      {{ls, r3, r6, 4}, true, ls, "ls r3 r6 4", "ls_r3_r6_4"},
1019      {{eq, r6, r0, 7}, true, eq, "eq r6 r0 7", "eq_r6_r0_7"},
1020      {{ne, r1, r4, 5}, true, ne, "ne r1 r4 5", "ne_r1_r4_5"},
1021      {{le, r1, r5, 3}, true, le, "le r1 r5 3", "le_r1_r5_3"},
1022      {{cc, r6, r1, 7}, true, cc, "cc r6 r1 7", "cc_r6_r1_7"},
1023      {{hi, r2, r4, 1}, true, hi, "hi r2 r4 1", "hi_r2_r4_1"},
1024      {{vs, r3, r7, 2}, true, vs, "vs r3 r7 2", "vs_r3_r7_2"},
1025      {{pl, r7, r6, 1}, true, pl, "pl r7 r6 1", "pl_r7_r6_1"},
1026      {{ne, r7, r2, 1}, true, ne, "ne r7 r2 1", "ne_r7_r2_1"},
1027      {{hi, r1, r0, 0}, true, hi, "hi r1 r0 0", "hi_r1_r0_0"},
1028      {{vs, r2, r1, 7}, true, vs, "vs r2 r1 7", "vs_r2_r1_7"},
1029      {{lt, r5, r4, 2}, true, lt, "lt r5 r4 2", "lt_r5_r4_2"},
1030      {{mi, r3, r1, 0}, true, mi, "mi r3 r1 0", "mi_r3_r1_0"},
1031      {{ls, r2, r6, 1}, true, ls, "ls r2 r6 1", "ls_r2_r6_1"},
1032      {{cc, r2, r2, 1}, true, cc, "cc r2 r2 1", "cc_r2_r2_1"},
1033      {{pl, r4, r0, 7}, true, pl, "pl r4 r0 7", "pl_r4_r0_7"},
1034      {{cc, r6, r4, 5}, true, cc, "cc r6 r4 5", "cc_r6_r4_5"},
1035      {{cc, r1, r3, 6}, true, cc, "cc r1 r3 6", "cc_r1_r3_6"},
1036      {{lt, r0, r3, 2}, true, lt, "lt r0 r3 2", "lt_r0_r3_2"},
1037      {{ge, r5, r4, 3}, true, ge, "ge r5 r4 3", "ge_r5_r4_3"},
1038      {{lt, r4, r4, 2}, true, lt, "lt r4 r4 2", "lt_r4_r4_2"},
1039      {{gt, r3, r1, 6}, true, gt, "gt r3 r1 6", "gt_r3_r1_6"},
1040      {{pl, r4, r2, 1}, true, pl, "pl r4 r2 1", "pl_r4_r2_1"},
1041      {{cc, r3, r1, 7}, true, cc, "cc r3 r1 7", "cc_r3_r1_7"},
1042      {{mi, r1, r3, 7}, true, mi, "mi r1 r3 7", "mi_r1_r3_7"},
1043      {{cc, r2, r5, 7}, true, cc, "cc r2 r5 7", "cc_r2_r5_7"},
1044      {{hi, r6, r5, 0}, true, hi, "hi r6 r5 0", "hi_r6_r5_0"},
1045      {{vc, r1, r0, 7}, true, vc, "vc r1 r0 7", "vc_r1_r0_7"},
1046      {{cs, r3, r0, 5}, true, cs, "cs r3 r0 5", "cs_r3_r0_5"},
1047      {{pl, r1, r2, 3}, true, pl, "pl r1 r2 3", "pl_r1_r2_3"},
1048      {{pl, r2, r6, 3}, true, pl, "pl r2 r6 3", "pl_r2_r6_3"},
1049      {{ne, r7, r1, 5}, true, ne, "ne r7 r1 5", "ne_r7_r1_5"},
1050      {{hi, r5, r0, 4}, true, hi, "hi r5 r0 4", "hi_r5_r0_4"},
1051      {{vc, r6, r1, 0}, true, vc, "vc r6 r1 0", "vc_r6_r1_0"},
1052      {{vc, r7, r3, 2}, true, vc, "vc r7 r3 2", "vc_r7_r3_2"},
1053      {{ge, r6, r6, 6}, true, ge, "ge r6 r6 6", "ge_r6_r6_6"},
1054      {{ne, r6, r1, 0}, true, ne, "ne r6 r1 0", "ne_r6_r1_0"},
1055      {{eq, r5, r1, 2}, true, eq, "eq r5 r1 2", "eq_r5_r1_2"},
1056      {{hi, r2, r0, 6}, true, hi, "hi r2 r0 6", "hi_r2_r0_6"},
1057      {{ne, r7, r4, 5}, true, ne, "ne r7 r4 5", "ne_r7_r4_5"},
1058      {{cc, r0, r0, 1}, true, cc, "cc r0 r0 1", "cc_r0_r0_1"},
1059      {{mi, r7, r5, 1}, true, mi, "mi r7 r5 1", "mi_r7_r5_1"},
1060      {{mi, r7, r0, 0}, true, mi, "mi r7 r0 0", "mi_r7_r0_0"},
1061      {{ls, r0, r2, 0}, true, ls, "ls r0 r2 0", "ls_r0_r2_0"},
1062      {{vs, r4, r7, 3}, true, vs, "vs r4 r7 3", "vs_r4_r7_3"},
1063      {{hi, r6, r2, 4}, true, hi, "hi r6 r2 4", "hi_r6_r2_4"},
1064      {{eq, r4, r1, 1}, true, eq, "eq r4 r1 1", "eq_r4_r1_1"},
1065      {{vs, r7, r5, 1}, true, vs, "vs r7 r5 1", "vs_r7_r5_1"},
1066      {{ne, r0, r4, 7}, true, ne, "ne r0 r4 7", "ne_r0_r4_7"},
1067      {{mi, r2, r7, 7}, true, mi, "mi r2 r7 7", "mi_r2_r7_7"},
1068      {{mi, r3, r2, 5}, true, mi, "mi r3 r2 5", "mi_r3_r2_5"},
1069      {{le, r7, r5, 5}, true, le, "le r7 r5 5", "le_r7_r5_5"},
1070      {{gt, r0, r5, 7}, true, gt, "gt r0 r5 7", "gt_r0_r5_7"},
1071      {{vc, r0, r4, 7}, true, vc, "vc r0 r4 7", "vc_r0_r4_7"},
1072      {{ls, r5, r7, 2}, true, ls, "ls r5 r7 2", "ls_r5_r7_2"},
1073      {{hi, r0, r6, 1}, true, hi, "hi r0 r6 1", "hi_r0_r6_1"},
1074      {{cc, r1, r4, 5}, true, cc, "cc r1 r4 5", "cc_r1_r4_5"},
1075      {{vs, r2, r2, 7}, true, vs, "vs r2 r2 7", "vs_r2_r2_7"},
1076      {{ge, r6, r6, 1}, true, ge, "ge r6 r6 1", "ge_r6_r6_1"},
1077      {{hi, r7, r1, 1}, true, hi, "hi r7 r1 1", "hi_r7_r1_1"},
1078      {{le, r3, r4, 3}, true, le, "le r3 r4 3", "le_r3_r4_3"},
1079      {{mi, r2, r1, 3}, true, mi, "mi r2 r1 3", "mi_r2_r1_3"},
1080      {{cs, r7, r7, 4}, true, cs, "cs r7 r7 4", "cs_r7_r7_4"},
1081      {{cs, r2, r5, 0}, true, cs, "cs r2 r5 0", "cs_r2_r5_0"},
1082      {{hi, r7, r6, 4}, true, hi, "hi r7 r6 4", "hi_r7_r6_4"},
1083      {{lt, r7, r5, 1}, true, lt, "lt r7 r5 1", "lt_r7_r5_1"},
1084      {{gt, r0, r0, 1}, true, gt, "gt r0 r0 1", "gt_r0_r0_1"},
1085      {{vs, r1, r2, 6}, true, vs, "vs r1 r2 6", "vs_r1_r2_6"},
1086      {{vs, r3, r3, 1}, true, vs, "vs r3 r3 1", "vs_r3_r3_1"},
1087      {{ls, r4, r2, 2}, true, ls, "ls r4 r2 2", "ls_r4_r2_2"},
1088      {{hi, r6, r3, 2}, true, hi, "hi r6 r3 2", "hi_r6_r3_2"},
1089      {{gt, r7, r5, 3}, true, gt, "gt r7 r5 3", "gt_r7_r5_3"},
1090      {{vc, r1, r6, 7}, true, vc, "vc r1 r6 7", "vc_r1_r6_7"},
1091      {{eq, r2, r2, 0}, true, eq, "eq r2 r2 0", "eq_r2_r2_0"},
1092      {{hi, r7, r6, 1}, true, hi, "hi r7 r6 1", "hi_r7_r6_1"},
1093      {{gt, r4, r6, 7}, true, gt, "gt r4 r6 7", "gt_r4_r6_7"},
1094      {{le, r7, r0, 6}, true, le, "le r7 r0 6", "le_r7_r0_6"},
1095      {{eq, r7, r1, 7}, true, eq, "eq r7 r1 7", "eq_r7_r1_7"},
1096      {{mi, r0, r6, 7}, true, mi, "mi r0 r6 7", "mi_r0_r6_7"}};
1097 
1098 // These headers each contain an array of `TestResult` with the reference output
1099 // values. The reference arrays are names `kReference{mnemonic}`.
1100 #include "aarch32/traces/assembler-cond-rdlow-rnlow-operand-immediate-imm3-in-it-block-add-t32.h"
1101 #include "aarch32/traces/assembler-cond-rdlow-rnlow-operand-immediate-imm3-in-it-block-sub-t32.h"
1102 
1103 
1104 // The maximum number of errors to report in detail for each test.
1105 const unsigned kErrorReportLimit = 8;
1106 
1107 typedef void (MacroAssembler::*Fn)(Condition cond,
1108                                    Register rd,
1109                                    Register rn,
1110                                    const Operand& op);
1111 
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])1112 void TestHelper(Fn instruction,
1113                 const char* mnemonic,
1114                 const TestResult reference[]) {
1115   unsigned total_error_count = 0;
1116   MacroAssembler masm(BUF_SIZE);
1117 
1118   masm.UseT32();
1119 
1120   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1121     // Values to pass to the macro-assembler.
1122     Condition cond = kTests[i].operands.cond;
1123     Register rd = kTests[i].operands.rd;
1124     Register rn = kTests[i].operands.rn;
1125     int32_t immediate = kTests[i].operands.immediate;
1126     Operand op(immediate);
1127 
1128     int32_t start = masm.GetCursorOffset();
1129     {
1130       // We never generate more that 4 bytes, as IT instructions are only
1131       // allowed for narrow encodings.
1132       ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
1133       if (kTests[i].in_it_block) {
1134         masm.it(kTests[i].it_condition);
1135       }
1136       (masm.*instruction)(cond, rd, rn, op);
1137     }
1138     int32_t end = masm.GetCursorOffset();
1139 
1140     const byte* result_ptr =
1141         masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
1142     VIXL_ASSERT(start < end);
1143     uint32_t result_size = end - start;
1144 
1145     if (Test::generate_test_trace()) {
1146       // Print the result bytes.
1147       printf("const byte kInstruction_%s_%s[] = {\n",
1148              mnemonic,
1149              kTests[i].identifier);
1150       for (uint32_t j = 0; j < result_size; j++) {
1151         if (j == 0) {
1152           printf("  0x%02" PRIx8, result_ptr[j]);
1153         } else {
1154           printf(", 0x%02" PRIx8, result_ptr[j]);
1155         }
1156       }
1157       // This comment is meant to be used by external tools to validate
1158       // the encoding. We can parse the comment to figure out what
1159       // instruction this corresponds to.
1160       if (kTests[i].in_it_block) {
1161         printf(" // It %s; %s %s\n};\n",
1162                kTests[i].it_condition.GetName(),
1163                mnemonic,
1164                kTests[i].operands_description);
1165       } else {
1166         printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
1167       }
1168     } else {
1169       // Check we've emitted the exact same encoding as present in the
1170       // trace file. Only print up to `kErrorReportLimit` errors.
1171       if (((result_size != reference[i].size) ||
1172            (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
1173             0)) &&
1174           (++total_error_count <= kErrorReportLimit)) {
1175         printf("Error when testing \"%s\" with operands \"%s\":\n",
1176                mnemonic,
1177                kTests[i].operands_description);
1178         printf("  Expected: ");
1179         for (uint32_t j = 0; j < reference[i].size; j++) {
1180           if (j == 0) {
1181             printf("0x%02" PRIx8, reference[i].encoding[j]);
1182           } else {
1183             printf(", 0x%02" PRIx8, reference[i].encoding[j]);
1184           }
1185         }
1186         printf("\n");
1187         printf("  Found:    ");
1188         for (uint32_t j = 0; j < result_size; j++) {
1189           if (j == 0) {
1190             printf("0x%02" PRIx8, result_ptr[j]);
1191           } else {
1192             printf(", 0x%02" PRIx8, result_ptr[j]);
1193           }
1194         }
1195         printf("\n");
1196       }
1197     }
1198   }
1199 
1200   masm.FinalizeCode();
1201 
1202   if (Test::generate_test_trace()) {
1203     // Finalize the trace file by writing the final `TestResult` array
1204     // which links all generated instruction encodings.
1205     printf("const TestResult kReference%s[] = {\n", mnemonic);
1206     for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
1207       printf("  {\n");
1208       printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
1209              mnemonic,
1210              kTests[i].identifier);
1211       printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
1212       printf("  },\n");
1213     }
1214     printf("};\n");
1215   } else {
1216     if (total_error_count > kErrorReportLimit) {
1217       printf("%u other errors follow.\n",
1218              total_error_count - kErrorReportLimit);
1219     }
1220     // Crash if the test failed.
1221     VIXL_CHECK(total_error_count == 0);
1222   }
1223 }
1224 
1225 // Instantiate tests for each instruction in the list.
1226 #define TEST(mnemonic)                                                      \
1227   void Test_##mnemonic() {                                                  \
1228     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
1229   }                                                                         \
1230   Test test_##mnemonic(                                                     \
1231       "AARCH32_ASSEMBLER_COND_RDLOW_RNLOW_OPERAND_IMMEDIATE_IMM3_IN_IT_"    \
1232       "BLOCK_" #mnemonic "_T32",                                            \
1233       &Test_##mnemonic);
1234 FOREACH_INSTRUCTION(TEST)
1235 #undef TEST
1236 
1237 }  // namespace
1238 #endif
1239 
1240 }  // namespace aarch32
1241 }  // namespace vixl
1242