• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-simulator-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 #include "aarch32/disasm-aarch32.h"
45 
46 #define __ masm.
47 #define BUF_SIZE (4096)
48 
49 #ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
50 // Run tests with the simulator.
51 
52 #define SETUP() MacroAssembler masm(BUF_SIZE)
53 
54 #define START() masm.GetBuffer()->Reset()
55 
56 #define END() \
57   __ Hlt(0);  \
58   __ FinalizeCode();
59 
60 // TODO: Run the tests in the simulator.
61 #define RUN()
62 
63 #define TEARDOWN()
64 
65 #else  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32.
66 
67 #define SETUP()                                   \
68   MacroAssembler masm(BUF_SIZE);                  \
69   UseScratchRegisterScope harness_scratch(&masm); \
70   harness_scratch.ExcludeAll();
71 
72 #define START()              \
73   masm.GetBuffer()->Reset(); \
74   __ Push(r4);               \
75   __ Push(r5);               \
76   __ Push(r6);               \
77   __ Push(r7);               \
78   __ Push(r8);               \
79   __ Push(r9);               \
80   __ Push(r10);              \
81   __ Push(r11);              \
82   __ Push(lr);               \
83   harness_scratch.Include(ip);
84 
85 #define END()                  \
86   harness_scratch.Exclude(ip); \
87   __ Pop(lr);                  \
88   __ Pop(r11);                 \
89   __ Pop(r10);                 \
90   __ Pop(r9);                  \
91   __ Pop(r8);                  \
92   __ Pop(r7);                  \
93   __ Pop(r6);                  \
94   __ Pop(r5);                  \
95   __ Pop(r4);                  \
96   __ Bx(lr);                   \
97   __ FinalizeCode();
98 
99 #define RUN()                                                 \
100   {                                                           \
101     int pcs_offset = masm.IsUsingT32() ? 1 : 0;               \
102     masm.GetBuffer()->SetExecutable();                        \
103     ExecuteMemory(masm.GetBuffer()->GetStartAddress<byte*>(), \
104                   masm.GetSizeOfCodeGenerated(),              \
105                   pcs_offset);                                \
106     masm.GetBuffer()->SetWritable();                          \
107   }
108 
109 #define TEARDOWN() harness_scratch.Close();
110 
111 #endif  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
112 
113 namespace vixl {
114 namespace aarch32 {
115 
116 // List of instruction encodings:
117 #define FOREACH_INSTRUCTION(M) \
118   M(Adc)                       \
119   M(Adcs)                      \
120   M(Add)                       \
121   M(Adds)                      \
122   M(And)                       \
123   M(Ands)                      \
124   M(Bic)                       \
125   M(Bics)                      \
126   M(Eor)                       \
127   M(Eors)                      \
128   M(Orr)                       \
129   M(Orrs)                      \
130   M(Rsb)                       \
131   M(Rsbs)                      \
132   M(Rsc)                       \
133   M(Rscs)                      \
134   M(Sbc)                       \
135   M(Sbcs)                      \
136   M(Sub)                       \
137   M(Subs)
138 
139 
140 // The following definitions are defined again in each generated test, therefore
141 // we need to place them in an anomymous namespace. It expresses that they are
142 // local to this file only, and the compiler is not allowed to share these types
143 // across test files during template instantiation. Specifically, `Operands` and
144 // `Inputs` have various layouts across generated tests so they absolutely
145 // cannot be shared.
146 
147 #ifdef VIXL_INCLUDE_TARGET_A32
148 namespace {
149 
150 // Values to be passed to the assembler to produce the instruction under test.
151 struct Operands {
152   Condition cond;
153   Register rd;
154   Register rn;
155   Register rm;
156   ShiftType shift;
157   Register rs;
158 };
159 
160 // Input data to feed to the instruction.
161 struct Inputs {
162   uint32_t apsr;
163   uint32_t rd;
164   uint32_t rn;
165   uint32_t rm;
166   uint32_t rs;
167 };
168 
169 // This structure contains all input data needed to test one specific encoding.
170 // It used to generate a loop over an instruction.
171 struct TestLoopData {
172   // The `operands` fields represents the values to pass to the assembler to
173   // produce the instruction.
174   Operands operands;
175   // Description of the operands, used for error reporting.
176   const char* operands_description;
177   // Unique identifier, used for generating traces.
178   const char* identifier;
179   // Array of values to be fed to the instruction.
180   size_t input_size;
181   const Inputs* inputs;
182 };
183 
184 static const Inputs kCondition[] =
185     {{NFlag, 0xabababab, 0xabababab, 0xabababab, 0},
186      {ZFlag, 0xabababab, 0xabababab, 0xabababab, 0},
187      {CFlag, 0xabababab, 0xabababab, 0xabababab, 0},
188      {VFlag, 0xabababab, 0xabababab, 0xabababab, 0},
189      {NZFlag, 0xabababab, 0xabababab, 0xabababab, 0},
190      {NCFlag, 0xabababab, 0xabababab, 0xabababab, 0},
191      {NVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
192      {ZCFlag, 0xabababab, 0xabababab, 0xabababab, 0},
193      {ZVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
194      {CVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
195      {NZCFlag, 0xabababab, 0xabababab, 0xabababab, 0},
196      {NZVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
197      {NCVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
198      {ZCVFlag, 0xabababab, 0xabababab, 0xabababab, 0},
199      {NZCVFlag, 0xabababab, 0xabababab, 0xabababab, 0}};
200 
201 static const Inputs kRdIsRn[] =
202     {{NoFlag, 0xffffff83, 0xffffff83, 0xffff8002, 0},
203      {NoFlag, 0x0000007e, 0x0000007e, 0x7fffffff, 0},
204      {NoFlag, 0x0000007d, 0x0000007d, 0xffffffe0, 0},
205      {NoFlag, 0x7fffffff, 0x7fffffff, 0x00000002, 0},
206      {NoFlag, 0xffff8002, 0xffff8002, 0xfffffffd, 0},
207      {NoFlag, 0xffffffe0, 0xffffffe0, 0x00007fff, 0},
208      {NoFlag, 0xffff8000, 0xffff8000, 0xffffff83, 0},
209      {NoFlag, 0xffff8002, 0xffff8002, 0x80000001, 0},
210      {NoFlag, 0x00007ffd, 0x00007ffd, 0xffff8003, 0},
211      {NoFlag, 0x00007fff, 0x00007fff, 0xffffffff, 0},
212      {NoFlag, 0x00000000, 0x00000000, 0xffffff80, 0},
213      {NoFlag, 0xffff8001, 0xffff8001, 0x33333333, 0},
214      {NoFlag, 0xffffff80, 0xffffff80, 0x0000007e, 0},
215      {NoFlag, 0x0000007e, 0x0000007e, 0x7ffffffd, 0},
216      {NoFlag, 0xffffff80, 0xffffff80, 0xfffffffd, 0},
217      {NoFlag, 0x00000020, 0x00000020, 0xffff8002, 0},
218      {NoFlag, 0xffffff80, 0xffffff80, 0xfffffffe, 0},
219      {NoFlag, 0x00000002, 0x00000002, 0x00000000, 0},
220      {NoFlag, 0x0000007e, 0x0000007e, 0x00000001, 0},
221      {NoFlag, 0x00000002, 0x00000002, 0x0000007f, 0},
222      {NoFlag, 0x80000000, 0x80000000, 0x80000000, 0},
223      {NoFlag, 0x7fffffff, 0x7fffffff, 0xffffff80, 0},
224      {NoFlag, 0x00000001, 0x00000001, 0xfffffffe, 0},
225      {NoFlag, 0x33333333, 0x33333333, 0x0000007d, 0},
226      {NoFlag, 0x00000001, 0x00000001, 0x7ffffffe, 0},
227      {NoFlag, 0x00007ffe, 0x00007ffe, 0x7fffffff, 0},
228      {NoFlag, 0x80000000, 0x80000000, 0xffffff83, 0},
229      {NoFlag, 0x00000000, 0x00000000, 0x7ffffffe, 0},
230      {NoFlag, 0x00000000, 0x00000000, 0x0000007f, 0},
231      {NoFlag, 0x7fffffff, 0x7fffffff, 0xcccccccc, 0},
232      {NoFlag, 0xffffff82, 0xffffff82, 0x00000002, 0},
233      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xaaaaaaaa, 0},
234      {NoFlag, 0xcccccccc, 0xcccccccc, 0xffff8001, 0},
235      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffff8001, 0},
236      {NoFlag, 0x7fffffff, 0x7fffffff, 0x00000020, 0},
237      {NoFlag, 0xffffffe0, 0xffffffe0, 0x00007ffe, 0},
238      {NoFlag, 0x80000001, 0x80000001, 0xffff8000, 0},
239      {NoFlag, 0xffffff82, 0xffffff82, 0x0000007d, 0},
240      {NoFlag, 0x0000007e, 0x0000007e, 0x7ffffffe, 0},
241      {NoFlag, 0x00007ffd, 0x00007ffd, 0xffffff80, 0},
242      {NoFlag, 0x0000007d, 0x0000007d, 0x0000007e, 0},
243      {NoFlag, 0xffff8002, 0xffff8002, 0x7fffffff, 0},
244      {NoFlag, 0xffffffe0, 0xffffffe0, 0x0000007f, 0},
245      {NoFlag, 0x00007ffe, 0x00007ffe, 0xffffff81, 0},
246      {NoFlag, 0x80000000, 0x80000000, 0x0000007e, 0},
247      {NoFlag, 0xffffffff, 0xffffffff, 0xaaaaaaaa, 0},
248      {NoFlag, 0xfffffffe, 0xfffffffe, 0x00000020, 0},
249      {NoFlag, 0xffffff82, 0xffffff82, 0xffff8003, 0},
250      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xffff8002, 0},
251      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0x00000000, 0},
252      {NoFlag, 0xfffffffd, 0xfffffffd, 0xffffffe0, 0},
253      {NoFlag, 0xffff8000, 0xffff8000, 0xffff8002, 0},
254      {NoFlag, 0xffffff82, 0xffffff82, 0x7ffffffd, 0},
255      {NoFlag, 0xcccccccc, 0xcccccccc, 0x80000000, 0},
256      {NoFlag, 0x80000001, 0x80000001, 0x33333333, 0},
257      {NoFlag, 0x00000001, 0x00000001, 0x00000002, 0},
258      {NoFlag, 0x55555555, 0x55555555, 0x0000007f, 0},
259      {NoFlag, 0xffffffff, 0xffffffff, 0xfffffffd, 0},
260      {NoFlag, 0xffffff80, 0xffffff80, 0x80000000, 0},
261      {NoFlag, 0x00000000, 0x00000000, 0x00000020, 0},
262      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffff8003, 0},
263      {NoFlag, 0xffff8001, 0xffff8001, 0xffff8000, 0},
264      {NoFlag, 0x55555555, 0x55555555, 0x55555555, 0},
265      {NoFlag, 0x00007fff, 0x00007fff, 0xffff8000, 0},
266      {NoFlag, 0x7fffffff, 0x7fffffff, 0xffffffe0, 0},
267      {NoFlag, 0x00000001, 0x00000001, 0x55555555, 0},
268      {NoFlag, 0x33333333, 0x33333333, 0x7ffffffe, 0},
269      {NoFlag, 0x80000000, 0x80000000, 0xffffffe0, 0},
270      {NoFlag, 0xffffff83, 0xffffff83, 0x0000007d, 0},
271      {NoFlag, 0xffff8003, 0xffff8003, 0x00000002, 0},
272      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0xffffff81, 0},
273      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffffff80, 0},
274      {NoFlag, 0x00007ffe, 0x00007ffe, 0xffff8002, 0},
275      {NoFlag, 0x80000001, 0x80000001, 0xfffffffe, 0},
276      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xfffffffd, 0},
277      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0xfffffffe, 0},
278      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0xffffff83, 0},
279      {NoFlag, 0xfffffffd, 0xfffffffd, 0x00007ffe, 0},
280      {NoFlag, 0x7fffffff, 0x7fffffff, 0x80000000, 0},
281      {NoFlag, 0xffffff82, 0xffffff82, 0x7fffffff, 0},
282      {NoFlag, 0xffffffe0, 0xffffffe0, 0xffffff83, 0},
283      {NoFlag, 0xffff8000, 0xffff8000, 0xffff8000, 0},
284      {NoFlag, 0x00000001, 0x00000001, 0x7fffffff, 0},
285      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffffffff, 0},
286      {NoFlag, 0xffffff82, 0xffffff82, 0xffffffff, 0},
287      {NoFlag, 0xffffffff, 0xffffffff, 0xfffffffe, 0},
288      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x0000007d, 0},
289      {NoFlag, 0xffff8001, 0xffff8001, 0xfffffffe, 0},
290      {NoFlag, 0x00007ffe, 0x00007ffe, 0x0000007d, 0},
291      {NoFlag, 0xffffff82, 0xffffff82, 0xfffffffe, 0},
292      {NoFlag, 0x00000000, 0x00000000, 0x00007ffd, 0},
293      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0xffff8002, 0},
294      {NoFlag, 0x0000007f, 0x0000007f, 0xffffff82, 0},
295      {NoFlag, 0x00007fff, 0x00007fff, 0x33333333, 0},
296      {NoFlag, 0xfffffffd, 0xfffffffd, 0x80000000, 0},
297      {NoFlag, 0x00000000, 0x00000000, 0xfffffffd, 0},
298      {NoFlag, 0x0000007d, 0x0000007d, 0x0000007f, 0},
299      {NoFlag, 0xfffffffd, 0xfffffffd, 0x0000007e, 0},
300      {NoFlag, 0xffffffe0, 0xffffffe0, 0x55555555, 0},
301      {NoFlag, 0xffffffff, 0xffffffff, 0x80000000, 0},
302      {NoFlag, 0xffffffe0, 0xffffffe0, 0x0000007e, 0},
303      {NoFlag, 0xffffff81, 0xffffff81, 0x00007ffd, 0},
304      {NoFlag, 0x00000020, 0x00000020, 0xffff8001, 0},
305      {NoFlag, 0x00007fff, 0x00007fff, 0xffffff83, 0},
306      {NoFlag, 0x33333333, 0x33333333, 0x00000000, 0},
307      {NoFlag, 0xffff8000, 0xffff8000, 0xffffff82, 0},
308      {NoFlag, 0xffff8001, 0xffff8001, 0x0000007e, 0},
309      {NoFlag, 0xffffff80, 0xffffff80, 0x00000001, 0},
310      {NoFlag, 0x80000000, 0x80000000, 0xcccccccc, 0},
311      {NoFlag, 0x00000002, 0x00000002, 0x00007ffd, 0},
312      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0x80000001, 0},
313      {NoFlag, 0x00000020, 0x00000020, 0x00007ffe, 0},
314      {NoFlag, 0xffff8000, 0xffff8000, 0xfffffffd, 0},
315      {NoFlag, 0x7fffffff, 0x7fffffff, 0xffff8001, 0},
316      {NoFlag, 0x00000000, 0x00000000, 0xffffff83, 0},
317      {NoFlag, 0x0000007f, 0x0000007f, 0x00000020, 0},
318      {NoFlag, 0x80000001, 0x80000001, 0xffff8003, 0},
319      {NoFlag, 0xffff8001, 0xffff8001, 0x0000007f, 0},
320      {NoFlag, 0x0000007f, 0x0000007f, 0x80000001, 0},
321      {NoFlag, 0x00000002, 0x00000002, 0x7ffffffe, 0},
322      {NoFlag, 0xffffff82, 0xffffff82, 0xffffff83, 0},
323      {NoFlag, 0x00007ffd, 0x00007ffd, 0x7fffffff, 0},
324      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0xfffffffe, 0},
325      {NoFlag, 0xffffff82, 0xffffff82, 0xffff8000, 0},
326      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffff8000, 0},
327      {NoFlag, 0xffff8002, 0xffff8002, 0xffffff81, 0},
328      {NoFlag, 0x33333333, 0x33333333, 0x7fffffff, 0},
329      {NoFlag, 0x80000001, 0x80000001, 0x00007fff, 0},
330      {NoFlag, 0xffff8002, 0xffff8002, 0xcccccccc, 0},
331      {NoFlag, 0xffffffff, 0xffffffff, 0x00000002, 0},
332      {NoFlag, 0x33333333, 0x33333333, 0xffffff81, 0},
333      {NoFlag, 0xfffffffd, 0xfffffffd, 0xffffff80, 0},
334      {NoFlag, 0x55555555, 0x55555555, 0xaaaaaaaa, 0},
335      {NoFlag, 0x33333333, 0x33333333, 0xffffff82, 0},
336      {NoFlag, 0xffffff80, 0xffffff80, 0xaaaaaaaa, 0},
337      {NoFlag, 0x0000007e, 0x0000007e, 0x00000020, 0},
338      {NoFlag, 0xffffff83, 0xffffff83, 0x00007ffd, 0},
339      {NoFlag, 0xffffff82, 0xffffff82, 0xaaaaaaaa, 0},
340      {NoFlag, 0xffff8003, 0xffff8003, 0xffffffff, 0},
341      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0xfffffffe, 0},
342      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x00000000, 0},
343      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x0000007f, 0},
344      {NoFlag, 0x0000007f, 0x0000007f, 0x0000007d, 0},
345      {NoFlag, 0xfffffffd, 0xfffffffd, 0x55555555, 0},
346      {NoFlag, 0xffffffff, 0xffffffff, 0x00000020, 0},
347      {NoFlag, 0x00007ffe, 0x00007ffe, 0xffffff83, 0},
348      {NoFlag, 0x7fffffff, 0x7fffffff, 0x55555555, 0},
349      {NoFlag, 0x55555555, 0x55555555, 0xcccccccc, 0},
350      {NoFlag, 0xffffffe0, 0xffffffe0, 0xffff8003, 0},
351      {NoFlag, 0x7ffffffe, 0x7ffffffe, 0x00007ffe, 0},
352      {NoFlag, 0x00007ffd, 0x00007ffd, 0xffff8002, 0},
353      {NoFlag, 0x00007ffd, 0x00007ffd, 0x00000001, 0},
354      {NoFlag, 0x00000000, 0x00000000, 0x00007ffe, 0},
355      {NoFlag, 0xffffff80, 0xffffff80, 0x00000020, 0},
356      {NoFlag, 0xffff8000, 0xffff8000, 0x0000007d, 0},
357      {NoFlag, 0xffff8003, 0xffff8003, 0x00000000, 0},
358      {NoFlag, 0x0000007e, 0x0000007e, 0x80000000, 0},
359      {NoFlag, 0xfffffffd, 0xfffffffd, 0x00000000, 0},
360      {NoFlag, 0xffffff80, 0xffffff80, 0xffffffff, 0},
361      {NoFlag, 0xcccccccc, 0xcccccccc, 0x0000007f, 0},
362      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0x00000000, 0},
363      {NoFlag, 0x00007fff, 0x00007fff, 0x00000000, 0},
364      {NoFlag, 0x0000007f, 0x0000007f, 0x00000001, 0},
365      {NoFlag, 0xffffffff, 0xffffffff, 0xffffff82, 0},
366      {NoFlag, 0x00007ffe, 0x00007ffe, 0x00007ffd, 0},
367      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x33333333, 0},
368      {NoFlag, 0xffffff82, 0xffffff82, 0x55555555, 0},
369      {NoFlag, 0xffff8003, 0xffff8003, 0x0000007e, 0},
370      {NoFlag, 0xffffff83, 0xffffff83, 0x00000002, 0},
371      {NoFlag, 0xffffff82, 0xffffff82, 0x33333333, 0},
372      {NoFlag, 0x55555555, 0x55555555, 0xffffffff, 0},
373      {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa, 0x80000001, 0},
374      {NoFlag, 0xffffff83, 0xffffff83, 0xffffffe0, 0},
375      {NoFlag, 0x00000001, 0x00000001, 0xffffffe0, 0},
376      {NoFlag, 0x33333333, 0x33333333, 0x33333333, 0},
377      {NoFlag, 0x55555555, 0x55555555, 0x00000001, 0},
378      {NoFlag, 0xffffff83, 0xffffff83, 0x00007fff, 0},
379      {NoFlag, 0x00000002, 0x00000002, 0xfffffffd, 0},
380      {NoFlag, 0xffffffe0, 0xffffffe0, 0xffff8002, 0},
381      {NoFlag, 0x80000000, 0x80000000, 0x00007ffd, 0},
382      {NoFlag, 0xffffff83, 0xffffff83, 0xfffffffe, 0},
383      {NoFlag, 0x80000001, 0x80000001, 0xffffffff, 0},
384      {NoFlag, 0xffff8003, 0xffff8003, 0x00000020, 0},
385      {NoFlag, 0xffffff82, 0xffffff82, 0xcccccccc, 0},
386      {NoFlag, 0x00000020, 0x00000020, 0x7fffffff, 0},
387      {NoFlag, 0xffffff80, 0xffffff80, 0x55555555, 0},
388      {NoFlag, 0x00000001, 0x00000001, 0x00000020, 0},
389      {NoFlag, 0xffff8001, 0xffff8001, 0x00007fff, 0},
390      {NoFlag, 0x00000020, 0x00000020, 0xaaaaaaaa, 0},
391      {NoFlag, 0x55555555, 0x55555555, 0x7fffffff, 0},
392      {NoFlag, 0xfffffffe, 0xfffffffe, 0x7fffffff, 0},
393      {NoFlag, 0x00007fff, 0x00007fff, 0x55555555, 0},
394      {NoFlag, 0x55555555, 0x55555555, 0x0000007d, 0},
395      {NoFlag, 0xcccccccc, 0xcccccccc, 0x7ffffffe, 0},
396      {NoFlag, 0xffff8002, 0xffff8002, 0x00007ffe, 0},
397      {NoFlag, 0xfffffffe, 0xfffffffe, 0xffffff81, 0},
398      {NoFlag, 0xffffff81, 0xffffff81, 0x0000007d, 0},
399      {NoFlag, 0x00000020, 0x00000020, 0x0000007e, 0},
400      {NoFlag, 0xffffffff, 0xffffffff, 0x00007ffe, 0},
401      {NoFlag, 0xffff8002, 0xffff8002, 0x0000007e, 0}};
402 
403 static const Inputs kRdIsRm[] =
404     {{NoFlag, 0x55555555, 0x7ffffffe, 0x55555555, 0},
405      {NoFlag, 0xfffffffe, 0x00000001, 0xfffffffe, 0},
406      {NoFlag, 0xffffff82, 0xffffff82, 0xffffff82, 0},
407      {NoFlag, 0xffff8000, 0xffff8003, 0xffff8000, 0},
408      {NoFlag, 0x00000001, 0x00000000, 0x00000001, 0},
409      {NoFlag, 0xffffff81, 0x00007fff, 0xffffff81, 0},
410      {NoFlag, 0x0000007d, 0xffff8002, 0x0000007d, 0},
411      {NoFlag, 0x80000000, 0xffff8000, 0x80000000, 0},
412      {NoFlag, 0xffffff80, 0x00000020, 0xffffff80, 0},
413      {NoFlag, 0x55555555, 0xffffff81, 0x55555555, 0},
414      {NoFlag, 0x00007ffd, 0xffffff82, 0x00007ffd, 0},
415      {NoFlag, 0x55555555, 0x00007fff, 0x55555555, 0},
416      {NoFlag, 0x7ffffffd, 0xffff8000, 0x7ffffffd, 0},
417      {NoFlag, 0xffffffff, 0xffffff83, 0xffffffff, 0},
418      {NoFlag, 0x00000000, 0xffffffff, 0x00000000, 0},
419      {NoFlag, 0xffff8002, 0x33333333, 0xffff8002, 0},
420      {NoFlag, 0x00007ffd, 0xaaaaaaaa, 0x00007ffd, 0},
421      {NoFlag, 0x55555555, 0xffff8000, 0x55555555, 0},
422      {NoFlag, 0x80000001, 0xffffffff, 0x80000001, 0},
423      {NoFlag, 0x0000007d, 0xffffff83, 0x0000007d, 0},
424      {NoFlag, 0x0000007e, 0xffffff82, 0x0000007e, 0},
425      {NoFlag, 0xcccccccc, 0x0000007d, 0xcccccccc, 0},
426      {NoFlag, 0xffff8002, 0xffffffff, 0xffff8002, 0},
427      {NoFlag, 0xffffff81, 0x0000007f, 0xffffff81, 0},
428      {NoFlag, 0xffff8000, 0xffffff83, 0xffff8000, 0},
429      {NoFlag, 0xffffffff, 0xffffffe0, 0xffffffff, 0},
430      {NoFlag, 0xfffffffd, 0x80000001, 0xfffffffd, 0},
431      {NoFlag, 0x55555555, 0x80000000, 0x55555555, 0},
432      {NoFlag, 0xffff8000, 0x0000007d, 0xffff8000, 0},
433      {NoFlag, 0xaaaaaaaa, 0xffff8003, 0xaaaaaaaa, 0},
434      {NoFlag, 0x00000001, 0x00007ffd, 0x00000001, 0},
435      {NoFlag, 0x0000007e, 0x7ffffffe, 0x0000007e, 0},
436      {NoFlag, 0x00000020, 0x00007ffd, 0x00000020, 0},
437      {NoFlag, 0xffffff81, 0x7ffffffd, 0xffffff81, 0},
438      {NoFlag, 0xffffff83, 0x0000007f, 0xffffff83, 0},
439      {NoFlag, 0x00000001, 0x0000007e, 0x00000001, 0},
440      {NoFlag, 0xffffff82, 0xfffffffd, 0xffffff82, 0},
441      {NoFlag, 0xffff8003, 0x7ffffffe, 0xffff8003, 0},
442      {NoFlag, 0x00000002, 0x00000002, 0x00000002, 0},
443      {NoFlag, 0xffffff83, 0xffff8001, 0xffffff83, 0},
444      {NoFlag, 0xffff8002, 0xfffffffe, 0xffff8002, 0},
445      {NoFlag, 0xffffff80, 0xffffff81, 0xffffff80, 0},
446      {NoFlag, 0x7fffffff, 0xffffff81, 0x7fffffff, 0},
447      {NoFlag, 0x00000020, 0xffffff81, 0x00000020, 0},
448      {NoFlag, 0x0000007f, 0xffffffff, 0x0000007f, 0},
449      {NoFlag, 0x0000007d, 0xcccccccc, 0x0000007d, 0},
450      {NoFlag, 0x00007fff, 0x55555555, 0x00007fff, 0},
451      {NoFlag, 0xffff8003, 0x00007ffd, 0xffff8003, 0},
452      {NoFlag, 0x80000001, 0x80000001, 0x80000001, 0},
453      {NoFlag, 0xffffffff, 0xfffffffd, 0xffffffff, 0},
454      {NoFlag, 0xffff8000, 0xfffffffe, 0xffff8000, 0},
455      {NoFlag, 0xcccccccc, 0x0000007f, 0xcccccccc, 0},
456      {NoFlag, 0x00000001, 0x00000002, 0x00000001, 0},
457      {NoFlag, 0xffffff82, 0xffffff81, 0xffffff82, 0},
458      {NoFlag, 0xfffffffd, 0x00007ffd, 0xfffffffd, 0},
459      {NoFlag, 0x80000001, 0x33333333, 0x80000001, 0},
460      {NoFlag, 0xffffff82, 0xffff8002, 0xffffff82, 0},
461      {NoFlag, 0xffff8003, 0xfffffffd, 0xffff8003, 0},
462      {NoFlag, 0xffffff81, 0x00000020, 0xffffff81, 0},
463      {NoFlag, 0xffff8001, 0xffff8003, 0xffff8001, 0},
464      {NoFlag, 0x00000001, 0x80000001, 0x00000001, 0},
465      {NoFlag, 0xfffffffd, 0x00000002, 0xfffffffd, 0},
466      {NoFlag, 0xffff8003, 0x7ffffffd, 0xffff8003, 0},
467      {NoFlag, 0x0000007e, 0xaaaaaaaa, 0x0000007e, 0},
468      {NoFlag, 0x7ffffffe, 0x7fffffff, 0x7ffffffe, 0},
469      {NoFlag, 0x00007ffd, 0x00007ffe, 0x00007ffd, 0},
470      {NoFlag, 0x00007fff, 0x80000001, 0x00007fff, 0},
471      {NoFlag, 0x00007fff, 0xfffffffe, 0x00007fff, 0},
472      {NoFlag, 0x00000001, 0xffffff80, 0x00000001, 0},
473      {NoFlag, 0x55555555, 0xcccccccc, 0x55555555, 0},
474      {NoFlag, 0x7ffffffd, 0xffffffe0, 0x7ffffffd, 0},
475      {NoFlag, 0xffffff81, 0xfffffffe, 0xffffff81, 0},
476      {NoFlag, 0xffffff82, 0x00007ffe, 0xffffff82, 0},
477      {NoFlag, 0xffffff82, 0x80000001, 0xffffff82, 0},
478      {NoFlag, 0x0000007f, 0xffff8001, 0x0000007f, 0},
479      {NoFlag, 0x7ffffffd, 0xffffff83, 0x7ffffffd, 0},
480      {NoFlag, 0xffffff82, 0xcccccccc, 0xffffff82, 0},
481      {NoFlag, 0x00000020, 0xffffff83, 0x00000020, 0},
482      {NoFlag, 0x00007ffe, 0x80000000, 0x00007ffe, 0},
483      {NoFlag, 0x0000007f, 0xffff8000, 0x0000007f, 0},
484      {NoFlag, 0xffffff82, 0x33333333, 0xffffff82, 0},
485      {NoFlag, 0x7ffffffd, 0x7ffffffd, 0x7ffffffd, 0},
486      {NoFlag, 0xffffff80, 0xffff8001, 0xffffff80, 0},
487      {NoFlag, 0x00000002, 0xaaaaaaaa, 0x00000002, 0},
488      {NoFlag, 0xffffffff, 0x7fffffff, 0xffffffff, 0},
489      {NoFlag, 0xfffffffd, 0xfffffffe, 0xfffffffd, 0},
490      {NoFlag, 0x00000020, 0x00000001, 0x00000020, 0},
491      {NoFlag, 0x55555555, 0x00000001, 0x55555555, 0},
492      {NoFlag, 0x55555555, 0xffffff80, 0x55555555, 0},
493      {NoFlag, 0xffffffff, 0x00007fff, 0xffffffff, 0},
494      {NoFlag, 0x00000020, 0xaaaaaaaa, 0x00000020, 0},
495      {NoFlag, 0x00000002, 0x00007ffe, 0x00000002, 0},
496      {NoFlag, 0x00000001, 0xcccccccc, 0x00000001, 0},
497      {NoFlag, 0xffff8001, 0x00000000, 0xffff8001, 0},
498      {NoFlag, 0x00000001, 0xffff8000, 0x00000001, 0},
499      {NoFlag, 0xffffffe0, 0x00007fff, 0xffffffe0, 0},
500      {NoFlag, 0xfffffffe, 0x00007fff, 0xfffffffe, 0},
501      {NoFlag, 0xffffff83, 0x00000001, 0xffffff83, 0},
502      {NoFlag, 0x00007fff, 0xffff8002, 0x00007fff, 0},
503      {NoFlag, 0x7ffffffd, 0x7ffffffe, 0x7ffffffd, 0},
504      {NoFlag, 0x80000001, 0xaaaaaaaa, 0x80000001, 0},
505      {NoFlag, 0x80000001, 0xcccccccc, 0x80000001, 0},
506      {NoFlag, 0x00007ffe, 0xffffffe0, 0x00007ffe, 0},
507      {NoFlag, 0x00007ffe, 0xfffffffd, 0x00007ffe, 0},
508      {NoFlag, 0x55555555, 0xaaaaaaaa, 0x55555555, 0},
509      {NoFlag, 0xffffffe0, 0x00000001, 0xffffffe0, 0},
510      {NoFlag, 0x0000007e, 0x00007fff, 0x0000007e, 0},
511      {NoFlag, 0xfffffffe, 0xfffffffd, 0xfffffffe, 0},
512      {NoFlag, 0x33333333, 0x0000007d, 0x33333333, 0},
513      {NoFlag, 0xffffff81, 0x7fffffff, 0xffffff81, 0},
514      {NoFlag, 0x0000007e, 0x0000007d, 0x0000007e, 0},
515      {NoFlag, 0x00000001, 0xffffff81, 0x00000001, 0},
516      {NoFlag, 0x80000000, 0x00000002, 0x80000000, 0},
517      {NoFlag, 0x0000007d, 0xffff8003, 0x0000007d, 0},
518      {NoFlag, 0x7ffffffe, 0x00007ffd, 0x7ffffffe, 0},
519      {NoFlag, 0x7ffffffe, 0xaaaaaaaa, 0x7ffffffe, 0},
520      {NoFlag, 0x00000000, 0xffff8000, 0x00000000, 0},
521      {NoFlag, 0x33333333, 0x00000002, 0x33333333, 0},
522      {NoFlag, 0xffffff81, 0xffffff83, 0xffffff81, 0},
523      {NoFlag, 0x7ffffffe, 0x00007ffe, 0x7ffffffe, 0},
524      {NoFlag, 0x80000000, 0x0000007d, 0x80000000, 0},
525      {NoFlag, 0x00000020, 0x00000002, 0x00000020, 0},
526      {NoFlag, 0x33333333, 0x80000001, 0x33333333, 0},
527      {NoFlag, 0xffffff83, 0x00007ffd, 0xffffff83, 0},
528      {NoFlag, 0x00007ffd, 0xffffff83, 0x00007ffd, 0},
529      {NoFlag, 0xffff8001, 0x80000000, 0xffff8001, 0},
530      {NoFlag, 0x00000000, 0x80000000, 0x00000000, 0},
531      {NoFlag, 0xffffffe0, 0xffffffff, 0xffffffe0, 0},
532      {NoFlag, 0x80000000, 0xffffff83, 0x80000000, 0},
533      {NoFlag, 0x00000020, 0xffffff80, 0x00000020, 0},
534      {NoFlag, 0x7ffffffd, 0xffff8001, 0x7ffffffd, 0},
535      {NoFlag, 0x80000001, 0xffff8003, 0x80000001, 0},
536      {NoFlag, 0x00007ffe, 0x7fffffff, 0x00007ffe, 0},
537      {NoFlag, 0x7fffffff, 0x00000002, 0x7fffffff, 0},
538      {NoFlag, 0xffffff83, 0xffff8003, 0xffffff83, 0},
539      {NoFlag, 0xaaaaaaaa, 0xcccccccc, 0xaaaaaaaa, 0},
540      {NoFlag, 0x0000007f, 0xffffff80, 0x0000007f, 0},
541      {NoFlag, 0x80000001, 0x00007ffd, 0x80000001, 0},
542      {NoFlag, 0xffff8000, 0x80000001, 0xffff8000, 0},
543      {NoFlag, 0x00007fff, 0x00007ffd, 0x00007fff, 0},
544      {NoFlag, 0x0000007e, 0x0000007f, 0x0000007e, 0},
545      {NoFlag, 0x00000002, 0x0000007d, 0x00000002, 0},
546      {NoFlag, 0x80000001, 0x7fffffff, 0x80000001, 0},
547      {NoFlag, 0x0000007e, 0xffffff81, 0x0000007e, 0},
548      {NoFlag, 0x7ffffffe, 0xffff8001, 0x7ffffffe, 0},
549      {NoFlag, 0x7fffffff, 0x80000001, 0x7fffffff, 0},
550      {NoFlag, 0x7ffffffd, 0x0000007f, 0x7ffffffd, 0},
551      {NoFlag, 0xffffff81, 0xffffff81, 0xffffff81, 0},
552      {NoFlag, 0x00000001, 0xfffffffd, 0x00000001, 0},
553      {NoFlag, 0x00000001, 0xffffffff, 0x00000001, 0},
554      {NoFlag, 0x7ffffffd, 0x55555555, 0x7ffffffd, 0},
555      {NoFlag, 0x55555555, 0x0000007f, 0x55555555, 0},
556      {NoFlag, 0x55555555, 0xffff8003, 0x55555555, 0},
557      {NoFlag, 0xaaaaaaaa, 0x00007ffd, 0xaaaaaaaa, 0},
558      {NoFlag, 0x0000007e, 0x33333333, 0x0000007e, 0},
559      {NoFlag, 0xfffffffe, 0x80000001, 0xfffffffe, 0},
560      {NoFlag, 0xfffffffe, 0xffff8000, 0xfffffffe, 0},
561      {NoFlag, 0xffffffe0, 0xffffff81, 0xffffffe0, 0},
562      {NoFlag, 0x7fffffff, 0x0000007f, 0x7fffffff, 0},
563      {NoFlag, 0xffff8003, 0x0000007f, 0xffff8003, 0},
564      {NoFlag, 0xffffff82, 0x00007ffd, 0xffffff82, 0},
565      {NoFlag, 0x33333333, 0xffffffff, 0x33333333, 0},
566      {NoFlag, 0xffffffe0, 0xcccccccc, 0xffffffe0, 0},
567      {NoFlag, 0xffffff83, 0x7ffffffd, 0xffffff83, 0},
568      {NoFlag, 0x0000007e, 0xcccccccc, 0x0000007e, 0},
569      {NoFlag, 0x00000002, 0xfffffffd, 0x00000002, 0},
570      {NoFlag, 0x00007fff, 0xcccccccc, 0x00007fff, 0},
571      {NoFlag, 0x7fffffff, 0x00007fff, 0x7fffffff, 0},
572      {NoFlag, 0xffffffe0, 0x33333333, 0xffffffe0, 0},
573      {NoFlag, 0x0000007f, 0x0000007d, 0x0000007f, 0},
574      {NoFlag, 0x0000007f, 0xffffffe0, 0x0000007f, 0},
575      {NoFlag, 0x00007fff, 0xffff8000, 0x00007fff, 0},
576      {NoFlag, 0x7fffffff, 0xffffffff, 0x7fffffff, 0},
577      {NoFlag, 0xffff8000, 0x7ffffffd, 0xffff8000, 0},
578      {NoFlag, 0xcccccccc, 0x0000007e, 0xcccccccc, 0},
579      {NoFlag, 0x33333333, 0xffff8003, 0x33333333, 0},
580      {NoFlag, 0x55555555, 0x00000002, 0x55555555, 0},
581      {NoFlag, 0x00000001, 0x00000001, 0x00000001, 0},
582      {NoFlag, 0xaaaaaaaa, 0x33333333, 0xaaaaaaaa, 0},
583      {NoFlag, 0x7ffffffd, 0x00000001, 0x7ffffffd, 0},
584      {NoFlag, 0xffffff82, 0xffff8000, 0xffffff82, 0},
585      {NoFlag, 0x0000007d, 0x55555555, 0x0000007d, 0},
586      {NoFlag, 0xffff8000, 0x7ffffffe, 0xffff8000, 0},
587      {NoFlag, 0x7fffffff, 0xffffffe0, 0x7fffffff, 0},
588      {NoFlag, 0x7fffffff, 0xffff8003, 0x7fffffff, 0},
589      {NoFlag, 0xffffff82, 0xaaaaaaaa, 0xffffff82, 0},
590      {NoFlag, 0xfffffffd, 0xffffff80, 0xfffffffd, 0},
591      {NoFlag, 0x7ffffffd, 0x80000001, 0x7ffffffd, 0},
592      {NoFlag, 0x00000000, 0x00007ffd, 0x00000000, 0},
593      {NoFlag, 0xffffffff, 0xffffff80, 0xffffffff, 0},
594      {NoFlag, 0xffffff80, 0xcccccccc, 0xffffff80, 0},
595      {NoFlag, 0x00007ffe, 0x55555555, 0x00007ffe, 0},
596      {NoFlag, 0xffff8000, 0xffff8000, 0xffff8000, 0},
597      {NoFlag, 0xffffffff, 0xffff8000, 0xffffffff, 0},
598      {NoFlag, 0x80000001, 0x0000007d, 0x80000001, 0},
599      {NoFlag, 0xffffffe0, 0xffff8002, 0xffffffe0, 0},
600      {NoFlag, 0xfffffffe, 0xffffffe0, 0xfffffffe, 0},
601      {NoFlag, 0x80000000, 0xffff8003, 0x80000000, 0},
602      {NoFlag, 0x80000001, 0xffffff81, 0x80000001, 0},
603      {NoFlag, 0xffffffe0, 0x00007ffe, 0xffffffe0, 0}};
604 
605 static const Inputs kRdIsNotRnIsNotRm[] =
606     {{NoFlag, 0x0000007e, 0x0000007e, 0x0000007d, 0},
607      {NoFlag, 0x55555555, 0x00000002, 0xffff8002, 0},
608      {NoFlag, 0xffffffe0, 0x80000001, 0x00000000, 0},
609      {NoFlag, 0x55555555, 0xffffff83, 0x00000002, 0},
610      {NoFlag, 0xffffffe0, 0xffffffe0, 0x00000002, 0},
611      {NoFlag, 0x00000000, 0x80000001, 0xffffff82, 0},
612      {NoFlag, 0x80000001, 0x00007fff, 0x0000007f, 0},
613      {NoFlag, 0xffffff80, 0x0000007d, 0x7ffffffe, 0},
614      {NoFlag, 0xaaaaaaaa, 0x00000020, 0xffff8002, 0},
615      {NoFlag, 0x33333333, 0x55555555, 0x00000001, 0},
616      {NoFlag, 0x7ffffffe, 0x33333333, 0x00000000, 0},
617      {NoFlag, 0x80000000, 0x7ffffffd, 0x55555555, 0},
618      {NoFlag, 0xcccccccc, 0xffff8001, 0x7ffffffe, 0},
619      {NoFlag, 0x00000020, 0xffffff83, 0xffff8003, 0},
620      {NoFlag, 0x00007fff, 0xffffffe0, 0xffffff81, 0},
621      {NoFlag, 0xffff8000, 0xffff8001, 0x0000007e, 0},
622      {NoFlag, 0x33333333, 0x0000007e, 0x00000020, 0},
623      {NoFlag, 0x0000007f, 0xfffffffd, 0xaaaaaaaa, 0},
624      {NoFlag, 0xffffff83, 0xffffff82, 0x7ffffffd, 0},
625      {NoFlag, 0x0000007e, 0xcccccccc, 0x7fffffff, 0},
626      {NoFlag, 0xffff8001, 0x80000001, 0xffffffff, 0},
627      {NoFlag, 0xffffff81, 0x00000020, 0x7ffffffe, 0},
628      {NoFlag, 0xffffff83, 0xffffff81, 0xffffffe0, 0},
629      {NoFlag, 0xffffffe0, 0xffffff81, 0xfffffffd, 0},
630      {NoFlag, 0x80000001, 0xffffffff, 0xffffffff, 0},
631      {NoFlag, 0x7ffffffe, 0xffff8000, 0xcccccccc, 0},
632      {NoFlag, 0xffffff80, 0x00007ffe, 0xffffff82, 0},
633      {NoFlag, 0x0000007e, 0x0000007d, 0xffff8003, 0},
634      {NoFlag, 0xffff8002, 0xffffff81, 0x0000007e, 0},
635      {NoFlag, 0x00007fff, 0x7ffffffd, 0xfffffffe, 0},
636      {NoFlag, 0x00007ffe, 0x80000001, 0xffffff81, 0},
637      {NoFlag, 0xffffff81, 0x00007ffd, 0xfffffffd, 0},
638      {NoFlag, 0x00000020, 0x7fffffff, 0xffff8003, 0},
639      {NoFlag, 0x0000007e, 0x0000007d, 0x33333333, 0},
640      {NoFlag, 0xcccccccc, 0xffff8000, 0x00007ffe, 0},
641      {NoFlag, 0x00007fff, 0xffff8000, 0x00000020, 0},
642      {NoFlag, 0x00007ffd, 0x00007fff, 0xffffffe0, 0},
643      {NoFlag, 0x7ffffffd, 0x00000000, 0x00007ffe, 0},
644      {NoFlag, 0xffffff82, 0x33333333, 0x00000001, 0},
645      {NoFlag, 0x7ffffffe, 0xffffff80, 0x00000020, 0},
646      {NoFlag, 0x00007fff, 0xffffff83, 0x00007ffd, 0},
647      {NoFlag, 0xffff8001, 0xffffffff, 0x80000001, 0},
648      {NoFlag, 0x00000002, 0xffffff81, 0xcccccccc, 0},
649      {NoFlag, 0x55555555, 0x0000007f, 0xffff8001, 0},
650      {NoFlag, 0x80000000, 0x00000020, 0x80000000, 0},
651      {NoFlag, 0xffffff83, 0x00007fff, 0xffffff80, 0},
652      {NoFlag, 0x33333333, 0x7ffffffe, 0x7ffffffd, 0},
653      {NoFlag, 0xffffff80, 0xffffffff, 0x00000001, 0},
654      {NoFlag, 0x00007ffd, 0x7ffffffd, 0xffffff83, 0},
655      {NoFlag, 0x33333333, 0xffff8001, 0xffffffe0, 0},
656      {NoFlag, 0xffff8001, 0xffffff80, 0x00007ffd, 0},
657      {NoFlag, 0xffffffe0, 0x00007fff, 0x00007ffe, 0},
658      {NoFlag, 0x0000007d, 0x00000000, 0xffff8000, 0},
659      {NoFlag, 0x7ffffffe, 0xaaaaaaaa, 0x7ffffffe, 0},
660      {NoFlag, 0x0000007e, 0x00007ffd, 0xffffffe0, 0},
661      {NoFlag, 0xfffffffd, 0xffffffe0, 0xffffff83, 0},
662      {NoFlag, 0x00000001, 0xffffffe0, 0x7ffffffd, 0},
663      {NoFlag, 0xfffffffd, 0xffff8002, 0x80000000, 0},
664      {NoFlag, 0x00000020, 0xffffffff, 0x80000000, 0},
665      {NoFlag, 0x00000001, 0x80000001, 0xffff8003, 0},
666      {NoFlag, 0xffff8003, 0xaaaaaaaa, 0xffffff81, 0},
667      {NoFlag, 0x0000007f, 0xfffffffd, 0xffffffe0, 0},
668      {NoFlag, 0x00007ffe, 0xffffff80, 0x00007ffe, 0},
669      {NoFlag, 0xffff8002, 0xffff8003, 0xffffffff, 0},
670      {NoFlag, 0x7ffffffe, 0xffffff82, 0xffff8000, 0},
671      {NoFlag, 0xffff8000, 0x00000002, 0x80000000, 0},
672      {NoFlag, 0xffffff80, 0xffffff82, 0xffffff81, 0},
673      {NoFlag, 0x00000000, 0xcccccccc, 0x00007ffd, 0},
674      {NoFlag, 0x55555555, 0x00007ffe, 0x7fffffff, 0},
675      {NoFlag, 0x00000002, 0xffffff81, 0xaaaaaaaa, 0},
676      {NoFlag, 0x00007ffd, 0x0000007e, 0x00000002, 0},
677      {NoFlag, 0xffffff83, 0x0000007e, 0xffffff80, 0},
678      {NoFlag, 0xcccccccc, 0x00007ffe, 0xaaaaaaaa, 0},
679      {NoFlag, 0x7ffffffe, 0x55555555, 0xffff8003, 0},
680      {NoFlag, 0xfffffffd, 0x00000001, 0xffffff80, 0},
681      {NoFlag, 0x00007ffd, 0x55555555, 0x80000001, 0},
682      {NoFlag, 0x0000007f, 0x00000000, 0x0000007e, 0},
683      {NoFlag, 0x7fffffff, 0xaaaaaaaa, 0x00000000, 0},
684      {NoFlag, 0x7ffffffd, 0xffffff81, 0xcccccccc, 0},
685      {NoFlag, 0xffffffe0, 0xcccccccc, 0xfffffffd, 0},
686      {NoFlag, 0x00000002, 0xffff8000, 0x7ffffffd, 0},
687      {NoFlag, 0xffffffe0, 0xffff8000, 0x80000001, 0},
688      {NoFlag, 0x7ffffffd, 0xffff8003, 0xffff8001, 0},
689      {NoFlag, 0x33333333, 0x00007ffd, 0x80000000, 0},
690      {NoFlag, 0x7ffffffd, 0x00007fff, 0xcccccccc, 0},
691      {NoFlag, 0xffffffff, 0xffffff80, 0x00007ffe, 0},
692      {NoFlag, 0xffffff83, 0x7ffffffd, 0xaaaaaaaa, 0},
693      {NoFlag, 0xfffffffd, 0xffff8003, 0x0000007f, 0},
694      {NoFlag, 0xfffffffe, 0xfffffffe, 0xfffffffd, 0},
695      {NoFlag, 0x00007fff, 0xfffffffe, 0x55555555, 0},
696      {NoFlag, 0x7ffffffd, 0xfffffffe, 0xfffffffe, 0},
697      {NoFlag, 0xfffffffe, 0xffffffff, 0x00007fff, 0},
698      {NoFlag, 0x7ffffffd, 0x0000007e, 0x00007ffd, 0},
699      {NoFlag, 0x7ffffffd, 0xffffffe0, 0x00000002, 0},
700      {NoFlag, 0xffffffff, 0x00007ffd, 0xffffff81, 0},
701      {NoFlag, 0xffff8001, 0x00000020, 0xfffffffd, 0},
702      {NoFlag, 0x00007fff, 0x0000007d, 0xffffff83, 0},
703      {NoFlag, 0x00000002, 0x55555555, 0x7ffffffe, 0},
704      {NoFlag, 0x00007fff, 0x00007ffe, 0x00000002, 0},
705      {NoFlag, 0x80000001, 0x7fffffff, 0x00007ffd, 0},
706      {NoFlag, 0x0000007f, 0xffffffff, 0x00000001, 0},
707      {NoFlag, 0xffff8001, 0x33333333, 0xffffff83, 0},
708      {NoFlag, 0x00007fff, 0xcccccccc, 0x33333333, 0},
709      {NoFlag, 0x33333333, 0xffffff80, 0x00000001, 0},
710      {NoFlag, 0x00007fff, 0xcccccccc, 0x00007ffd, 0},
711      {NoFlag, 0xffff8002, 0xfffffffd, 0x7ffffffe, 0},
712      {NoFlag, 0x00007ffe, 0x7ffffffe, 0xffffff83, 0},
713      {NoFlag, 0xffffffe0, 0x0000007f, 0xffff8001, 0},
714      {NoFlag, 0x80000000, 0x00007fff, 0xffffff80, 0},
715      {NoFlag, 0x7fffffff, 0x00007fff, 0x7ffffffe, 0},
716      {NoFlag, 0xffff8002, 0x55555555, 0xffff8001, 0},
717      {NoFlag, 0xffffff80, 0x00000000, 0xffffff80, 0},
718      {NoFlag, 0x00007ffd, 0x00007fff, 0x00000002, 0},
719      {NoFlag, 0x00000000, 0x55555555, 0xffff8003, 0},
720      {NoFlag, 0x0000007f, 0xffff8003, 0x00000020, 0},
721      {NoFlag, 0x00000000, 0xffff8002, 0x7fffffff, 0},
722      {NoFlag, 0x00007fff, 0x55555555, 0x00000000, 0},
723      {NoFlag, 0x7fffffff, 0x00007ffe, 0xffffff81, 0},
724      {NoFlag, 0x0000007e, 0x80000001, 0x00007ffe, 0},
725      {NoFlag, 0x7ffffffd, 0xaaaaaaaa, 0x00000020, 0},
726      {NoFlag, 0xfffffffd, 0xfffffffe, 0x00000002, 0},
727      {NoFlag, 0xffffff80, 0xffff8000, 0xffff8002, 0},
728      {NoFlag, 0x0000007d, 0x00007fff, 0xaaaaaaaa, 0},
729      {NoFlag, 0xfffffffd, 0xffffff80, 0x00007ffd, 0},
730      {NoFlag, 0xffffff82, 0x80000000, 0xffffff80, 0},
731      {NoFlag, 0xffffffe0, 0x55555555, 0xfffffffd, 0},
732      {NoFlag, 0xffffffff, 0xffffffff, 0x00007ffd, 0},
733      {NoFlag, 0x0000007e, 0xfffffffe, 0xffffff80, 0},
734      {NoFlag, 0xffff8000, 0xffffff82, 0xffff8002, 0},
735      {NoFlag, 0xaaaaaaaa, 0x7ffffffe, 0xffff8000, 0},
736      {NoFlag, 0x55555555, 0xffff8003, 0xffffff80, 0},
737      {NoFlag, 0x7ffffffe, 0x00000020, 0xffffffe0, 0},
738      {NoFlag, 0x00000001, 0xffff8001, 0xffffffe0, 0},
739      {NoFlag, 0xcccccccc, 0xffff8000, 0xffff8002, 0},
740      {NoFlag, 0x80000000, 0x00000002, 0x7ffffffe, 0},
741      {NoFlag, 0x00000002, 0x0000007f, 0xffffff81, 0},
742      {NoFlag, 0xffffffff, 0x00000001, 0x7fffffff, 0},
743      {NoFlag, 0xffffff83, 0x00000000, 0x33333333, 0},
744      {NoFlag, 0xffff8000, 0xffffff83, 0xcccccccc, 0},
745      {NoFlag, 0x80000000, 0x00000020, 0x00007ffd, 0},
746      {NoFlag, 0xffffff81, 0xcccccccc, 0x00000000, 0},
747      {NoFlag, 0xffffffff, 0xffff8000, 0x00007fff, 0},
748      {NoFlag, 0xffff8003, 0xcccccccc, 0x00007ffe, 0},
749      {NoFlag, 0xffffffff, 0xfffffffd, 0x7ffffffe, 0},
750      {NoFlag, 0xffff8003, 0xaaaaaaaa, 0x55555555, 0},
751      {NoFlag, 0x00000000, 0xaaaaaaaa, 0xffffff81, 0},
752      {NoFlag, 0x0000007f, 0xfffffffe, 0xffff8000, 0},
753      {NoFlag, 0x00000001, 0xffffffe0, 0xfffffffd, 0},
754      {NoFlag, 0x33333333, 0x33333333, 0xfffffffd, 0},
755      {NoFlag, 0xffffff82, 0xffff8002, 0x80000001, 0},
756      {NoFlag, 0x55555555, 0xffffff83, 0xffffff83, 0},
757      {NoFlag, 0xffffff83, 0xffff8002, 0x00000020, 0},
758      {NoFlag, 0x0000007d, 0x7fffffff, 0x0000007f, 0},
759      {NoFlag, 0x00000000, 0xcccccccc, 0xffff8000, 0},
760      {NoFlag, 0x00000002, 0x7ffffffe, 0x00007fff, 0},
761      {NoFlag, 0xffffff82, 0x7ffffffd, 0x7ffffffd, 0},
762      {NoFlag, 0xaaaaaaaa, 0xfffffffd, 0xffff8002, 0},
763      {NoFlag, 0xfffffffd, 0x00000002, 0x7fffffff, 0},
764      {NoFlag, 0xfffffffe, 0xfffffffe, 0x00000020, 0},
765      {NoFlag, 0x80000001, 0x0000007e, 0x00007ffe, 0},
766      {NoFlag, 0x00007ffd, 0x00007ffd, 0xfffffffd, 0},
767      {NoFlag, 0xffff8000, 0x0000007f, 0x00000002, 0},
768      {NoFlag, 0x7ffffffd, 0x80000000, 0x7ffffffd, 0},
769      {NoFlag, 0x0000007d, 0x00007fff, 0x80000001, 0},
770      {NoFlag, 0xffffffff, 0x80000000, 0xaaaaaaaa, 0},
771      {NoFlag, 0x00000000, 0xaaaaaaaa, 0xffff8001, 0},
772      {NoFlag, 0xaaaaaaaa, 0xffffffe0, 0xffff8003, 0},
773      {NoFlag, 0xffffff82, 0xffffffff, 0x00007ffd, 0},
774      {NoFlag, 0x00000001, 0xffffff81, 0x00000001, 0},
775      {NoFlag, 0x7fffffff, 0xaaaaaaaa, 0x80000001, 0},
776      {NoFlag, 0x7fffffff, 0xffff8000, 0xffff8000, 0},
777      {NoFlag, 0xaaaaaaaa, 0x00007ffd, 0xaaaaaaaa, 0},
778      {NoFlag, 0x0000007f, 0x7ffffffe, 0x80000000, 0},
779      {NoFlag, 0x00007ffd, 0x00007ffe, 0xffffff81, 0},
780      {NoFlag, 0x0000007d, 0x0000007d, 0xffff8002, 0},
781      {NoFlag, 0x80000001, 0x00000002, 0xffffff81, 0},
782      {NoFlag, 0xffff8000, 0xfffffffd, 0x7ffffffd, 0},
783      {NoFlag, 0xfffffffe, 0x00000020, 0xffffff80, 0},
784      {NoFlag, 0x00000020, 0x7fffffff, 0xffffffe0, 0},
785      {NoFlag, 0xffff8002, 0xffff8002, 0x0000007f, 0},
786      {NoFlag, 0xffff8003, 0x7fffffff, 0xffff8002, 0},
787      {NoFlag, 0x00000020, 0xfffffffd, 0x00000020, 0},
788      {NoFlag, 0x7ffffffd, 0xffffffe0, 0x0000007e, 0},
789      {NoFlag, 0x00000020, 0x00000020, 0x7ffffffe, 0},
790      {NoFlag, 0xfffffffe, 0x0000007f, 0xffff8000, 0},
791      {NoFlag, 0x80000001, 0x80000001, 0x0000007d, 0},
792      {NoFlag, 0x55555555, 0x0000007f, 0x00007ffd, 0},
793      {NoFlag, 0x55555555, 0xffffffe0, 0xffffff82, 0},
794      {NoFlag, 0xffff8001, 0x0000007e, 0xffff8002, 0},
795      {NoFlag, 0xffffffe0, 0x55555555, 0x0000007f, 0},
796      {NoFlag, 0xffff8000, 0x7fffffff, 0x7ffffffe, 0},
797      {NoFlag, 0xffffffff, 0xfffffffe, 0xffffff80, 0},
798      {NoFlag, 0xffff8001, 0xffff8002, 0x33333333, 0},
799      {NoFlag, 0x7ffffffd, 0xfffffffd, 0xaaaaaaaa, 0},
800      {NoFlag, 0xaaaaaaaa, 0xfffffffd, 0x00000020, 0},
801      {NoFlag, 0x0000007f, 0x00007ffe, 0x55555555, 0},
802      {NoFlag, 0x00000020, 0x00000020, 0x00000002, 0},
803      {NoFlag, 0x80000001, 0xffff8002, 0xfffffffe, 0},
804      {NoFlag, 0x7fffffff, 0x80000001, 0xffff8002, 0},
805      {NoFlag, 0x00000020, 0x0000007e, 0x33333333, 0}};
806 
807 static const Inputs kShiftTypes[] =
808     {{NoFlag, 0xabababab, 0xabababab, 0x00000000, 0},
809      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 1},
810      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 2},
811      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 3},
812      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 4},
813      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 5},
814      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 6},
815      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 7},
816      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 8},
817      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 9},
818      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 10},
819      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 11},
820      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 12},
821      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 13},
822      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 14},
823      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 15},
824      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 16},
825      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 17},
826      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 18},
827      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 19},
828      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 20},
829      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 21},
830      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 22},
831      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 23},
832      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 24},
833      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 25},
834      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 26},
835      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 27},
836      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 28},
837      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 29},
838      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 30},
839      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 31},
840      {NoFlag, 0xabababab, 0xabababab, 0x00000000, 32},
841      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 0},
842      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 1},
843      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 2},
844      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 3},
845      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 4},
846      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 5},
847      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 6},
848      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 7},
849      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 8},
850      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 9},
851      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 10},
852      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 11},
853      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 12},
854      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 13},
855      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 14},
856      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 15},
857      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 16},
858      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 17},
859      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 18},
860      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 19},
861      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 20},
862      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 21},
863      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 22},
864      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 23},
865      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 24},
866      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 25},
867      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 26},
868      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 27},
869      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 28},
870      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 29},
871      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 30},
872      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 31},
873      {NoFlag, 0xabababab, 0xabababab, 0x00000001, 32},
874      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 0},
875      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 1},
876      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 2},
877      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 3},
878      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 4},
879      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 5},
880      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 6},
881      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 7},
882      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 8},
883      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 9},
884      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 10},
885      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 11},
886      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 12},
887      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 13},
888      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 14},
889      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 15},
890      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 16},
891      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 17},
892      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 18},
893      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 19},
894      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 20},
895      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 21},
896      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 22},
897      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 23},
898      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 24},
899      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 25},
900      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 26},
901      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 27},
902      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 28},
903      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 29},
904      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 30},
905      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 31},
906      {NoFlag, 0xabababab, 0xabababab, 0x00000002, 32},
907      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 0},
908      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 1},
909      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 2},
910      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 3},
911      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 4},
912      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 5},
913      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 6},
914      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 7},
915      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 8},
916      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 9},
917      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 10},
918      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 11},
919      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 12},
920      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 13},
921      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 14},
922      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 15},
923      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 16},
924      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 17},
925      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 18},
926      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 19},
927      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 20},
928      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 21},
929      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 22},
930      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 23},
931      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 24},
932      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 25},
933      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 26},
934      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 27},
935      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 28},
936      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 29},
937      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 30},
938      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 31},
939      {NoFlag, 0xabababab, 0xabababab, 0x00000020, 32},
940      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 0},
941      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 1},
942      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 2},
943      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 3},
944      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 4},
945      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 5},
946      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 6},
947      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 7},
948      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 8},
949      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 9},
950      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 10},
951      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 11},
952      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 12},
953      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 13},
954      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 14},
955      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 15},
956      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 16},
957      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 17},
958      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 18},
959      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 19},
960      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 20},
961      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 21},
962      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 22},
963      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 23},
964      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 24},
965      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 25},
966      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 26},
967      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 27},
968      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 28},
969      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 29},
970      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 30},
971      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 31},
972      {NoFlag, 0xabababab, 0xabababab, 0x0000007d, 32},
973      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 0},
974      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 1},
975      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 2},
976      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 3},
977      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 4},
978      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 5},
979      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 6},
980      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 7},
981      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 8},
982      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 9},
983      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 10},
984      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 11},
985      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 12},
986      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 13},
987      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 14},
988      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 15},
989      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 16},
990      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 17},
991      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 18},
992      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 19},
993      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 20},
994      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 21},
995      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 22},
996      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 23},
997      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 24},
998      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 25},
999      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 26},
1000      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 27},
1001      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 28},
1002      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 29},
1003      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 30},
1004      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 31},
1005      {NoFlag, 0xabababab, 0xabababab, 0x0000007e, 32},
1006      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 0},
1007      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 1},
1008      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 2},
1009      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 3},
1010      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 4},
1011      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 5},
1012      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 6},
1013      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 7},
1014      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 8},
1015      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 9},
1016      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 10},
1017      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 11},
1018      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 12},
1019      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 13},
1020      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 14},
1021      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 15},
1022      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 16},
1023      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 17},
1024      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 18},
1025      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 19},
1026      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 20},
1027      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 21},
1028      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 22},
1029      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 23},
1030      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 24},
1031      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 25},
1032      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 26},
1033      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 27},
1034      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 28},
1035      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 29},
1036      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 30},
1037      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 31},
1038      {NoFlag, 0xabababab, 0xabababab, 0x0000007f, 32},
1039      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 0},
1040      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 1},
1041      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 2},
1042      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 3},
1043      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 4},
1044      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 5},
1045      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 6},
1046      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 7},
1047      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 8},
1048      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 9},
1049      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 10},
1050      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 11},
1051      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 12},
1052      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 13},
1053      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 14},
1054      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 15},
1055      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 16},
1056      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 17},
1057      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 18},
1058      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 19},
1059      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 20},
1060      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 21},
1061      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 22},
1062      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 23},
1063      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 24},
1064      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 25},
1065      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 26},
1066      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 27},
1067      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 28},
1068      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 29},
1069      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 30},
1070      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 31},
1071      {NoFlag, 0xabababab, 0xabababab, 0x00007ffd, 32},
1072      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 0},
1073      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 1},
1074      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 2},
1075      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 3},
1076      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 4},
1077      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 5},
1078      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 6},
1079      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 7},
1080      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 8},
1081      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 9},
1082      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 10},
1083      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 11},
1084      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 12},
1085      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 13},
1086      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 14},
1087      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 15},
1088      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 16},
1089      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 17},
1090      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 18},
1091      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 19},
1092      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 20},
1093      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 21},
1094      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 22},
1095      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 23},
1096      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 24},
1097      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 25},
1098      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 26},
1099      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 27},
1100      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 28},
1101      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 29},
1102      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 30},
1103      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 31},
1104      {NoFlag, 0xabababab, 0xabababab, 0x00007ffe, 32},
1105      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 0},
1106      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 1},
1107      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 2},
1108      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 3},
1109      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 4},
1110      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 5},
1111      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 6},
1112      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 7},
1113      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 8},
1114      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 9},
1115      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 10},
1116      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 11},
1117      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 12},
1118      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 13},
1119      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 14},
1120      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 15},
1121      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 16},
1122      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 17},
1123      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 18},
1124      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 19},
1125      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 20},
1126      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 21},
1127      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 22},
1128      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 23},
1129      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 24},
1130      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 25},
1131      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 26},
1132      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 27},
1133      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 28},
1134      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 29},
1135      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 30},
1136      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 31},
1137      {NoFlag, 0xabababab, 0xabababab, 0x00007fff, 32},
1138      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 0},
1139      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 1},
1140      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 2},
1141      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 3},
1142      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 4},
1143      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 5},
1144      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 6},
1145      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 7},
1146      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 8},
1147      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 9},
1148      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 10},
1149      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 11},
1150      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 12},
1151      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 13},
1152      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 14},
1153      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 15},
1154      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 16},
1155      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 17},
1156      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 18},
1157      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 19},
1158      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 20},
1159      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 21},
1160      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 22},
1161      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 23},
1162      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 24},
1163      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 25},
1164      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 26},
1165      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 27},
1166      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 28},
1167      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 29},
1168      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 30},
1169      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 31},
1170      {NoFlag, 0xabababab, 0xabababab, 0x33333333, 32},
1171      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 0},
1172      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 1},
1173      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 2},
1174      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 3},
1175      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 4},
1176      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 5},
1177      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 6},
1178      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 7},
1179      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 8},
1180      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 9},
1181      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 10},
1182      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 11},
1183      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 12},
1184      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 13},
1185      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 14},
1186      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 15},
1187      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 16},
1188      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 17},
1189      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 18},
1190      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 19},
1191      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 20},
1192      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 21},
1193      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 22},
1194      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 23},
1195      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 24},
1196      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 25},
1197      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 26},
1198      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 27},
1199      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 28},
1200      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 29},
1201      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 30},
1202      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 31},
1203      {NoFlag, 0xabababab, 0xabababab, 0x55555555, 32},
1204      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 0},
1205      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 1},
1206      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 2},
1207      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 3},
1208      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 4},
1209      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 5},
1210      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 6},
1211      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 7},
1212      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 8},
1213      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 9},
1214      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 10},
1215      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 11},
1216      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 12},
1217      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 13},
1218      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 14},
1219      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 15},
1220      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 16},
1221      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 17},
1222      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 18},
1223      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 19},
1224      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 20},
1225      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 21},
1226      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 22},
1227      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 23},
1228      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 24},
1229      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 25},
1230      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 26},
1231      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 27},
1232      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 28},
1233      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 29},
1234      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 30},
1235      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 31},
1236      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffd, 32},
1237      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 0},
1238      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 1},
1239      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 2},
1240      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 3},
1241      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 4},
1242      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 5},
1243      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 6},
1244      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 7},
1245      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 8},
1246      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 9},
1247      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 10},
1248      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 11},
1249      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 12},
1250      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 13},
1251      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 14},
1252      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 15},
1253      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 16},
1254      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 17},
1255      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 18},
1256      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 19},
1257      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 20},
1258      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 21},
1259      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 22},
1260      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 23},
1261      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 24},
1262      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 25},
1263      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 26},
1264      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 27},
1265      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 28},
1266      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 29},
1267      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 30},
1268      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 31},
1269      {NoFlag, 0xabababab, 0xabababab, 0x7ffffffe, 32},
1270      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 0},
1271      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 1},
1272      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 2},
1273      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 3},
1274      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 4},
1275      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 5},
1276      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 6},
1277      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 7},
1278      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 8},
1279      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 9},
1280      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 10},
1281      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 11},
1282      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 12},
1283      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 13},
1284      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 14},
1285      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 15},
1286      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 16},
1287      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 17},
1288      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 18},
1289      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 19},
1290      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 20},
1291      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 21},
1292      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 22},
1293      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 23},
1294      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 24},
1295      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 25},
1296      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 26},
1297      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 27},
1298      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 28},
1299      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 29},
1300      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 30},
1301      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 31},
1302      {NoFlag, 0xabababab, 0xabababab, 0x7fffffff, 32},
1303      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 0},
1304      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 1},
1305      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 2},
1306      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 3},
1307      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 4},
1308      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 5},
1309      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 6},
1310      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 7},
1311      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 8},
1312      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 9},
1313      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 10},
1314      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 11},
1315      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 12},
1316      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 13},
1317      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 14},
1318      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 15},
1319      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 16},
1320      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 17},
1321      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 18},
1322      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 19},
1323      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 20},
1324      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 21},
1325      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 22},
1326      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 23},
1327      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 24},
1328      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 25},
1329      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 26},
1330      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 27},
1331      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 28},
1332      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 29},
1333      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 30},
1334      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 31},
1335      {NoFlag, 0xabababab, 0xabababab, 0x80000000, 32},
1336      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 0},
1337      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 1},
1338      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 2},
1339      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 3},
1340      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 4},
1341      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 5},
1342      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 6},
1343      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 7},
1344      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 8},
1345      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 9},
1346      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 10},
1347      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 11},
1348      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 12},
1349      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 13},
1350      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 14},
1351      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 15},
1352      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 16},
1353      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 17},
1354      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 18},
1355      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 19},
1356      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 20},
1357      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 21},
1358      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 22},
1359      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 23},
1360      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 24},
1361      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 25},
1362      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 26},
1363      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 27},
1364      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 28},
1365      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 29},
1366      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 30},
1367      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 31},
1368      {NoFlag, 0xabababab, 0xabababab, 0x80000001, 32},
1369      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 0},
1370      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 1},
1371      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 2},
1372      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 3},
1373      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 4},
1374      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 5},
1375      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 6},
1376      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 7},
1377      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 8},
1378      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 9},
1379      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 10},
1380      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 11},
1381      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 12},
1382      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 13},
1383      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 14},
1384      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 15},
1385      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 16},
1386      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 17},
1387      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 18},
1388      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 19},
1389      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 20},
1390      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 21},
1391      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 22},
1392      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 23},
1393      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 24},
1394      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 25},
1395      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 26},
1396      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 27},
1397      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 28},
1398      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 29},
1399      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 30},
1400      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 31},
1401      {NoFlag, 0xabababab, 0xabababab, 0xaaaaaaaa, 32},
1402      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 0},
1403      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 1},
1404      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 2},
1405      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 3},
1406      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 4},
1407      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 5},
1408      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 6},
1409      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 7},
1410      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 8},
1411      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 9},
1412      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 10},
1413      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 11},
1414      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 12},
1415      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 13},
1416      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 14},
1417      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 15},
1418      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 16},
1419      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 17},
1420      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 18},
1421      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 19},
1422      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 20},
1423      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 21},
1424      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 22},
1425      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 23},
1426      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 24},
1427      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 25},
1428      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 26},
1429      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 27},
1430      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 28},
1431      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 29},
1432      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 30},
1433      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 31},
1434      {NoFlag, 0xabababab, 0xabababab, 0xcccccccc, 32},
1435      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 0},
1436      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 1},
1437      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 2},
1438      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 3},
1439      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 4},
1440      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 5},
1441      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 6},
1442      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 7},
1443      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 8},
1444      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 9},
1445      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 10},
1446      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 11},
1447      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 12},
1448      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 13},
1449      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 14},
1450      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 15},
1451      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 16},
1452      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 17},
1453      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 18},
1454      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 19},
1455      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 20},
1456      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 21},
1457      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 22},
1458      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 23},
1459      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 24},
1460      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 25},
1461      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 26},
1462      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 27},
1463      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 28},
1464      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 29},
1465      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 30},
1466      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 31},
1467      {NoFlag, 0xabababab, 0xabababab, 0xffff8000, 32},
1468      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 0},
1469      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 1},
1470      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 2},
1471      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 3},
1472      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 4},
1473      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 5},
1474      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 6},
1475      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 7},
1476      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 8},
1477      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 9},
1478      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 10},
1479      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 11},
1480      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 12},
1481      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 13},
1482      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 14},
1483      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 15},
1484      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 16},
1485      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 17},
1486      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 18},
1487      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 19},
1488      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 20},
1489      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 21},
1490      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 22},
1491      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 23},
1492      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 24},
1493      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 25},
1494      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 26},
1495      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 27},
1496      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 28},
1497      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 29},
1498      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 30},
1499      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 31},
1500      {NoFlag, 0xabababab, 0xabababab, 0xffff8001, 32},
1501      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 0},
1502      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 1},
1503      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 2},
1504      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 3},
1505      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 4},
1506      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 5},
1507      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 6},
1508      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 7},
1509      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 8},
1510      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 9},
1511      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 10},
1512      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 11},
1513      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 12},
1514      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 13},
1515      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 14},
1516      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 15},
1517      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 16},
1518      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 17},
1519      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 18},
1520      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 19},
1521      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 20},
1522      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 21},
1523      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 22},
1524      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 23},
1525      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 24},
1526      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 25},
1527      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 26},
1528      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 27},
1529      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 28},
1530      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 29},
1531      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 30},
1532      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 31},
1533      {NoFlag, 0xabababab, 0xabababab, 0xffff8002, 32},
1534      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 0},
1535      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 1},
1536      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 2},
1537      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 3},
1538      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 4},
1539      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 5},
1540      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 6},
1541      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 7},
1542      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 8},
1543      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 9},
1544      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 10},
1545      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 11},
1546      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 12},
1547      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 13},
1548      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 14},
1549      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 15},
1550      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 16},
1551      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 17},
1552      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 18},
1553      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 19},
1554      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 20},
1555      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 21},
1556      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 22},
1557      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 23},
1558      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 24},
1559      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 25},
1560      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 26},
1561      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 27},
1562      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 28},
1563      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 29},
1564      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 30},
1565      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 31},
1566      {NoFlag, 0xabababab, 0xabababab, 0xffff8003, 32},
1567      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 0},
1568      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 1},
1569      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 2},
1570      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 3},
1571      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 4},
1572      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 5},
1573      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 6},
1574      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 7},
1575      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 8},
1576      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 9},
1577      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 10},
1578      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 11},
1579      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 12},
1580      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 13},
1581      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 14},
1582      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 15},
1583      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 16},
1584      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 17},
1585      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 18},
1586      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 19},
1587      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 20},
1588      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 21},
1589      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 22},
1590      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 23},
1591      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 24},
1592      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 25},
1593      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 26},
1594      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 27},
1595      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 28},
1596      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 29},
1597      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 30},
1598      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 31},
1599      {NoFlag, 0xabababab, 0xabababab, 0xffffff80, 32},
1600      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 0},
1601      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 1},
1602      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 2},
1603      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 3},
1604      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 4},
1605      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 5},
1606      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 6},
1607      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 7},
1608      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 8},
1609      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 9},
1610      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 10},
1611      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 11},
1612      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 12},
1613      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 13},
1614      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 14},
1615      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 15},
1616      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 16},
1617      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 17},
1618      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 18},
1619      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 19},
1620      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 20},
1621      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 21},
1622      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 22},
1623      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 23},
1624      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 24},
1625      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 25},
1626      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 26},
1627      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 27},
1628      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 28},
1629      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 29},
1630      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 30},
1631      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 31},
1632      {NoFlag, 0xabababab, 0xabababab, 0xffffff81, 32},
1633      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 0},
1634      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 1},
1635      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 2},
1636      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 3},
1637      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 4},
1638      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 5},
1639      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 6},
1640      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 7},
1641      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 8},
1642      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 9},
1643      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 10},
1644      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 11},
1645      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 12},
1646      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 13},
1647      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 14},
1648      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 15},
1649      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 16},
1650      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 17},
1651      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 18},
1652      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 19},
1653      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 20},
1654      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 21},
1655      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 22},
1656      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 23},
1657      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 24},
1658      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 25},
1659      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 26},
1660      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 27},
1661      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 28},
1662      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 29},
1663      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 30},
1664      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 31},
1665      {NoFlag, 0xabababab, 0xabababab, 0xffffff82, 32},
1666      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 0},
1667      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 1},
1668      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 2},
1669      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 3},
1670      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 4},
1671      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 5},
1672      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 6},
1673      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 7},
1674      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 8},
1675      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 9},
1676      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 10},
1677      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 11},
1678      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 12},
1679      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 13},
1680      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 14},
1681      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 15},
1682      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 16},
1683      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 17},
1684      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 18},
1685      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 19},
1686      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 20},
1687      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 21},
1688      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 22},
1689      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 23},
1690      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 24},
1691      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 25},
1692      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 26},
1693      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 27},
1694      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 28},
1695      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 29},
1696      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 30},
1697      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 31},
1698      {NoFlag, 0xabababab, 0xabababab, 0xffffff83, 32},
1699      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 0},
1700      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 1},
1701      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 2},
1702      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 3},
1703      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 4},
1704      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 5},
1705      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 6},
1706      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 7},
1707      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 8},
1708      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 9},
1709      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 10},
1710      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 11},
1711      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 12},
1712      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 13},
1713      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 14},
1714      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 15},
1715      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 16},
1716      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 17},
1717      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 18},
1718      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 19},
1719      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 20},
1720      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 21},
1721      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 22},
1722      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 23},
1723      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 24},
1724      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 25},
1725      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 26},
1726      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 27},
1727      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 28},
1728      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 29},
1729      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 30},
1730      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 31},
1731      {NoFlag, 0xabababab, 0xabababab, 0xffffffe0, 32},
1732      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 0},
1733      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 1},
1734      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 2},
1735      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 3},
1736      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 4},
1737      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 5},
1738      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 6},
1739      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 7},
1740      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 8},
1741      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 9},
1742      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 10},
1743      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 11},
1744      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 12},
1745      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 13},
1746      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 14},
1747      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 15},
1748      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 16},
1749      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 17},
1750      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 18},
1751      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 19},
1752      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 20},
1753      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 21},
1754      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 22},
1755      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 23},
1756      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 24},
1757      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 25},
1758      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 26},
1759      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 27},
1760      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 28},
1761      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 29},
1762      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 30},
1763      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 31},
1764      {NoFlag, 0xabababab, 0xabababab, 0xfffffffd, 32},
1765      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 0},
1766      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 1},
1767      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 2},
1768      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 3},
1769      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 4},
1770      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 5},
1771      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 6},
1772      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 7},
1773      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 8},
1774      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 9},
1775      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 10},
1776      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 11},
1777      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 12},
1778      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 13},
1779      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 14},
1780      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 15},
1781      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 16},
1782      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 17},
1783      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 18},
1784      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 19},
1785      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 20},
1786      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 21},
1787      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 22},
1788      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 23},
1789      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 24},
1790      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 25},
1791      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 26},
1792      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 27},
1793      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 28},
1794      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 29},
1795      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 30},
1796      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 31},
1797      {NoFlag, 0xabababab, 0xabababab, 0xfffffffe, 32},
1798      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 0},
1799      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 1},
1800      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 2},
1801      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 3},
1802      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 4},
1803      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 5},
1804      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 6},
1805      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 7},
1806      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 8},
1807      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 9},
1808      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 10},
1809      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 11},
1810      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 12},
1811      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 13},
1812      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 14},
1813      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 15},
1814      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 16},
1815      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 17},
1816      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 18},
1817      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 19},
1818      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 20},
1819      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 21},
1820      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 22},
1821      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 23},
1822      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 24},
1823      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 25},
1824      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 26},
1825      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 27},
1826      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 28},
1827      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 29},
1828      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 30},
1829      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 31},
1830      {NoFlag, 0xabababab, 0xabababab, 0xffffffff, 32}};
1831 
1832 
1833 // A loop will be generated for each element of this array.
1834 const TestLoopData kTests[] = {{{eq, r0, r0, r0, LSL, r0},
1835                                 "eq r0 r0 r0 LSL r0",
1836                                 "Condition_eq_r0_r0_r0_LSL_r0",
1837                                 ARRAY_SIZE(kCondition),
1838                                 kCondition},
1839                                {{ne, r0, r0, r0, LSL, r0},
1840                                 "ne r0 r0 r0 LSL r0",
1841                                 "Condition_ne_r0_r0_r0_LSL_r0",
1842                                 ARRAY_SIZE(kCondition),
1843                                 kCondition},
1844                                {{cs, r0, r0, r0, LSL, r0},
1845                                 "cs r0 r0 r0 LSL r0",
1846                                 "Condition_cs_r0_r0_r0_LSL_r0",
1847                                 ARRAY_SIZE(kCondition),
1848                                 kCondition},
1849                                {{cc, r0, r0, r0, LSL, r0},
1850                                 "cc r0 r0 r0 LSL r0",
1851                                 "Condition_cc_r0_r0_r0_LSL_r0",
1852                                 ARRAY_SIZE(kCondition),
1853                                 kCondition},
1854                                {{mi, r0, r0, r0, LSL, r0},
1855                                 "mi r0 r0 r0 LSL r0",
1856                                 "Condition_mi_r0_r0_r0_LSL_r0",
1857                                 ARRAY_SIZE(kCondition),
1858                                 kCondition},
1859                                {{pl, r0, r0, r0, LSL, r0},
1860                                 "pl r0 r0 r0 LSL r0",
1861                                 "Condition_pl_r0_r0_r0_LSL_r0",
1862                                 ARRAY_SIZE(kCondition),
1863                                 kCondition},
1864                                {{vs, r0, r0, r0, LSL, r0},
1865                                 "vs r0 r0 r0 LSL r0",
1866                                 "Condition_vs_r0_r0_r0_LSL_r0",
1867                                 ARRAY_SIZE(kCondition),
1868                                 kCondition},
1869                                {{vc, r0, r0, r0, LSL, r0},
1870                                 "vc r0 r0 r0 LSL r0",
1871                                 "Condition_vc_r0_r0_r0_LSL_r0",
1872                                 ARRAY_SIZE(kCondition),
1873                                 kCondition},
1874                                {{hi, r0, r0, r0, LSL, r0},
1875                                 "hi r0 r0 r0 LSL r0",
1876                                 "Condition_hi_r0_r0_r0_LSL_r0",
1877                                 ARRAY_SIZE(kCondition),
1878                                 kCondition},
1879                                {{ls, r0, r0, r0, LSL, r0},
1880                                 "ls r0 r0 r0 LSL r0",
1881                                 "Condition_ls_r0_r0_r0_LSL_r0",
1882                                 ARRAY_SIZE(kCondition),
1883                                 kCondition},
1884                                {{ge, r0, r0, r0, LSL, r0},
1885                                 "ge r0 r0 r0 LSL r0",
1886                                 "Condition_ge_r0_r0_r0_LSL_r0",
1887                                 ARRAY_SIZE(kCondition),
1888                                 kCondition},
1889                                {{lt, r0, r0, r0, LSL, r0},
1890                                 "lt r0 r0 r0 LSL r0",
1891                                 "Condition_lt_r0_r0_r0_LSL_r0",
1892                                 ARRAY_SIZE(kCondition),
1893                                 kCondition},
1894                                {{gt, r0, r0, r0, LSL, r0},
1895                                 "gt r0 r0 r0 LSL r0",
1896                                 "Condition_gt_r0_r0_r0_LSL_r0",
1897                                 ARRAY_SIZE(kCondition),
1898                                 kCondition},
1899                                {{le, r0, r0, r0, LSL, r0},
1900                                 "le r0 r0 r0 LSL r0",
1901                                 "Condition_le_r0_r0_r0_LSL_r0",
1902                                 ARRAY_SIZE(kCondition),
1903                                 kCondition},
1904                                {{al, r0, r0, r0, LSL, r0},
1905                                 "al r0 r0 r0 LSL r0",
1906                                 "Condition_al_r0_r0_r0_LSL_r0",
1907                                 ARRAY_SIZE(kCondition),
1908                                 kCondition},
1909                                {{al, r3, r3, r4, LSL, r0},
1910                                 "al r3 r3 r4 LSL r0",
1911                                 "RdIsRn_al_r3_r3_r4_LSL_r0",
1912                                 ARRAY_SIZE(kRdIsRn),
1913                                 kRdIsRn},
1914                                {{al, r2, r2, r12, LSL, r0},
1915                                 "al r2 r2 r12 LSL r0",
1916                                 "RdIsRn_al_r2_r2_r12_LSL_r0",
1917                                 ARRAY_SIZE(kRdIsRn),
1918                                 kRdIsRn},
1919                                {{al, r8, r8, r5, LSL, r0},
1920                                 "al r8 r8 r5 LSL r0",
1921                                 "RdIsRn_al_r8_r8_r5_LSL_r0",
1922                                 ARRAY_SIZE(kRdIsRn),
1923                                 kRdIsRn},
1924                                {{al, r14, r14, r0, LSL, r0},
1925                                 "al r14 r14 r0 LSL r0",
1926                                 "RdIsRn_al_r14_r14_r0_LSL_r0",
1927                                 ARRAY_SIZE(kRdIsRn),
1928                                 kRdIsRn},
1929                                {{al, r11, r11, r10, LSL, r0},
1930                                 "al r11 r11 r10 LSL r0",
1931                                 "RdIsRn_al_r11_r11_r10_LSL_r0",
1932                                 ARRAY_SIZE(kRdIsRn),
1933                                 kRdIsRn},
1934                                {{al, r12, r12, r10, LSL, r0},
1935                                 "al r12 r12 r10 LSL r0",
1936                                 "RdIsRn_al_r12_r12_r10_LSL_r0",
1937                                 ARRAY_SIZE(kRdIsRn),
1938                                 kRdIsRn},
1939                                {{al, r4, r4, r8, LSL, r0},
1940                                 "al r4 r4 r8 LSL r0",
1941                                 "RdIsRn_al_r4_r4_r8_LSL_r0",
1942                                 ARRAY_SIZE(kRdIsRn),
1943                                 kRdIsRn},
1944                                {{al, r5, r5, r14, LSL, r0},
1945                                 "al r5 r5 r14 LSL r0",
1946                                 "RdIsRn_al_r5_r5_r14_LSL_r0",
1947                                 ARRAY_SIZE(kRdIsRn),
1948                                 kRdIsRn},
1949                                {{al, r0, r0, r6, LSL, r0},
1950                                 "al r0 r0 r6 LSL r0",
1951                                 "RdIsRn_al_r0_r0_r6_LSL_r0",
1952                                 ARRAY_SIZE(kRdIsRn),
1953                                 kRdIsRn},
1954                                {{al, r12, r12, r1, LSL, r0},
1955                                 "al r12 r12 r1 LSL r0",
1956                                 "RdIsRn_al_r12_r12_r1_LSL_r0",
1957                                 ARRAY_SIZE(kRdIsRn),
1958                                 kRdIsRn},
1959                                {{al, r6, r11, r6, LSL, r0},
1960                                 "al r6 r11 r6 LSL r0",
1961                                 "RdIsRm_al_r6_r11_r6_LSL_r0",
1962                                 ARRAY_SIZE(kRdIsRm),
1963                                 kRdIsRm},
1964                                {{al, r11, r9, r11, LSL, r0},
1965                                 "al r11 r9 r11 LSL r0",
1966                                 "RdIsRm_al_r11_r9_r11_LSL_r0",
1967                                 ARRAY_SIZE(kRdIsRm),
1968                                 kRdIsRm},
1969                                {{al, r0, r8, r0, LSL, r0},
1970                                 "al r0 r8 r0 LSL r0",
1971                                 "RdIsRm_al_r0_r8_r0_LSL_r0",
1972                                 ARRAY_SIZE(kRdIsRm),
1973                                 kRdIsRm},
1974                                {{al, r2, r11, r2, LSL, r0},
1975                                 "al r2 r11 r2 LSL r0",
1976                                 "RdIsRm_al_r2_r11_r2_LSL_r0",
1977                                 ARRAY_SIZE(kRdIsRm),
1978                                 kRdIsRm},
1979                                {{al, r9, r4, r9, LSL, r0},
1980                                 "al r9 r4 r9 LSL r0",
1981                                 "RdIsRm_al_r9_r4_r9_LSL_r0",
1982                                 ARRAY_SIZE(kRdIsRm),
1983                                 kRdIsRm},
1984                                {{al, r14, r10, r14, LSL, r0},
1985                                 "al r14 r10 r14 LSL r0",
1986                                 "RdIsRm_al_r14_r10_r14_LSL_r0",
1987                                 ARRAY_SIZE(kRdIsRm),
1988                                 kRdIsRm},
1989                                {{al, r7, r0, r7, LSL, r0},
1990                                 "al r7 r0 r7 LSL r0",
1991                                 "RdIsRm_al_r7_r0_r7_LSL_r0",
1992                                 ARRAY_SIZE(kRdIsRm),
1993                                 kRdIsRm},
1994                                {{al, r4, r9, r4, LSL, r0},
1995                                 "al r4 r9 r4 LSL r0",
1996                                 "RdIsRm_al_r4_r9_r4_LSL_r0",
1997                                 ARRAY_SIZE(kRdIsRm),
1998                                 kRdIsRm},
1999                                {{al, r6, r10, r6, LSL, r0},
2000                                 "al r6 r10 r6 LSL r0",
2001                                 "RdIsRm_al_r6_r10_r6_LSL_r0",
2002                                 ARRAY_SIZE(kRdIsRm),
2003                                 kRdIsRm},
2004                                {{al, r7, r6, r7, LSL, r0},
2005                                 "al r7 r6 r7 LSL r0",
2006                                 "RdIsRm_al_r7_r6_r7_LSL_r0",
2007                                 ARRAY_SIZE(kRdIsRm),
2008                                 kRdIsRm},
2009                                {{al, r3, r9, r10, LSL, r0},
2010                                 "al r3 r9 r10 LSL r0",
2011                                 "RdIsNotRnIsNotRm_al_r3_r9_r10_LSL_r0",
2012                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2013                                 kRdIsNotRnIsNotRm},
2014                                {{al, r7, r12, r5, LSL, r0},
2015                                 "al r7 r12 r5 LSL r0",
2016                                 "RdIsNotRnIsNotRm_al_r7_r12_r5_LSL_r0",
2017                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2018                                 kRdIsNotRnIsNotRm},
2019                                {{al, r8, r5, r6, LSL, r0},
2020                                 "al r8 r5 r6 LSL r0",
2021                                 "RdIsNotRnIsNotRm_al_r8_r5_r6_LSL_r0",
2022                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2023                                 kRdIsNotRnIsNotRm},
2024                                {{al, r0, r6, r0, LSL, r0},
2025                                 "al r0 r6 r0 LSL r0",
2026                                 "RdIsNotRnIsNotRm_al_r0_r6_r0_LSL_r0",
2027                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2028                                 kRdIsNotRnIsNotRm},
2029                                {{al, r11, r7, r8, LSL, r0},
2030                                 "al r11 r7 r8 LSL r0",
2031                                 "RdIsNotRnIsNotRm_al_r11_r7_r8_LSL_r0",
2032                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2033                                 kRdIsNotRnIsNotRm},
2034                                {{al, r12, r2, r3, LSL, r0},
2035                                 "al r12 r2 r3 LSL r0",
2036                                 "RdIsNotRnIsNotRm_al_r12_r2_r3_LSL_r0",
2037                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2038                                 kRdIsNotRnIsNotRm},
2039                                {{al, r7, r4, r10, LSL, r0},
2040                                 "al r7 r4 r10 LSL r0",
2041                                 "RdIsNotRnIsNotRm_al_r7_r4_r10_LSL_r0",
2042                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2043                                 kRdIsNotRnIsNotRm},
2044                                {{al, r9, r6, r1, LSL, r0},
2045                                 "al r9 r6 r1 LSL r0",
2046                                 "RdIsNotRnIsNotRm_al_r9_r6_r1_LSL_r0",
2047                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2048                                 kRdIsNotRnIsNotRm},
2049                                {{al, r10, r14, r3, LSL, r0},
2050                                 "al r10 r14 r3 LSL r0",
2051                                 "RdIsNotRnIsNotRm_al_r10_r14_r3_LSL_r0",
2052                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2053                                 kRdIsNotRnIsNotRm},
2054                                {{al, r14, r3, r6, LSL, r0},
2055                                 "al r14 r3 r6 LSL r0",
2056                                 "RdIsNotRnIsNotRm_al_r14_r3_r6_LSL_r0",
2057                                 ARRAY_SIZE(kRdIsNotRnIsNotRm),
2058                                 kRdIsNotRnIsNotRm},
2059                                {{al, r0, r0, r1, LSL, r2},
2060                                 "al r0 r0 r1 LSL r2",
2061                                 "ShiftTypes_al_r0_r0_r1_LSL_r2",
2062                                 ARRAY_SIZE(kShiftTypes),
2063                                 kShiftTypes},
2064                                {{al, r0, r0, r1, LSR, r2},
2065                                 "al r0 r0 r1 LSR r2",
2066                                 "ShiftTypes_al_r0_r0_r1_LSR_r2",
2067                                 ARRAY_SIZE(kShiftTypes),
2068                                 kShiftTypes},
2069                                {{al, r0, r0, r1, ASR, r2},
2070                                 "al r0 r0 r1 ASR r2",
2071                                 "ShiftTypes_al_r0_r0_r1_ASR_r2",
2072                                 ARRAY_SIZE(kShiftTypes),
2073                                 kShiftTypes},
2074                                {{al, r0, r0, r1, ROR, r2},
2075                                 "al r0 r0 r1 ROR r2",
2076                                 "ShiftTypes_al_r0_r0_r1_ROR_r2",
2077                                 ARRAY_SIZE(kShiftTypes),
2078                                 kShiftTypes}};
2079 
2080 // We record all inputs to the instructions as outputs. This way, we also check
2081 // that what shouldn't change didn't change.
2082 struct TestResult {
2083   size_t output_size;
2084   const Inputs* outputs;
2085 };
2086 
2087 // These headers each contain an array of `TestResult` with the reference output
2088 // values. The reference arrays are names `kReference{mnemonic}`.
2089 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-adc.h"
2090 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-adcs.h"
2091 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-add.h"
2092 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-adds.h"
2093 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-and.h"
2094 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-ands.h"
2095 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-bic.h"
2096 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-bics.h"
2097 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-eor.h"
2098 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-eors.h"
2099 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-orr.h"
2100 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-orrs.h"
2101 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-rsb.h"
2102 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-rsbs.h"
2103 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-rsc.h"
2104 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-rscs.h"
2105 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-sbc.h"
2106 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-sbcs.h"
2107 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-sub.h"
2108 #include "aarch32/traces/simulator-cond-rd-rn-operand-rm-shift-rs-a32-subs.h"
2109 
2110 
2111 // The maximum number of errors to report in detail for each test.
2112 const unsigned kErrorReportLimit = 8;
2113 
2114 typedef void (MacroAssembler::*Fn)(Condition cond,
2115                                    Register rd,
2116                                    Register rn,
2117                                    const Operand& op);
2118 
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])2119 void TestHelper(Fn instruction,
2120                 const char* mnemonic,
2121                 const TestResult reference[]) {
2122   SETUP();
2123   masm.UseA32();
2124   START();
2125 
2126   // Data to compare to `reference`.
2127   TestResult* results[ARRAY_SIZE(kTests)];
2128 
2129   // Test cases for memory bound instructions may allocate a buffer and save its
2130   // address in this array.
2131   byte* scratch_memory_buffers[ARRAY_SIZE(kTests)];
2132 
2133   // Generate a loop for each element in `kTests`. Each loop tests one specific
2134   // instruction.
2135   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
2136     // Allocate results on the heap for this test.
2137     results[i] = new TestResult;
2138     results[i]->outputs = new Inputs[kTests[i].input_size];
2139     results[i]->output_size = kTests[i].input_size;
2140 
2141     size_t input_stride = sizeof(kTests[i].inputs[0]) * kTests[i].input_size;
2142     VIXL_ASSERT(IsUint32(input_stride));
2143 
2144     scratch_memory_buffers[i] = NULL;
2145 
2146     Label loop;
2147     UseScratchRegisterScope scratch_registers(&masm);
2148     // Include all registers from r0 ro r12.
2149     scratch_registers.Include(RegisterList(0x1fff));
2150 
2151     // Values to pass to the macro-assembler.
2152     Condition cond = kTests[i].operands.cond;
2153     Register rd = kTests[i].operands.rd;
2154     Register rn = kTests[i].operands.rn;
2155     Register rm = kTests[i].operands.rm;
2156     ShiftType shift = kTests[i].operands.shift;
2157     Register rs = kTests[i].operands.rs;
2158     Operand op(rm, shift, rs);
2159     scratch_registers.Exclude(rd);
2160     scratch_registers.Exclude(rn);
2161     scratch_registers.Exclude(rm);
2162     scratch_registers.Exclude(rs);
2163 
2164     // Allocate reserved registers for our own use.
2165     Register input_ptr = scratch_registers.Acquire();
2166     Register input_end = scratch_registers.Acquire();
2167     Register result_ptr = scratch_registers.Acquire();
2168 
2169     // Initialize `input_ptr` to the first element and `input_end` the address
2170     // after the array.
2171     __ Mov(input_ptr, Operand::From(kTests[i].inputs));
2172     __ Add(input_end, input_ptr, static_cast<uint32_t>(input_stride));
2173     __ Mov(result_ptr, Operand::From(results[i]->outputs));
2174     __ Bind(&loop);
2175 
2176     {
2177       UseScratchRegisterScope temp_registers(&masm);
2178       Register nzcv_bits = temp_registers.Acquire();
2179       Register saved_q_bit = temp_registers.Acquire();
2180       // Save the `Q` bit flag.
2181       __ Mrs(saved_q_bit, APSR);
2182       __ And(saved_q_bit, saved_q_bit, QFlag);
2183       // Set the `NZCV` and `Q` flags together.
2184       __ Ldr(nzcv_bits, MemOperand(input_ptr, offsetof(Inputs, apsr)));
2185       __ Orr(nzcv_bits, nzcv_bits, saved_q_bit);
2186       __ Msr(APSR_nzcvq, nzcv_bits);
2187     }
2188     __ Ldr(rd, MemOperand(input_ptr, offsetof(Inputs, rd)));
2189     __ Ldr(rn, MemOperand(input_ptr, offsetof(Inputs, rn)));
2190     __ Ldr(rm, MemOperand(input_ptr, offsetof(Inputs, rm)));
2191     __ Ldr(rs, MemOperand(input_ptr, offsetof(Inputs, rs)));
2192 
2193     (masm.*instruction)(cond, rd, rn, op);
2194 
2195     {
2196       UseScratchRegisterScope temp_registers(&masm);
2197       Register nzcv_bits = temp_registers.Acquire();
2198       __ Mrs(nzcv_bits, APSR);
2199       // Only record the NZCV bits.
2200       __ And(nzcv_bits, nzcv_bits, NZCVFlag);
2201       __ Str(nzcv_bits, MemOperand(result_ptr, offsetof(Inputs, apsr)));
2202     }
2203     __ Str(rd, MemOperand(result_ptr, offsetof(Inputs, rd)));
2204     __ Str(rn, MemOperand(result_ptr, offsetof(Inputs, rn)));
2205     __ Str(rm, MemOperand(result_ptr, offsetof(Inputs, rm)));
2206     __ Str(rs, MemOperand(result_ptr, offsetof(Inputs, rs)));
2207 
2208     // Advance the result pointer.
2209     __ Add(result_ptr, result_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
2210     // Loop back until `input_ptr` is lower than `input_base`.
2211     __ Add(input_ptr, input_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
2212     __ Cmp(input_ptr, input_end);
2213     __ B(ne, &loop);
2214   }
2215 
2216   END();
2217 
2218   RUN();
2219 
2220   if (Test::generate_test_trace()) {
2221     // Print the results.
2222     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
2223       printf("const Inputs kOutputs_%s_%s[] = {\n",
2224              mnemonic,
2225              kTests[i].identifier);
2226       for (size_t j = 0; j < results[i]->output_size; j++) {
2227         printf("  { ");
2228         printf("0x%08" PRIx32, results[i]->outputs[j].apsr);
2229         printf(", ");
2230         printf("0x%08" PRIx32, results[i]->outputs[j].rd);
2231         printf(", ");
2232         printf("0x%08" PRIx32, results[i]->outputs[j].rn);
2233         printf(", ");
2234         printf("0x%08" PRIx32, results[i]->outputs[j].rm);
2235         printf(", ");
2236         printf("0x%08" PRIx32, results[i]->outputs[j].rs);
2237         printf(" },\n");
2238       }
2239       printf("};\n");
2240     }
2241     printf("const TestResult kReference%s[] = {\n", mnemonic);
2242     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
2243       printf("  {\n");
2244       printf("    ARRAY_SIZE(kOutputs_%s_%s),\n",
2245              mnemonic,
2246              kTests[i].identifier);
2247       printf("    kOutputs_%s_%s,\n", mnemonic, kTests[i].identifier);
2248       printf("  },\n");
2249     }
2250     printf("};\n");
2251   } else if (kCheckSimulatorTestResults) {
2252     // Check the results.
2253     unsigned total_error_count = 0;
2254     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
2255       bool instruction_has_errors = false;
2256       for (size_t j = 0; j < kTests[i].input_size; j++) {
2257         uint32_t apsr = results[i]->outputs[j].apsr;
2258         uint32_t rd = results[i]->outputs[j].rd;
2259         uint32_t rn = results[i]->outputs[j].rn;
2260         uint32_t rm = results[i]->outputs[j].rm;
2261         uint32_t rs = results[i]->outputs[j].rs;
2262         uint32_t apsr_input = kTests[i].inputs[j].apsr;
2263         uint32_t rd_input = kTests[i].inputs[j].rd;
2264         uint32_t rn_input = kTests[i].inputs[j].rn;
2265         uint32_t rm_input = kTests[i].inputs[j].rm;
2266         uint32_t rs_input = kTests[i].inputs[j].rs;
2267         uint32_t apsr_ref = reference[i].outputs[j].apsr;
2268         uint32_t rd_ref = reference[i].outputs[j].rd;
2269         uint32_t rn_ref = reference[i].outputs[j].rn;
2270         uint32_t rm_ref = reference[i].outputs[j].rm;
2271         uint32_t rs_ref = reference[i].outputs[j].rs;
2272 
2273         if (((apsr != apsr_ref) || (rd != rd_ref) || (rn != rn_ref) ||
2274              (rm != rm_ref) || (rs != rs_ref)) &&
2275             (++total_error_count <= kErrorReportLimit)) {
2276           // Print the instruction once even if it triggered multiple failures.
2277           if (!instruction_has_errors) {
2278             printf("Error(s) when testing \"%s %s\":\n",
2279                    mnemonic,
2280                    kTests[i].operands_description);
2281             instruction_has_errors = true;
2282           }
2283           // Print subsequent errors.
2284           printf("  Input:    ");
2285           printf("0x%08" PRIx32, apsr_input);
2286           printf(", ");
2287           printf("0x%08" PRIx32, rd_input);
2288           printf(", ");
2289           printf("0x%08" PRIx32, rn_input);
2290           printf(", ");
2291           printf("0x%08" PRIx32, rm_input);
2292           printf(", ");
2293           printf("0x%08" PRIx32, rs_input);
2294           printf("\n");
2295           printf("  Expected: ");
2296           printf("0x%08" PRIx32, apsr_ref);
2297           printf(", ");
2298           printf("0x%08" PRIx32, rd_ref);
2299           printf(", ");
2300           printf("0x%08" PRIx32, rn_ref);
2301           printf(", ");
2302           printf("0x%08" PRIx32, rm_ref);
2303           printf(", ");
2304           printf("0x%08" PRIx32, rs_ref);
2305           printf("\n");
2306           printf("  Found:    ");
2307           printf("0x%08" PRIx32, apsr);
2308           printf(", ");
2309           printf("0x%08" PRIx32, rd);
2310           printf(", ");
2311           printf("0x%08" PRIx32, rn);
2312           printf(", ");
2313           printf("0x%08" PRIx32, rm);
2314           printf(", ");
2315           printf("0x%08" PRIx32, rs);
2316           printf("\n\n");
2317         }
2318       }
2319     }
2320 
2321     if (total_error_count > kErrorReportLimit) {
2322       printf("%u other errors follow.\n",
2323              total_error_count - kErrorReportLimit);
2324     }
2325     VIXL_CHECK(total_error_count == 0);
2326   } else {
2327     VIXL_WARNING("Assembled the code, but did not run anything.\n");
2328   }
2329 
2330   for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
2331     delete[] results[i]->outputs;
2332     delete results[i];
2333     delete[] scratch_memory_buffers[i];
2334   }
2335 
2336   TEARDOWN();
2337 }
2338 
2339 // Instantiate tests for each instruction in the list.
2340 // TODO: Remove this limitation by having a sandboxing mechanism.
2341 #if defined(VIXL_HOST_POINTER_32)
2342 #define TEST(mnemonic)                                                      \
2343   void Test_##mnemonic() {                                                  \
2344     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
2345   }                                                                         \
2346   Test test_##mnemonic(                                                     \
2347       "AARCH32_SIMULATOR_COND_RD_RN_OPERAND_RM_SHIFT_RS_A32_" #mnemonic,    \
2348       &Test_##mnemonic);
2349 #else
2350 #define TEST(mnemonic)                                                   \
2351   void Test_##mnemonic() {                                               \
2352     VIXL_WARNING("This test can only run on a 32-bit host.\n");          \
2353     USE(TestHelper);                                                     \
2354   }                                                                      \
2355   Test test_##mnemonic(                                                  \
2356       "AARCH32_SIMULATOR_COND_RD_RN_OPERAND_RM_SHIFT_RS_A32_" #mnemonic, \
2357       &Test_##mnemonic);
2358 #endif
2359 
2360 FOREACH_INSTRUCTION(TEST)
2361 #undef TEST
2362 
2363 }  // namespace
2364 #endif
2365 
2366 }  // namespace aarch32
2367 }  // namespace vixl
2368