1// Copyright 2016, VIXL authors
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are met:
6//
7//   * Redistributions of source code must retain the above copyright notice,
8//     this list of conditions and the following disclaimer.
9//   * Redistributions in binary form must reproduce the above copyright notice,
10//     this list of conditions and the following disclaimer in the documentation
11//     and/or other materials provided with the distribution.
12//   * Neither the name of ARM Limited nor the names of its contributors may be
13//     used to endorse or promote products derived from this software without
14//     specific prior written permission.
15//
16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27
28// -----------------------------------------------------------------------------
29// This file is auto generated from the
30// test/aarch32/config/template-assembler-aarch32.cc.in template file using
31// tools/generate_tests.py.
32//
33// PLEASE DO NOT EDIT.
34// -----------------------------------------------------------------------------
35
36
37#include "test-runner.h"
38
39#include "test-utils.h"
40#include "test-utils-aarch32.h"
41
42#include "aarch32/assembler-aarch32.h"
43#include "aarch32/macro-assembler-aarch32.h"
44
45#define BUF_SIZE (4096)
46
47namespace vixl {
48namespace aarch32 {
49
50// List of instruction mnemonics.
51#define FOREACH_INSTRUCTION(M) \
52  M(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
63namespace {
64
65// Values to be passed to the assembler to produce the instruction under test.
66struct 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.
75struct 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
90struct TestResult {
91  size_t size;
92  const byte* encoding;
93};
94
95// Each element of this array produce one instruction encoding.
96const 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.
1105const unsigned kErrorReportLimit = 8;
1106
1107typedef void (MacroAssembler::*Fn)(Condition cond,
1108                                   Register rd,
1109                                   Register rn,
1110                                   const Operand& op);
1111
1112void 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);
1234FOREACH_INSTRUCTION(TEST)
1235#undef TEST
1236
1237}  // namespace
1238#endif
1239
1240}  // namespace aarch32
1241}  // namespace vixl
1242