1b78f13911bfe6eda303e91ef215c87a165aae8aeAlexandre Rames// Copyright 2016, VIXL authors 288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// All rights reserved. 388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// 488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// Redistribution and use in source and binary forms, with or without 588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// modification, are permitted provided that the following conditions are met: 688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// 788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// * Redistributions of source code must retain the above copyright notice, 888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// this list of conditions and the following disclaimer. 988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// * Redistributions in binary form must reproduce the above copyright notice, 1088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// this list of conditions and the following disclaimer in the documentation 1188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// and/or other materials provided with the distribution. 1288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// * Neither the name of ARM Limited nor the names of its contributors may be 1388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// used to endorse or promote products derived from this software without 1488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// specific prior written permission. 1588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// 1688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND 1788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 2088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 2388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 2719c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois 2888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// ----------------------------------------------------------------------------- 2988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// This file is auto generated from the 30d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames// test/aarch32/config/template-simulator-aarch32.cc.in template file using 3188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// tools/generate_tests.py. 3288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// 3388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// PLEASE DO NOT EDIT. 3488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// ----------------------------------------------------------------------------- 3588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 3619c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois 3788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#include "test-runner.h" 3888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 3988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#include "test-utils.h" 40d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "test-utils-aarch32.h" 4188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 42d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/assembler-aarch32.h" 43d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/macro-assembler-aarch32.h" 44d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/disasm-aarch32.h" 4588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 4688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define __ masm. 4788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define BUF_SIZE (4096) 4888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 491e85b7f2e8ad2bfb233de29405aade635ed207cePierre Langlois#ifdef VIXL_INCLUDE_SIMULATOR_AARCH32 5088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// Run tests with the simulator. 5188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 5288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define SETUP() MacroAssembler masm(BUF_SIZE) 5388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 54919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames#define START() masm.GetBuffer()->Reset() 5588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 5688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define END() \ 5788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Hlt(0); \ 5888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ FinalizeCode(); 5988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 6088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// TODO: Run the tests in the simulator. 6188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define RUN() 6288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 6388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define TEARDOWN() 6488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 651e85b7f2e8ad2bfb233de29405aade635ed207cePierre Langlois#else // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32. 6688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 674cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli#define SETUP() \ 684cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli MacroAssembler masm(BUF_SIZE); \ 694cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli UseScratchRegisterScope harness_scratch(&masm); \ 704cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli harness_scratch.ExcludeAll(); 7188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 72919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames#define START() \ 73919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames masm.GetBuffer()->Reset(); \ 74919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r4); \ 75919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r5); \ 76919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r6); \ 77919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r7); \ 78919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r8); \ 79919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r9); \ 80919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r10); \ 81919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames __ Push(r11); \ 824cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Push(lr); \ 834cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli harness_scratch.Include(ip); 844cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli 854cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli#define END() \ 864cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli harness_scratch.Exclude(ip); \ 874cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(lr); \ 884cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r11); \ 894cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r10); \ 904cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r9); \ 914cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r8); \ 924cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r7); \ 934cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r6); \ 944cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r5); \ 954cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Pop(r4); \ 964cb13e841305b38acbd8195b1c511d59c91ec8d9Georgia Kouveli __ Bx(lr); \ 97cb6592f4b00347a84f9d7638473f0af8f1b6b1ddGeorgia Kouveli __ FinalizeCode(); 9888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 99919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames#define RUN() \ 100919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames { \ 101919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames int pcs_offset = masm.IsUsingT32() ? 1 : 0; \ 1026a049f97861bd71c69d81f643e42308d28c5de31Alexandre Rames masm.GetBuffer()->SetExecutable(); \ 103919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames ExecuteMemory(masm.GetBuffer()->GetStartAddress<byte*>(), \ 104919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames masm.GetSizeOfCodeGenerated(), \ 105919e3fe28a5024c53ede42922092bbc32e89dcb8Alexandre Rames pcs_offset); \ 1066a049f97861bd71c69d81f643e42308d28c5de31Alexandre Rames masm.GetBuffer()->SetWritable(); \ 10788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 10888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 109cb6592f4b00347a84f9d7638473f0af8f1b6b1ddGeorgia Kouveli#define TEARDOWN() harness_scratch.Close(); 11088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 1111e85b7f2e8ad2bfb233de29405aade635ed207cePierre Langlois#endif // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32 11288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 11388c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisnamespace vixl { 11488c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisnamespace aarch32 { 11588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 11688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// List of instruction encodings: 11788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define FOREACH_INSTRUCTION(M) \ 11888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Adc) \ 11988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Adcs) \ 12088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Add) \ 12188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Adds) \ 12288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(And) \ 12388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Ands) \ 12488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Bic) \ 12588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Bics) \ 12688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Eor) \ 12788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Eors) \ 12888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Orr) \ 12988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Orrs) \ 13088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Rsb) \ 13188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Rsbs) \ 13288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Rsc) \ 13388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Rscs) \ 13488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Sbc) \ 13588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Sbcs) \ 13688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Sub) \ 13788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois M(Subs) 13888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 13919c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois 1401d451fce2580f360ef249893135526156985a85cPierre Langlois// The following definitions are defined again in each generated test, therefore 1411d451fce2580f360ef249893135526156985a85cPierre Langlois// we need to place them in an anomymous namespace. It expresses that they are 1421d451fce2580f360ef249893135526156985a85cPierre Langlois// local to this file only, and the compiler is not allowed to share these types 1431d451fce2580f360ef249893135526156985a85cPierre Langlois// across test files during template instantiation. Specifically, `Operands` and 1441d451fce2580f360ef249893135526156985a85cPierre Langlois// `Inputs` have various layouts across generated tests so they absolutely 1451d451fce2580f360ef249893135526156985a85cPierre Langlois// cannot be shared. 1461d451fce2580f360ef249893135526156985a85cPierre Langlois 1479a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#ifdef VIXL_INCLUDE_TARGET_A32 1481d451fce2580f360ef249893135526156985a85cPierre Langloisnamespace { 1491d451fce2580f360ef249893135526156985a85cPierre Langlois 15088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// Values to be passed to the assembler to produce the instruction under test. 15188c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstruct Operands { 15288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Condition cond; 15388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register rd; 15488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register rn; 15588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t immediate; 15688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois}; 15788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 15888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// Input data to feed to the instruction. 15988c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstruct Inputs { 16088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t apsr; 16188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rd; 16288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rn; 16388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois}; 16488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 16588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// This structure contains all input data needed to test one specific encoding. 16688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// It used to generate a loop over an instruction. 16788c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstruct TestLoopData { 16888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // The `operands` fields represents the values to pass to the assembler to 16988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // produce the instruction. 17088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Operands operands; 17188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Description of the operands, used for error reporting. 17288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois const char* operands_description; 17388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Unique identifier, used for generating traces. 17488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois const char* identifier; 17588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Array of values to be fed to the instruction. 17688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois size_t input_size; 17788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois const Inputs* inputs; 17888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois}; 17988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 18088c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstatic const Inputs kCondition[] = {{NFlag, 0xabababab, 0xabababab}, 18188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {ZFlag, 0xabababab, 0xabababab}, 18288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {CFlag, 0xabababab, 0xabababab}, 18388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {VFlag, 0xabababab, 0xabababab}, 18488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NZFlag, 0xabababab, 0xabababab}, 18588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NCFlag, 0xabababab, 0xabababab}, 18688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NVFlag, 0xabababab, 0xabababab}, 18788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {ZCFlag, 0xabababab, 0xabababab}, 18888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {ZVFlag, 0xabababab, 0xabababab}, 18988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {CVFlag, 0xabababab, 0xabababab}, 19088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NZCFlag, 0xabababab, 0xabababab}, 19188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NZVFlag, 0xabababab, 0xabababab}, 19288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NCVFlag, 0xabababab, 0xabababab}, 19388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {ZCVFlag, 0xabababab, 0xabababab}, 19488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NZCVFlag, 0xabababab, 0xabababab}}; 19588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 19688c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstatic const Inputs kRdIsRn[] = {{NoFlag, 0x00000000, 0x00000000}, 19788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00000001}, 19888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00000002}, 19988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00000020}, 20088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x0000007d}, 20188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x0000007e}, 20288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x0000007f}, 20388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00007ffd}, 20488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00007ffe}, 20588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00007fff}, 20688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x33333333}, 20788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x55555555}, 20888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x7ffffffd}, 20988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x7ffffffe}, 21088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x7fffffff}, 21188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x80000000}, 21288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x80000001}, 21388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa}, 21488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xcccccccc}, 21588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffff8000}, 21688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffff8001}, 21788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffff8002}, 21888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffff8003}, 21988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffffff80}, 22088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffffff81}, 22188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffffff82}, 22288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffffff83}, 22388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffffffe0}, 22488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xfffffffd}, 22588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xfffffffe}, 22688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffffffff}}; 22788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 22888c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstatic const Inputs kRdIsNotRn[] = {{NoFlag, 0x00000000, 0x00000000}, 22988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x00000001}, 23088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x00000002}, 23188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x00000020}, 23288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x0000007d}, 23388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x0000007e}, 23488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x0000007f}, 23588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x00007ffd}, 23688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x00007ffe}, 23788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x00007fff}, 23888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x33333333}, 23988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x55555555}, 24088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x7ffffffd}, 24188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x7ffffffe}, 24288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x7fffffff}, 24388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x80000000}, 24488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0x80000001}, 24588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xaaaaaaaa}, 24688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xcccccccc}, 24788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffff8000}, 24888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffff8001}, 24988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffff8002}, 25088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffff8003}, 25188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffffff80}, 25288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffffff81}, 25388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffffff82}, 25488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffffff83}, 25588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffffffe0}, 25688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xfffffffd}, 25788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xfffffffe}, 25888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000000, 0xffffffff}, 25988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00000000}, 26088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00000001}, 26188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00000002}, 26288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00000020}, 26388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x0000007d}, 26488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x0000007e}, 26588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x0000007f}, 26688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00007ffd}, 26788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00007ffe}, 26888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x00007fff}, 26988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x33333333}, 27088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x55555555}, 27188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x7ffffffd}, 27288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x7ffffffe}, 27388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x7fffffff}, 27488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x80000000}, 27588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0x80000001}, 27688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xaaaaaaaa}, 27788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xcccccccc}, 27888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffff8000}, 27988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffff8001}, 28088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffff8002}, 28188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffff8003}, 28288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffffff80}, 28388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffffff81}, 28488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffffff82}, 28588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffffff83}, 28688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffffffe0}, 28788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xfffffffd}, 28888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xfffffffe}, 28988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000001, 0xffffffff}, 29088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00000000}, 29188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00000001}, 29288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00000002}, 29388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00000020}, 29488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x0000007d}, 29588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x0000007e}, 29688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x0000007f}, 29788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00007ffd}, 29888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00007ffe}, 29988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x00007fff}, 30088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x33333333}, 30188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x55555555}, 30288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x7ffffffd}, 30388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x7ffffffe}, 30488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x7fffffff}, 30588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x80000000}, 30688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0x80000001}, 30788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xaaaaaaaa}, 30888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xcccccccc}, 30988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffff8000}, 31088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffff8001}, 31188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffff8002}, 31288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffff8003}, 31388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffffff80}, 31488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffffff81}, 31588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffffff82}, 31688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffffff83}, 31788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffffffe0}, 31888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xfffffffd}, 31988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xfffffffe}, 32088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000002, 0xffffffff}, 32188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00000000}, 32288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00000001}, 32388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00000002}, 32488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00000020}, 32588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x0000007d}, 32688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x0000007e}, 32788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x0000007f}, 32888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00007ffd}, 32988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00007ffe}, 33088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x00007fff}, 33188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x33333333}, 33288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x55555555}, 33388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x7ffffffd}, 33488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x7ffffffe}, 33588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x7fffffff}, 33688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x80000000}, 33788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0x80000001}, 33888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xaaaaaaaa}, 33988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xcccccccc}, 34088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffff8000}, 34188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffff8001}, 34288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffff8002}, 34388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffff8003}, 34488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffffff80}, 34588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffffff81}, 34688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffffff82}, 34788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffffff83}, 34888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffffffe0}, 34988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xfffffffd}, 35088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xfffffffe}, 35188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00000020, 0xffffffff}, 35288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x00000000}, 35388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x00000001}, 35488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x00000002}, 35588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x00000020}, 35688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x0000007d}, 35788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x0000007e}, 35888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x0000007f}, 35988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x00007ffd}, 36088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x00007ffe}, 36188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x00007fff}, 36288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x33333333}, 36388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x55555555}, 36488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x7ffffffd}, 36588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x7ffffffe}, 36688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x7fffffff}, 36788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x80000000}, 36888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0x80000001}, 36988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xaaaaaaaa}, 37088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xcccccccc}, 37188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffff8000}, 37288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffff8001}, 37388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffff8002}, 37488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffff8003}, 37588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffffff80}, 37688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffffff81}, 37788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffffff82}, 37888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffffff83}, 37988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffffffe0}, 38088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xfffffffd}, 38188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xfffffffe}, 38288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007d, 0xffffffff}, 38388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x00000000}, 38488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x00000001}, 38588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x00000002}, 38688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x00000020}, 38788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x0000007d}, 38888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x0000007e}, 38988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x0000007f}, 39088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x00007ffd}, 39188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x00007ffe}, 39288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x00007fff}, 39388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x33333333}, 39488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x55555555}, 39588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x7ffffffd}, 39688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x7ffffffe}, 39788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x7fffffff}, 39888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x80000000}, 39988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0x80000001}, 40088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xaaaaaaaa}, 40188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xcccccccc}, 40288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffff8000}, 40388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffff8001}, 40488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffff8002}, 40588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffff8003}, 40688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffffff80}, 40788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffffff81}, 40888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffffff82}, 40988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffffff83}, 41088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffffffe0}, 41188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xfffffffd}, 41288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xfffffffe}, 41388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007e, 0xffffffff}, 41488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x00000000}, 41588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x00000001}, 41688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x00000002}, 41788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x00000020}, 41888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x0000007d}, 41988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x0000007e}, 42088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x0000007f}, 42188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x00007ffd}, 42288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x00007ffe}, 42388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x00007fff}, 42488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x33333333}, 42588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x55555555}, 42688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x7ffffffd}, 42788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x7ffffffe}, 42888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x7fffffff}, 42988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x80000000}, 43088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0x80000001}, 43188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xaaaaaaaa}, 43288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xcccccccc}, 43388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffff8000}, 43488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffff8001}, 43588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffff8002}, 43688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffff8003}, 43788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffffff80}, 43888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffffff81}, 43988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffffff82}, 44088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffffff83}, 44188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffffffe0}, 44288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xfffffffd}, 44388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xfffffffe}, 44488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x0000007f, 0xffffffff}, 44588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00000000}, 44688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00000001}, 44788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00000002}, 44888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00000020}, 44988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x0000007d}, 45088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x0000007e}, 45188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x0000007f}, 45288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00007ffd}, 45388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00007ffe}, 45488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x00007fff}, 45588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x33333333}, 45688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x55555555}, 45788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x7ffffffd}, 45888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x7ffffffe}, 45988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x7fffffff}, 46088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x80000000}, 46188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0x80000001}, 46288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xaaaaaaaa}, 46388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xcccccccc}, 46488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffff8000}, 46588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffff8001}, 46688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffff8002}, 46788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffff8003}, 46888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffffff80}, 46988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffffff81}, 47088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffffff82}, 47188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffffff83}, 47288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffffffe0}, 47388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xfffffffd}, 47488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xfffffffe}, 47588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffd, 0xffffffff}, 47688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00000000}, 47788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00000001}, 47888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00000002}, 47988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00000020}, 48088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x0000007d}, 48188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x0000007e}, 48288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x0000007f}, 48388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00007ffd}, 48488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00007ffe}, 48588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x00007fff}, 48688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x33333333}, 48788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x55555555}, 48888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x7ffffffd}, 48988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x7ffffffe}, 49088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x7fffffff}, 49188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x80000000}, 49288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0x80000001}, 49388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xaaaaaaaa}, 49488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xcccccccc}, 49588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffff8000}, 49688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffff8001}, 49788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffff8002}, 49888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffff8003}, 49988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffffff80}, 50088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffffff81}, 50188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffffff82}, 50288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffffff83}, 50388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffffffe0}, 50488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xfffffffd}, 50588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xfffffffe}, 50688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007ffe, 0xffffffff}, 50788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00000000}, 50888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00000001}, 50988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00000002}, 51088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00000020}, 51188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x0000007d}, 51288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x0000007e}, 51388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x0000007f}, 51488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00007ffd}, 51588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00007ffe}, 51688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x00007fff}, 51788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x33333333}, 51888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x55555555}, 51988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x7ffffffd}, 52088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x7ffffffe}, 52188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x7fffffff}, 52288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x80000000}, 52388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0x80000001}, 52488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xaaaaaaaa}, 52588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xcccccccc}, 52688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffff8000}, 52788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffff8001}, 52888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffff8002}, 52988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffff8003}, 53088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffffff80}, 53188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffffff81}, 53288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffffff82}, 53388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffffff83}, 53488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffffffe0}, 53588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xfffffffd}, 53688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xfffffffe}, 53788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x00007fff, 0xffffffff}, 53888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x00000000}, 53988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x00000001}, 54088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x00000002}, 54188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x00000020}, 54288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x0000007d}, 54388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x0000007e}, 54488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x0000007f}, 54588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x00007ffd}, 54688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x00007ffe}, 54788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x00007fff}, 54888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x33333333}, 54988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x55555555}, 55088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x7ffffffd}, 55188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x7ffffffe}, 55288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x7fffffff}, 55388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x80000000}, 55488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0x80000001}, 55588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xaaaaaaaa}, 55688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xcccccccc}, 55788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffff8000}, 55888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffff8001}, 55988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffff8002}, 56088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffff8003}, 56188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffffff80}, 56288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffffff81}, 56388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffffff82}, 56488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffffff83}, 56588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffffffe0}, 56688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xfffffffd}, 56788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xfffffffe}, 56888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x33333333, 0xffffffff}, 56988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x00000000}, 57088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x00000001}, 57188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x00000002}, 57288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x00000020}, 57388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x0000007d}, 57488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x0000007e}, 57588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x0000007f}, 57688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x00007ffd}, 57788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x00007ffe}, 57888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x00007fff}, 57988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x33333333}, 58088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x55555555}, 58188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x7ffffffd}, 58288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x7ffffffe}, 58388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x7fffffff}, 58488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x80000000}, 58588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0x80000001}, 58688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xaaaaaaaa}, 58788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xcccccccc}, 58888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffff8000}, 58988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffff8001}, 59088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffff8002}, 59188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffff8003}, 59288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffffff80}, 59388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffffff81}, 59488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffffff82}, 59588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffffff83}, 59688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffffffe0}, 59788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xfffffffd}, 59888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xfffffffe}, 59988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x55555555, 0xffffffff}, 60088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x00000000}, 60188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x00000001}, 60288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x00000002}, 60388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x00000020}, 60488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x0000007d}, 60588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x0000007e}, 60688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x0000007f}, 60788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x00007ffd}, 60888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x00007ffe}, 60988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x00007fff}, 61088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x33333333}, 61188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x55555555}, 61288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x7ffffffd}, 61388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x7ffffffe}, 61488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x7fffffff}, 61588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x80000000}, 61688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0x80000001}, 61788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xaaaaaaaa}, 61888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xcccccccc}, 61988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffff8000}, 62088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffff8001}, 62188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffff8002}, 62288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffff8003}, 62388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffffff80}, 62488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffffff81}, 62588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffffff82}, 62688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffffff83}, 62788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffffffe0}, 62888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xfffffffd}, 62988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xfffffffe}, 63088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffd, 0xffffffff}, 63188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x00000000}, 63288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x00000001}, 63388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x00000002}, 63488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x00000020}, 63588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x0000007d}, 63688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x0000007e}, 63788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x0000007f}, 63888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x00007ffd}, 63988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x00007ffe}, 64088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x00007fff}, 64188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x33333333}, 64288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x55555555}, 64388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x7ffffffd}, 64488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x7ffffffe}, 64588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x7fffffff}, 64688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x80000000}, 64788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0x80000001}, 64888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xaaaaaaaa}, 64988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xcccccccc}, 65088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffff8000}, 65188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffff8001}, 65288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffff8002}, 65388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffff8003}, 65488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffffff80}, 65588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffffff81}, 65688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffffff82}, 65788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffffff83}, 65888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffffffe0}, 65988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xfffffffd}, 66088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xfffffffe}, 66188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7ffffffe, 0xffffffff}, 66288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x00000000}, 66388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x00000001}, 66488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x00000002}, 66588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x00000020}, 66688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x0000007d}, 66788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x0000007e}, 66888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x0000007f}, 66988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x00007ffd}, 67088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x00007ffe}, 67188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x00007fff}, 67288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x33333333}, 67388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x55555555}, 67488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x7ffffffd}, 67588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x7ffffffe}, 67688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x7fffffff}, 67788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x80000000}, 67888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0x80000001}, 67988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xaaaaaaaa}, 68088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xcccccccc}, 68188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffff8000}, 68288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffff8001}, 68388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffff8002}, 68488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffff8003}, 68588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffffff80}, 68688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffffff81}, 68788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffffff82}, 68888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffffff83}, 68988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffffffe0}, 69088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xfffffffd}, 69188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xfffffffe}, 69288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x7fffffff, 0xffffffff}, 69388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x00000000}, 69488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x00000001}, 69588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x00000002}, 69688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x00000020}, 69788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x0000007d}, 69888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x0000007e}, 69988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x0000007f}, 70088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x00007ffd}, 70188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x00007ffe}, 70288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x00007fff}, 70388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x33333333}, 70488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x55555555}, 70588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x7ffffffd}, 70688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x7ffffffe}, 70788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x7fffffff}, 70888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x80000000}, 70988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0x80000001}, 71088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xaaaaaaaa}, 71188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xcccccccc}, 71288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffff8000}, 71388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffff8001}, 71488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffff8002}, 71588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffff8003}, 71688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffffff80}, 71788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffffff81}, 71888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffffff82}, 71988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffffff83}, 72088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffffffe0}, 72188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xfffffffd}, 72288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xfffffffe}, 72388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000000, 0xffffffff}, 72488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x00000000}, 72588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x00000001}, 72688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x00000002}, 72788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x00000020}, 72888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x0000007d}, 72988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x0000007e}, 73088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x0000007f}, 73188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x00007ffd}, 73288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x00007ffe}, 73388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x00007fff}, 73488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x33333333}, 73588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x55555555}, 73688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x7ffffffd}, 73788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x7ffffffe}, 73888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x7fffffff}, 73988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x80000000}, 74088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0x80000001}, 74188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xaaaaaaaa}, 74288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xcccccccc}, 74388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffff8000}, 74488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffff8001}, 74588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffff8002}, 74688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffff8003}, 74788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffffff80}, 74888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffffff81}, 74988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffffff82}, 75088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffffff83}, 75188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffffffe0}, 75288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xfffffffd}, 75388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xfffffffe}, 75488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0x80000001, 0xffffffff}, 75588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x00000000}, 75688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x00000001}, 75788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x00000002}, 75888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x00000020}, 75988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x0000007d}, 76088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x0000007e}, 76188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x0000007f}, 76288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x00007ffd}, 76388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x00007ffe}, 76488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x00007fff}, 76588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x33333333}, 76688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x55555555}, 76788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x7ffffffd}, 76888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x7ffffffe}, 76988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x7fffffff}, 77088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x80000000}, 77188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0x80000001}, 77288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xaaaaaaaa}, 77388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xcccccccc}, 77488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffff8000}, 77588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffff8001}, 77688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffff8002}, 77788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffff8003}, 77888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffffff80}, 77988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffffff81}, 78088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffffff82}, 78188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffffff83}, 78288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffffffe0}, 78388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xfffffffd}, 78488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xfffffffe}, 78588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xaaaaaaaa, 0xffffffff}, 78688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x00000000}, 78788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x00000001}, 78888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x00000002}, 78988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x00000020}, 79088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x0000007d}, 79188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x0000007e}, 79288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x0000007f}, 79388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x00007ffd}, 79488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x00007ffe}, 79588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x00007fff}, 79688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x33333333}, 79788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x55555555}, 79888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x7ffffffd}, 79988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x7ffffffe}, 80088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x7fffffff}, 80188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x80000000}, 80288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0x80000001}, 80388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xaaaaaaaa}, 80488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xcccccccc}, 80588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffff8000}, 80688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffff8001}, 80788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffff8002}, 80888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffff8003}, 80988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffffff80}, 81088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffffff81}, 81188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffffff82}, 81288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffffff83}, 81388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffffffe0}, 81488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xfffffffd}, 81588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xfffffffe}, 81688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xcccccccc, 0xffffffff}, 81788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x00000000}, 81888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x00000001}, 81988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x00000002}, 82088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x00000020}, 82188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x0000007d}, 82288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x0000007e}, 82388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x0000007f}, 82488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x00007ffd}, 82588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x00007ffe}, 82688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x00007fff}, 82788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x33333333}, 82888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x55555555}, 82988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x7ffffffd}, 83088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x7ffffffe}, 83188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x7fffffff}, 83288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x80000000}, 83388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0x80000001}, 83488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xaaaaaaaa}, 83588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xcccccccc}, 83688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffff8000}, 83788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffff8001}, 83888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffff8002}, 83988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffff8003}, 84088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffffff80}, 84188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffffff81}, 84288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffffff82}, 84388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffffff83}, 84488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffffffe0}, 84588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xfffffffd}, 84688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xfffffffe}, 84788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8000, 0xffffffff}, 84888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x00000000}, 84988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x00000001}, 85088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x00000002}, 85188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x00000020}, 85288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x0000007d}, 85388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x0000007e}, 85488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x0000007f}, 85588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x00007ffd}, 85688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x00007ffe}, 85788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x00007fff}, 85888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x33333333}, 85988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x55555555}, 86088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x7ffffffd}, 86188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x7ffffffe}, 86288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x7fffffff}, 86388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x80000000}, 86488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0x80000001}, 86588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xaaaaaaaa}, 86688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xcccccccc}, 86788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffff8000}, 86888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffff8001}, 86988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffff8002}, 87088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffff8003}, 87188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffffff80}, 87288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffffff81}, 87388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffffff82}, 87488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffffff83}, 87588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffffffe0}, 87688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xfffffffd}, 87788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xfffffffe}, 87888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8001, 0xffffffff}, 87988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x00000000}, 88088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x00000001}, 88188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x00000002}, 88288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x00000020}, 88388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x0000007d}, 88488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x0000007e}, 88588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x0000007f}, 88688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x00007ffd}, 88788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x00007ffe}, 88888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x00007fff}, 88988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x33333333}, 89088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x55555555}, 89188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x7ffffffd}, 89288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x7ffffffe}, 89388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x7fffffff}, 89488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x80000000}, 89588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0x80000001}, 89688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xaaaaaaaa}, 89788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xcccccccc}, 89888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffff8000}, 89988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffff8001}, 90088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffff8002}, 90188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffff8003}, 90288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffffff80}, 90388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffffff81}, 90488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffffff82}, 90588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffffff83}, 90688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffffffe0}, 90788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xfffffffd}, 90888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xfffffffe}, 90988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8002, 0xffffffff}, 91088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x00000000}, 91188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x00000001}, 91288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x00000002}, 91388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x00000020}, 91488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x0000007d}, 91588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x0000007e}, 91688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x0000007f}, 91788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x00007ffd}, 91888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x00007ffe}, 91988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x00007fff}, 92088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x33333333}, 92188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x55555555}, 92288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x7ffffffd}, 92388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x7ffffffe}, 92488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x7fffffff}, 92588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x80000000}, 92688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0x80000001}, 92788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xaaaaaaaa}, 92888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xcccccccc}, 92988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffff8000}, 93088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffff8001}, 93188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffff8002}, 93288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffff8003}, 93388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffffff80}, 93488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffffff81}, 93588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffffff82}, 93688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffffff83}, 93788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffffffe0}, 93888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xfffffffd}, 93988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xfffffffe}, 94088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffff8003, 0xffffffff}, 94188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x00000000}, 94288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x00000001}, 94388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x00000002}, 94488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x00000020}, 94588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x0000007d}, 94688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x0000007e}, 94788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x0000007f}, 94888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x00007ffd}, 94988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x00007ffe}, 95088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x00007fff}, 95188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x33333333}, 95288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x55555555}, 95388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x7ffffffd}, 95488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x7ffffffe}, 95588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x7fffffff}, 95688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x80000000}, 95788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0x80000001}, 95888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xaaaaaaaa}, 95988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xcccccccc}, 96088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffff8000}, 96188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffff8001}, 96288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffff8002}, 96388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffff8003}, 96488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffffff80}, 96588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffffff81}, 96688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffffff82}, 96788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffffff83}, 96888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffffffe0}, 96988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xfffffffd}, 97088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xfffffffe}, 97188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff80, 0xffffffff}, 97288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x00000000}, 97388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x00000001}, 97488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x00000002}, 97588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x00000020}, 97688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x0000007d}, 97788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x0000007e}, 97888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x0000007f}, 97988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x00007ffd}, 98088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x00007ffe}, 98188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x00007fff}, 98288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x33333333}, 98388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x55555555}, 98488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x7ffffffd}, 98588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x7ffffffe}, 98688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x7fffffff}, 98788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x80000000}, 98888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0x80000001}, 98988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xaaaaaaaa}, 99088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xcccccccc}, 99188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffff8000}, 99288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffff8001}, 99388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffff8002}, 99488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffff8003}, 99588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffffff80}, 99688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffffff81}, 99788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffffff82}, 99888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffffff83}, 99988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffffffe0}, 100088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xfffffffd}, 100188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xfffffffe}, 100288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff81, 0xffffffff}, 100388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x00000000}, 100488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x00000001}, 100588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x00000002}, 100688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x00000020}, 100788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x0000007d}, 100888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x0000007e}, 100988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x0000007f}, 101088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x00007ffd}, 101188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x00007ffe}, 101288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x00007fff}, 101388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x33333333}, 101488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x55555555}, 101588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x7ffffffd}, 101688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x7ffffffe}, 101788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x7fffffff}, 101888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x80000000}, 101988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0x80000001}, 102088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xaaaaaaaa}, 102188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xcccccccc}, 102288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffff8000}, 102388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffff8001}, 102488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffff8002}, 102588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffff8003}, 102688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffffff80}, 102788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffffff81}, 102888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffffff82}, 102988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffffff83}, 103088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffffffe0}, 103188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xfffffffd}, 103288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xfffffffe}, 103388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff82, 0xffffffff}, 103488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x00000000}, 103588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x00000001}, 103688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x00000002}, 103788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x00000020}, 103888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x0000007d}, 103988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x0000007e}, 104088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x0000007f}, 104188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x00007ffd}, 104288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x00007ffe}, 104388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x00007fff}, 104488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x33333333}, 104588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x55555555}, 104688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x7ffffffd}, 104788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x7ffffffe}, 104888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x7fffffff}, 104988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x80000000}, 105088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0x80000001}, 105188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xaaaaaaaa}, 105288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xcccccccc}, 105388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffff8000}, 105488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffff8001}, 105588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffff8002}, 105688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffff8003}, 105788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffffff80}, 105888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffffff81}, 105988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffffff82}, 106088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffffff83}, 106188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffffffe0}, 106288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xfffffffd}, 106388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xfffffffe}, 106488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffff83, 0xffffffff}, 106588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x00000000}, 106688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x00000001}, 106788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x00000002}, 106888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x00000020}, 106988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x0000007d}, 107088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x0000007e}, 107188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x0000007f}, 107288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x00007ffd}, 107388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x00007ffe}, 107488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x00007fff}, 107588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x33333333}, 107688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x55555555}, 107788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x7ffffffd}, 107888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x7ffffffe}, 107988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x7fffffff}, 108088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x80000000}, 108188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0x80000001}, 108288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xaaaaaaaa}, 108388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xcccccccc}, 108488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffff8000}, 108588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffff8001}, 108688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffff8002}, 108788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffff8003}, 108888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffffff80}, 108988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffffff81}, 109088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffffff82}, 109188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffffff83}, 109288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffffffe0}, 109388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xfffffffd}, 109488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xfffffffe}, 109588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffe0, 0xffffffff}, 109688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x00000000}, 109788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x00000001}, 109888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x00000002}, 109988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x00000020}, 110088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x0000007d}, 110188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x0000007e}, 110288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x0000007f}, 110388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x00007ffd}, 110488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x00007ffe}, 110588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x00007fff}, 110688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x33333333}, 110788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x55555555}, 110888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x7ffffffd}, 110988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x7ffffffe}, 111088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x7fffffff}, 111188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x80000000}, 111288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0x80000001}, 111388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xaaaaaaaa}, 111488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xcccccccc}, 111588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffff8000}, 111688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffff8001}, 111788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffff8002}, 111888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffff8003}, 111988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffffff80}, 112088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffffff81}, 112188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffffff82}, 112288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffffff83}, 112388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffffffe0}, 112488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xfffffffd}, 112588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xfffffffe}, 112688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffd, 0xffffffff}, 112788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x00000000}, 112888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x00000001}, 112988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x00000002}, 113088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x00000020}, 113188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x0000007d}, 113288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x0000007e}, 113388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x0000007f}, 113488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x00007ffd}, 113588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x00007ffe}, 113688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x00007fff}, 113788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x33333333}, 113888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x55555555}, 113988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x7ffffffd}, 114088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x7ffffffe}, 114188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x7fffffff}, 114288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x80000000}, 114388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0x80000001}, 114488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xaaaaaaaa}, 114588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xcccccccc}, 114688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffff8000}, 114788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffff8001}, 114888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffff8002}, 114988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffff8003}, 115088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffffff80}, 115188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffffff81}, 115288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffffff82}, 115388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffffff83}, 115488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffffffe0}, 115588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xfffffffd}, 115688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xfffffffe}, 115788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xfffffffe, 0xffffffff}, 115888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x00000000}, 115988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x00000001}, 116088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x00000002}, 116188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x00000020}, 116288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x0000007d}, 116388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x0000007e}, 116488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x0000007f}, 116588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x00007ffd}, 116688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x00007ffe}, 116788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x00007fff}, 116888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x33333333}, 116988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x55555555}, 117088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x7ffffffd}, 117188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x7ffffffe}, 117288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x7fffffff}, 117388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x80000000}, 117488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0x80000001}, 117588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xaaaaaaaa}, 117688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xcccccccc}, 117788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffff8000}, 117888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffff8001}, 117988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffff8002}, 118088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffff8003}, 118188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffffff80}, 118288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffffff81}, 118388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffffff82}, 118488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffffff83}, 118588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffffffe0}, 118688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xfffffffd}, 118788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xfffffffe}, 118888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xffffffff, 0xffffffff}}; 118988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 119088c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstatic const Inputs kModifiedImmediate[] = {{NoFlag, 0xabababab, 0x00000000}, 119188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x00000001}, 119288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x00000002}, 119388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x00000020}, 119488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x0000007d}, 119588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x0000007e}, 119688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x0000007f}, 119788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x00007ffd}, 119888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x00007ffe}, 119988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x00007fff}, 120088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x33333333}, 120188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x55555555}, 120288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x7ffffffd}, 120388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x7ffffffe}, 120488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x7fffffff}, 120588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x80000000}, 120688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0x80000001}, 120788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xaaaaaaaa}, 120888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xcccccccc}, 120988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffff8000}, 121088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffff8001}, 121188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffff8002}, 121288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffff8003}, 121388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffffff80}, 121488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffffff81}, 121588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffffff82}, 121688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffffff83}, 121788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffffffe0}, 121888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xfffffffd}, 121988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xfffffffe}, 122088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois {NoFlag, 0xabababab, 0xffffffff}}; 122188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 122219c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois 122388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// A loop will be generated for each element of this array. 12241d451fce2580f360ef249893135526156985a85cPierre Langloisconst TestLoopData kTests[] = {{{eq, r0, r0, 0x000000ab}, 12251d451fce2580f360ef249893135526156985a85cPierre Langlois "eq r0 r0 0x000000ab", 12261d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_eq_r0_r0_0x000000ab", 12271d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12281d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12291d451fce2580f360ef249893135526156985a85cPierre Langlois {{ne, r0, r0, 0x000000ab}, 12301d451fce2580f360ef249893135526156985a85cPierre Langlois "ne r0 r0 0x000000ab", 12311d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_ne_r0_r0_0x000000ab", 12321d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12331d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12341d451fce2580f360ef249893135526156985a85cPierre Langlois {{cs, r0, r0, 0x000000ab}, 12351d451fce2580f360ef249893135526156985a85cPierre Langlois "cs r0 r0 0x000000ab", 12361d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_cs_r0_r0_0x000000ab", 12371d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12381d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12391d451fce2580f360ef249893135526156985a85cPierre Langlois {{cc, r0, r0, 0x000000ab}, 12401d451fce2580f360ef249893135526156985a85cPierre Langlois "cc r0 r0 0x000000ab", 12411d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_cc_r0_r0_0x000000ab", 12421d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12431d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12441d451fce2580f360ef249893135526156985a85cPierre Langlois {{mi, r0, r0, 0x000000ab}, 12451d451fce2580f360ef249893135526156985a85cPierre Langlois "mi r0 r0 0x000000ab", 12461d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_mi_r0_r0_0x000000ab", 12471d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12481d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12491d451fce2580f360ef249893135526156985a85cPierre Langlois {{pl, r0, r0, 0x000000ab}, 12501d451fce2580f360ef249893135526156985a85cPierre Langlois "pl r0 r0 0x000000ab", 12511d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_pl_r0_r0_0x000000ab", 12521d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12531d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12541d451fce2580f360ef249893135526156985a85cPierre Langlois {{vs, r0, r0, 0x000000ab}, 12551d451fce2580f360ef249893135526156985a85cPierre Langlois "vs r0 r0 0x000000ab", 12561d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_vs_r0_r0_0x000000ab", 12571d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12581d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12591d451fce2580f360ef249893135526156985a85cPierre Langlois {{vc, r0, r0, 0x000000ab}, 12601d451fce2580f360ef249893135526156985a85cPierre Langlois "vc r0 r0 0x000000ab", 12611d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_vc_r0_r0_0x000000ab", 12621d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12631d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12641d451fce2580f360ef249893135526156985a85cPierre Langlois {{hi, r0, r0, 0x000000ab}, 12651d451fce2580f360ef249893135526156985a85cPierre Langlois "hi r0 r0 0x000000ab", 12661d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_hi_r0_r0_0x000000ab", 12671d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12681d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12691d451fce2580f360ef249893135526156985a85cPierre Langlois {{ls, r0, r0, 0x000000ab}, 12701d451fce2580f360ef249893135526156985a85cPierre Langlois "ls r0 r0 0x000000ab", 12711d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_ls_r0_r0_0x000000ab", 12721d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12731d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12741d451fce2580f360ef249893135526156985a85cPierre Langlois {{ge, r0, r0, 0x000000ab}, 12751d451fce2580f360ef249893135526156985a85cPierre Langlois "ge r0 r0 0x000000ab", 12761d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_ge_r0_r0_0x000000ab", 12771d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12781d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12791d451fce2580f360ef249893135526156985a85cPierre Langlois {{lt, r0, r0, 0x000000ab}, 12801d451fce2580f360ef249893135526156985a85cPierre Langlois "lt r0 r0 0x000000ab", 12811d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_lt_r0_r0_0x000000ab", 12821d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12831d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12841d451fce2580f360ef249893135526156985a85cPierre Langlois {{gt, r0, r0, 0x000000ab}, 12851d451fce2580f360ef249893135526156985a85cPierre Langlois "gt r0 r0 0x000000ab", 12861d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_gt_r0_r0_0x000000ab", 12871d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12881d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12891d451fce2580f360ef249893135526156985a85cPierre Langlois {{le, r0, r0, 0x000000ab}, 12901d451fce2580f360ef249893135526156985a85cPierre Langlois "le r0 r0 0x000000ab", 12911d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_le_r0_r0_0x000000ab", 12921d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12931d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12941d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x000000ab}, 12951d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x000000ab", 12961d451fce2580f360ef249893135526156985a85cPierre Langlois "Condition_al_r0_r0_0x000000ab", 12971d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kCondition), 12981d451fce2580f360ef249893135526156985a85cPierre Langlois kCondition}, 12991d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r4, r4, 0x02ac0000}, 13001d451fce2580f360ef249893135526156985a85cPierre Langlois "al r4 r4 0x02ac0000", 13011d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r4_r4_0x02ac0000", 13021d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13031d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13041d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xf000000f}, 13051d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xf000000f", 13061d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r0_r0_0xf000000f", 13071d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13081d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13091d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r1, r1, 0x00000ff0}, 13101d451fce2580f360ef249893135526156985a85cPierre Langlois "al r1 r1 0x00000ff0", 13111d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r1_r1_0x00000ff0", 13121d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13131d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13141d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r9, r9, 0x0ff00000}, 13151d451fce2580f360ef249893135526156985a85cPierre Langlois "al r9 r9 0x0ff00000", 13161d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r9_r9_0x0ff00000", 13171d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13181d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13191d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r14, r14, 0xf000000f}, 13201d451fce2580f360ef249893135526156985a85cPierre Langlois "al r14 r14 0xf000000f", 13211d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r14_r14_0xf000000f", 13221d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13231d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13241d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r1, r1, 0x00ab0000}, 13251d451fce2580f360ef249893135526156985a85cPierre Langlois "al r1 r1 0x00ab0000", 13261d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r1_r1_0x00ab0000", 13271d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13281d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13291d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r10, r10, 0x00002ac0}, 13301d451fce2580f360ef249893135526156985a85cPierre Langlois "al r10 r10 0x00002ac0", 13311d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r10_r10_0x00002ac0", 13321d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13331d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13341d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r6, r6, 0x0002ac00}, 13351d451fce2580f360ef249893135526156985a85cPierre Langlois "al r6 r6 0x0002ac00", 13361d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r6_r6_0x0002ac00", 13371d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13381d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13391d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r3, r3, 0xac000002}, 13401d451fce2580f360ef249893135526156985a85cPierre Langlois "al r3 r3 0xac000002", 13411d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r3_r3_0xac000002", 13421d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13431d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13441d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r6, r6, 0x00000ab0}, 13451d451fce2580f360ef249893135526156985a85cPierre Langlois "al r6 r6 0x00000ab0", 13461d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsRn_al_r6_r6_0x00000ab0", 13471d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsRn), 13481d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsRn}, 13491d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r4, r10, 0xac000002}, 13501d451fce2580f360ef249893135526156985a85cPierre Langlois "al r4 r10 0xac000002", 13511d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r4_r10_0xac000002", 13521d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13531d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13541d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r4, 0xc000003f}, 13551d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r4 0xc000003f", 13561d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r0_r4_0xc000003f", 13571d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13581d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13591d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r8, r0, 0xc000003f}, 13601d451fce2580f360ef249893135526156985a85cPierre Langlois "al r8 r0 0xc000003f", 13611d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r8_r0_0xc000003f", 13621d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13631d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13641d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r5, r0, 0x00ab0000}, 13651d451fce2580f360ef249893135526156985a85cPierre Langlois "al r5 r0 0x00ab0000", 13661d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r5_r0_0x00ab0000", 13671d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13681d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13691d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r8, r14, 0x002ac000}, 13701d451fce2580f360ef249893135526156985a85cPierre Langlois "al r8 r14 0x002ac000", 13711d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r8_r14_0x002ac000", 13721d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13731d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13741d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r2, r11, 0x0002ac00}, 13751d451fce2580f360ef249893135526156985a85cPierre Langlois "al r2 r11 0x0002ac00", 13761d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r2_r11_0x0002ac00", 13771d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13781d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13791d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r1, r0, 0x0000ff00}, 13801d451fce2580f360ef249893135526156985a85cPierre Langlois "al r1 r0 0x0000ff00", 13811d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r1_r0_0x0000ff00", 13821d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13831d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13841d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r1, r7, 0x003fc000}, 13851d451fce2580f360ef249893135526156985a85cPierre Langlois "al r1 r7 0x003fc000", 13861d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r1_r7_0x003fc000", 13871d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13881d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13891d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r11, r8, 0x0ab00000}, 13901d451fce2580f360ef249893135526156985a85cPierre Langlois "al r11 r8 0x0ab00000", 13911d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r11_r8_0x0ab00000", 13921d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13931d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13941d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r14, r12, 0x3fc00000}, 13951d451fce2580f360ef249893135526156985a85cPierre Langlois "al r14 r12 0x3fc00000", 13961d451fce2580f360ef249893135526156985a85cPierre Langlois "RdIsNotRn_al_r14_r12_0x3fc00000", 13971d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kRdIsNotRn), 13981d451fce2580f360ef249893135526156985a85cPierre Langlois kRdIsNotRn}, 13991d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x00000000}, 14001d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x00000000", 14011d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x00000000", 14021d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14031d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14041d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x000000ff}, 14051d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x000000ff", 14061d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x000000ff", 14071d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14081d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14091d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xc000003f}, 14101d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xc000003f", 14111d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xc000003f", 14121d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14131d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14141d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xf000000f}, 14151d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xf000000f", 14161d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xf000000f", 14171d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14181d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14191d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xfc000003}, 14201d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xfc000003", 14211d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xfc000003", 14221d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14231d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14241d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xff000000}, 14251d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xff000000", 14261d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xff000000", 14271d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14281d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14291d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x3fc00000}, 14301d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x3fc00000", 14311d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x3fc00000", 14321d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14331d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14341d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x0ff00000}, 14351d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x0ff00000", 14361d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x0ff00000", 14371d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14381d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14391d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x03fc0000}, 14401d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x03fc0000", 14411d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x03fc0000", 14421d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14431d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14441d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x00ff0000}, 14451d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x00ff0000", 14461d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x00ff0000", 14471d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14481d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14491d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x003fc000}, 14501d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x003fc000", 14511d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x003fc000", 14521d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14531d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14541d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x000ff000}, 14551d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x000ff000", 14561d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x000ff000", 14571d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14581d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14591d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x0003fc00}, 14601d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x0003fc00", 14611d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x0003fc00", 14621d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14631d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14641d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x0000ff00}, 14651d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x0000ff00", 14661d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x0000ff00", 14671d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14681d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14691d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x00003fc0}, 14701d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x00003fc0", 14711d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x00003fc0", 14721d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14731d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14741d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x00000ff0}, 14751d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x00000ff0", 14761d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x00000ff0", 14771d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14781d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14791d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x000003fc}, 14801d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x000003fc", 14811d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x000003fc", 14821d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14831d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14841d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x000000ab}, 14851d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x000000ab", 14861d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x000000ab", 14871d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14881d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14891d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xc000002a}, 14901d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xc000002a", 14911d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xc000002a", 14921d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14931d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14941d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xb000000a}, 14951d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xb000000a", 14961d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xb000000a", 14971d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 14981d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 14991d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xac000002}, 15001d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xac000002", 15011d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xac000002", 15021d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15031d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15041d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0xab000000}, 15051d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0xab000000", 15061d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0xab000000", 15071d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15081d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15091d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x2ac00000}, 15101d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x2ac00000", 15111d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x2ac00000", 15121d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15131d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15141d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x0ab00000}, 15151d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x0ab00000", 15161d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x0ab00000", 15171d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15181d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15191d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x02ac0000}, 15201d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x02ac0000", 15211d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x02ac0000", 15221d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15231d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15241d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x00ab0000}, 15251d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x00ab0000", 15261d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x00ab0000", 15271d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15281d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15291d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x002ac000}, 15301d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x002ac000", 15311d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x002ac000", 15321d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15331d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15341d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x000ab000}, 15351d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x000ab000", 15361d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x000ab000", 15371d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15381d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15391d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x0002ac00}, 15401d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x0002ac00", 15411d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x0002ac00", 15421d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15431d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15441d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x0000ab00}, 15451d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x0000ab00", 15461d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x0000ab00", 15471d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15481d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15491d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x00002ac0}, 15501d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x00002ac0", 15511d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x00002ac0", 15521d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15531d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15541d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x00000ab0}, 15551d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x00000ab0", 15561d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x00000ab0", 15571d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15581d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}, 15591d451fce2580f360ef249893135526156985a85cPierre Langlois {{al, r0, r0, 0x000002ac}, 15601d451fce2580f360ef249893135526156985a85cPierre Langlois "al r0 r0 0x000002ac", 15611d451fce2580f360ef249893135526156985a85cPierre Langlois "ModifiedImmediate_al_r0_r0_0x000002ac", 15621d451fce2580f360ef249893135526156985a85cPierre Langlois ARRAY_SIZE(kModifiedImmediate), 15631d451fce2580f360ef249893135526156985a85cPierre Langlois kModifiedImmediate}}; 156488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 156588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// We record all inputs to the instructions as outputs. This way, we also check 156688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// that what shouldn't change didn't change. 156788c46b84df005638546de5e4e965bdcc31352f48Pierre Langloisstruct TestResult { 156888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois size_t output_size; 156988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois const Inputs* outputs; 157088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois}; 157188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 157288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// These headers each contain an array of `TestResult` with the reference output 157388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// values. The reference arrays are names `kReference{mnemonic}`. 1574d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-adc.h" 1575d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-adcs.h" 1576d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-add.h" 1577d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-adds.h" 1578d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-and.h" 1579d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-ands.h" 1580d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-bic.h" 1581d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-bics.h" 1582d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-eor.h" 1583d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-eors.h" 1584d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-orr.h" 1585d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-orrs.h" 1586d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-rsb.h" 1587d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-rsbs.h" 1588d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-rsc.h" 1589d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-rscs.h" 1590d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-sbc.h" 1591d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-sbcs.h" 1592d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-sub.h" 1593d3832965c62a8ad461b9ea9eb0994ca6b0a3da2cAlexandre Rames#include "aarch32/traces/simulator-cond-rd-rn-operand-const-a32-subs.h" 159488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 159519c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois 159688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// The maximum number of errors to report in detail for each test. 15971d451fce2580f360ef249893135526156985a85cPierre Langloisconst unsigned kErrorReportLimit = 8; 159888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 159919c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langloistypedef void (MacroAssembler::*Fn)(Condition cond, 160019c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois Register rd, 160119c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois Register rn, 160288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois const Operand& op); 160388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 160428ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langloisvoid TestHelper(Fn instruction, 160528ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois const char* mnemonic, 160628ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois const TestResult reference[]) { 160788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois SETUP(); 160810dae1a549308bddc1931f29754d6a4459f70c9bJacob Bramley masm.UseA32(); 160988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois START(); 161088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 161188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Data to compare to `reference`. 161288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois TestResult* results[ARRAY_SIZE(kTests)]; 161388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 161488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Test cases for memory bound instructions may allocate a buffer and save its 161588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // address in this array. 161688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois byte* scratch_memory_buffers[ARRAY_SIZE(kTests)]; 161788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 161888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Generate a loop for each element in `kTests`. Each loop tests one specific 161988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // instruction. 162088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) { 162188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Allocate results on the heap for this test. 162288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois results[i] = new TestResult; 162388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois results[i]->outputs = new Inputs[kTests[i].input_size]; 162488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois results[i]->output_size = kTests[i].input_size; 162588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 1626f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois size_t input_stride = sizeof(kTests[i].inputs[0]) * kTests[i].input_size; 1627f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois VIXL_ASSERT(IsUint32(input_stride)); 162888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 162988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois scratch_memory_buffers[i] = NULL; 163088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 163188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Label loop; 163288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois UseScratchRegisterScope scratch_registers(&masm); 163388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Include all registers from r0 ro r12. 163488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois scratch_registers.Include(RegisterList(0x1fff)); 163588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 163688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Values to pass to the macro-assembler. 163788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Condition cond = kTests[i].operands.cond; 163888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register rd = kTests[i].operands.rd; 163988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register rn = kTests[i].operands.rn; 164088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t immediate = kTests[i].operands.immediate; 164188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Operand op(immediate); 164288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois scratch_registers.Exclude(rd); 164388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois scratch_registers.Exclude(rn); 164488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 164588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Allocate reserved registers for our own use. 164688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register input_ptr = scratch_registers.Acquire(); 164788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register input_end = scratch_registers.Acquire(); 164888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register result_ptr = scratch_registers.Acquire(); 164988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 165088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Initialize `input_ptr` to the first element and `input_end` the address 165188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // after the array. 1652f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois __ Mov(input_ptr, Operand::From(kTests[i].inputs)); 1653f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois __ Add(input_end, input_ptr, static_cast<uint32_t>(input_stride)); 1654f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois __ Mov(result_ptr, Operand::From(results[i]->outputs)); 165588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Bind(&loop); 165688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 165788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois { 165888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois UseScratchRegisterScope temp_registers(&masm); 165988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register nzcv_bits = temp_registers.Acquire(); 166088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register saved_q_bit = temp_registers.Acquire(); 166188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Save the `Q` bit flag. 166288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Mrs(saved_q_bit, APSR); 166388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ And(saved_q_bit, saved_q_bit, QFlag); 166488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Set the `NZCV` and `Q` flags together. 166588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Ldr(nzcv_bits, MemOperand(input_ptr, offsetof(Inputs, apsr))); 166688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Orr(nzcv_bits, nzcv_bits, saved_q_bit); 166788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Msr(APSR_nzcvq, nzcv_bits); 166888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 166988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Ldr(rd, MemOperand(input_ptr, offsetof(Inputs, rd))); 167088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Ldr(rn, MemOperand(input_ptr, offsetof(Inputs, rn))); 167188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 167288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois (masm.*instruction)(cond, rd, rn, op); 167388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 167488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois { 167588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois UseScratchRegisterScope temp_registers(&masm); 167688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois Register nzcv_bits = temp_registers.Acquire(); 167788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Mrs(nzcv_bits, APSR); 167888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Only record the NZCV bits. 167988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ And(nzcv_bits, nzcv_bits, NZCVFlag); 168088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Str(nzcv_bits, MemOperand(result_ptr, offsetof(Inputs, apsr))); 168188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 168288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Str(rd, MemOperand(result_ptr, offsetof(Inputs, rd))); 168388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Str(rn, MemOperand(result_ptr, offsetof(Inputs, rn))); 168488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 168588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Advance the result pointer. 1686f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois __ Add(result_ptr, result_ptr, Operand::From(sizeof(kTests[i].inputs[0]))); 168788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Loop back until `input_ptr` is lower than `input_base`. 1688f5348cedd702124c90fc75e75d0195e2e485c620Pierre Langlois __ Add(input_ptr, input_ptr, Operand::From(sizeof(kTests[i].inputs[0]))); 168988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ Cmp(input_ptr, input_end); 169088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois __ B(ne, &loop); 169188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 169288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 169388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois END(); 169488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 169588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois RUN(); 169688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 169788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois if (Test::generate_test_trace()) { 169888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Print the results. 169988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) { 17001d451fce2580f360ef249893135526156985a85cPierre Langlois printf("const Inputs kOutputs_%s_%s[] = {\n", 170119c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois mnemonic, 170288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois kTests[i].identifier); 170388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois for (size_t j = 0; j < results[i]->output_size; j++) { 170488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" { "); 170588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, results[i]->outputs[j].apsr); 170688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 170788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, results[i]->outputs[j].rd); 170888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 170988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, results[i]->outputs[j].rn); 171088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" },\n"); 171188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 171288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("};\n"); 171388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 17141d451fce2580f360ef249893135526156985a85cPierre Langlois printf("const TestResult kReference%s[] = {\n", mnemonic); 171588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) { 171688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" {\n"); 171719c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois printf(" ARRAY_SIZE(kOutputs_%s_%s),\n", 171819c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois mnemonic, 171988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois kTests[i].identifier); 172088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" kOutputs_%s_%s,\n", mnemonic, kTests[i].identifier); 172188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" },\n"); 172288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 172388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("};\n"); 172454fce717d9371fa2e8fc46e1d811bdb4ab74f279Alexandre Rames } else if (kCheckSimulatorTestResults) { 172588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Check the results. 172688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois unsigned total_error_count = 0; 172788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) { 172888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois bool instruction_has_errors = false; 172988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois for (size_t j = 0; j < kTests[i].input_size; j++) { 173088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t apsr = results[i]->outputs[j].apsr; 173188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rd = results[i]->outputs[j].rd; 173288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rn = results[i]->outputs[j].rn; 173388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t apsr_input = kTests[i].inputs[j].apsr; 173488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rd_input = kTests[i].inputs[j].rd; 173588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rn_input = kTests[i].inputs[j].rn; 173688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t apsr_ref = reference[i].outputs[j].apsr; 173788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rd_ref = reference[i].outputs[j].rd; 173888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois uint32_t rn_ref = reference[i].outputs[j].rn; 173988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 174088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois if (((apsr != apsr_ref) || (rd != rd_ref) || (rn != rn_ref)) && 174188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois (++total_error_count <= kErrorReportLimit)) { 174288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Print the instruction once even if it triggered multiple failures. 174388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois if (!instruction_has_errors) { 174419c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois printf("Error(s) when testing \"%s %s\":\n", 174519c0535d3c9c0bec6eeecce0ae704a7fd527a9d8Pierre Langlois mnemonic, 174688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois kTests[i].operands_description); 174788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois instruction_has_errors = true; 174888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 174988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois // Print subsequent errors. 175088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" Input: "); 175188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, apsr_input); 175288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 175388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, rd_input); 175488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 175588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, rn_input); 175688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("\n"); 175788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" Expected: "); 175888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, apsr_ref); 175988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 176088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, rd_ref); 176188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 176288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, rn_ref); 176388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("\n"); 176488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(" Found: "); 176588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, apsr); 176688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 176788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, rd); 176888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf(", "); 176988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("0x%08" PRIx32, rn); 177088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("\n\n"); 177188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 177288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 177388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 177488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 177588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois if (total_error_count > kErrorReportLimit) { 177688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois printf("%u other errors follow.\n", 177788c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois total_error_count - kErrorReportLimit); 177888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 177988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois VIXL_CHECK(total_error_count == 0); 178054fce717d9371fa2e8fc46e1d811bdb4ab74f279Alexandre Rames } else { 178154fce717d9371fa2e8fc46e1d811bdb4ab74f279Alexandre Rames VIXL_WARNING("Assembled the code, but did not run anything.\n"); 178288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 178388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 178488c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) { 178588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois delete[] results[i]->outputs; 178688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois delete results[i]; 1787ec4fdd22abecf1b8f52ee9dbff596ebdded9b5d6Serban Constantinescu delete[] scratch_memory_buffers[i]; 178888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } 178988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 179088c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois TEARDOWN(); 179188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois} 179288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 179388c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois// Instantiate tests for each instruction in the list. 179428ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois// TODO: Remove this limitation by having a sandboxing mechanism. 179528ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois#if defined(VIXL_HOST_POINTER_32) 179688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#define TEST(mnemonic) \ 17971d451fce2580f360ef249893135526156985a85cPierre Langlois void Test_##mnemonic() { \ 179888c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \ 179988c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois } \ 18001d451fce2580f360ef249893135526156985a85cPierre Langlois Test test_##mnemonic( \ 180188c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois "AARCH32_SIMULATOR_COND_RD_RN_OPERAND_CONST_A32_" #mnemonic, \ 180288c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois &Test_##mnemonic); 180328ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois#else 180428ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois#define TEST(mnemonic) \ 180528ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois void Test_##mnemonic() { \ 180628ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois VIXL_WARNING("This test can only run on a 32-bit host.\n"); \ 180728ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois USE(TestHelper); \ 180828ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois } \ 180928ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois Test test_##mnemonic( \ 181028ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois "AARCH32_SIMULATOR_COND_RD_RN_OPERAND_CONST_A32_" #mnemonic, \ 181128ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois &Test_##mnemonic); 181228ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois#endif 181328ee02e59261f0aaa4824953fa3db5dd8f7f8dcfPierre Langlois 181488c46b84df005638546de5e4e965bdcc31352f48Pierre LangloisFOREACH_INSTRUCTION(TEST) 181588c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois#undef TEST 181688c46b84df005638546de5e4e965bdcc31352f48Pierre Langlois 18171d451fce2580f360ef249893135526156985a85cPierre Langlois} // namespace 18189a9331faeba996d6c85e6e2a6355ccfc22c6cab6Rodolph Perfetta#endif 18191d451fce2580f360ef249893135526156985a85cPierre Langlois 18201d451fce2580f360ef249893135526156985a85cPierre Langlois} // namespace aarch32 18211d451fce2580f360ef249893135526156985a85cPierre Langlois} // namespace vixl 1822