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