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