14d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// Copyright 2016, VIXL authors
24d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// All rights reserved.
34d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//
44d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// Redistribution and use in source and binary forms, with or without
54d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// modification, are permitted provided that the following conditions are met:
64d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//
74d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//   * Redistributions of source code must retain the above copyright notice,
84d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//     this list of conditions and the following disclaimer.
94d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//   * Redistributions in binary form must reproduce the above copyright notice,
104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//     this list of conditions and the following disclaimer in the documentation
114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//     and/or other materials provided with the distribution.
124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//   * Neither the name of ARM Limited nor the names of its contributors may be
134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//     used to endorse or promote products derived from this software without
144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//     specific prior written permission.
154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//
164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// -----------------------------------------------------------------------------
294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// This file is auto generated from the
304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// test/aarch32/config/template-simulator-aarch32.cc.in template file using
314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// tools/generate_tests.py.
324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois//
334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// PLEASE DO NOT EDIT.
344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// -----------------------------------------------------------------------------
354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#include "test-runner.h"
384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#include "test-utils.h"
404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#include "test-utils-aarch32.h"
414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#include "aarch32/assembler-aarch32.h"
434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#include "aarch32/disasm-aarch32.h"
441bce007699e07bd855b7d194ca93fa5504a73edaPierre Langlois#include "aarch32/macro-assembler-aarch32.h"
454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define __ masm.
474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define BUF_SIZE (4096)
484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// Run tests with the simulator.
514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define SETUP() MacroAssembler masm(BUF_SIZE)
534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define START() masm.GetBuffer()->Reset()
554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define END() \
574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Hlt(0);  \
584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ FinalizeCode();
594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// TODO: Run the tests in the simulator.
614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define RUN()
624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#else  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32.
644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define SETUP()                  \
664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  MacroAssembler masm(BUF_SIZE); \
674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  UseScratchRegisterScope harness_scratch;
684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define START()                 \
704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  harness_scratch.Open(&masm);  \
714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  harness_scratch.ExcludeAll(); \
724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  masm.GetBuffer()->Reset();    \
734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r4);                  \
744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r5);                  \
754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r6);                  \
764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r7);                  \
774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r8);                  \
784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r9);                  \
794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r10);                 \
804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(r11);                 \
814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Push(lr);                  \
824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  harness_scratch.Include(ip);
834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define END()                  \
854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  harness_scratch.Exclude(ip); \
864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(lr);                  \
874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r11);                 \
884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r10);                 \
894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r9);                  \
904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r8);                  \
914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r7);                  \
924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r6);                  \
934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r5);                  \
944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Pop(r4);                  \
954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ Bx(lr);                   \
964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  __ FinalizeCode();           \
974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  harness_scratch.Close();
984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define RUN()                                                 \
1004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  {                                                           \
1014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    int pcs_offset = masm.IsUsingT32() ? 1 : 0;               \
1024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    masm.GetBuffer()->SetExecutable();                        \
1034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    ExecuteMemory(masm.GetBuffer()->GetStartAddress<byte*>(), \
1044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                  masm.GetSizeOfCodeGenerated(),              \
1054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                  pcs_offset);                                \
1064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    masm.GetBuffer()->SetWritable();                          \
1074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  }
1084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#endif  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
1104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisnamespace vixl {
1124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisnamespace aarch32 {
1134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// List of instruction encodings:
1154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define FOREACH_INSTRUCTION(M) \
1164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  M(Vadd)                      \
1174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  M(Vsub)
1184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// The following definitions are defined again in each generated test, therefore
1214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// we need to place them in an anomymous namespace. It expresses that they are
1224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// local to this file only, and the compiler is not allowed to share these types
1234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// across test files during template instantiation. Specifically, `Operands` and
1244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// `Inputs` have various layouts across generated tests so they absolutely
1254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// cannot be shared.
1264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#ifdef VIXL_INCLUDE_TARGET_A32
1284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisnamespace {
1294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// Values to be passed to the assembler to produce the instruction under test.
1314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisstruct Operands {
1324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  DataType dt;
1334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  DRegister rd;
1344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  DRegister rn;
1354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  DRegister rm;
1364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois};
1374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// Input data to feed to the instruction.
1394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisstruct Inputs {
1404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  uint32_t fpscr;
1414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  uint64_t rd;
1424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  uint64_t rn;
1434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  uint64_t rm;
1444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois};
1454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// This structure contains all input data needed to test one specific encoding.
1474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// It used to generate a loop over an instruction.
1484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisstruct TestLoopData {
1494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // The `operands` fields represents the values to pass to the assembler to
1504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // produce the instruction.
1514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  Operands operands;
1524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // Description of the operands, used for error reporting.
1534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  const char* operands_description;
1544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // Unique identifier, used for generating traces.
1554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  const char* identifier;
1564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // Array of values to be fed to the instruction.
1574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  size_t input_size;
1584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  const Inputs* inputs;
1594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois};
1604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
1614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisstatic const Inputs kFloats[] =
1624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    {{0x0, 0x3fefffffffffffff, 0x000fffffffffffff, 0xfff0000000000000},
1634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xffefffffffffffff, 0xbfe0000000000000, 0x3ff0000000000000},
1644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0x3ff0000000000001, 0x0000000000000000},
1654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000000, 0x4024000000000000, 0x4024000000000000},
1664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000000, 0x3fdfffffffffffff, 0x0000000000000000},
1674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fefffffffffffff, 0x7fefffffffffffff, 0xfff0000000000000},
1684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000000, 0xc024000000000000, 0x7ff123456789abcd},
1694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0x3ff0000000000001, 0xbff0000000000001},
1704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000001, 0x0000000000000000, 0x3fdfffffffffffff},
1714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8000000000000000, 0xfff123456789abcd, 0xfff0000000000000},
1724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff923456789abcd, 0xc024000000000000, 0x3ff0000000000000},
1734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0x3ff8000000000000, 0x3fdfffffffffffff},
1744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff923456789abcd, 0x3ff0000000000001, 0x8000000000000001},
1754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0x0000000000000001, 0xbff0000000000000},
1764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fefffffffffffff, 0x3fdfffffffffffff, 0xfff0000000000000},
1774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000001, 0x800fffffffffffff, 0xfff123456789abcd},
1784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xffefffffffffffff, 0x3ff0000000000001, 0x800fffffffffffff},
1794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0xbfe0000000000001, 0xbfe0000000000000},
1804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0x0000000000000000, 0xbff0000000000000},
1814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0x8000000000000001, 0x7ff0000000000000},
1824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fdfffffffffffff, 0xbfdfffffffffffff, 0x3fe0000000000001},
1834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x4024000000000000, 0x000fffffffffffff, 0x7ff923456789abcd},
1844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff8000000000000, 0xbfe0000000000001, 0x3ff0000000000001},
1854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7fefffffffffffff, 0xbfe0000000000001, 0x3ff0000000000000},
1864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7fefffffffffffff, 0xbfe0000000000001, 0xfff123456789abcd},
1874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff8000000000000, 0x7ff0000000000000, 0x7fefffffffffffff},
1884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000000, 0x7ff123456789abcd, 0x800123456789abcd},
1894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff0000000000001, 0xffefffffffffffff, 0xfff923456789abcd},
1904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000000, 0x0000000000000001, 0x3ff8000000000000},
1914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x800123456789abcd, 0xbfe0000000000001, 0x8000000000000000},
1924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000000, 0x3fe0000000000000, 0x3ff8000000000000},
1934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8010000000000000, 0x0010000000000000, 0x8010000000000000},
1944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000001, 0x7ff923456789abcd, 0x000123456789abcd},
1954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000001, 0x3ff8000000000000, 0xbfe0000000000001},
1964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfefffffffffffff, 0x0000000000000001, 0x0010000000000000},
1974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfefffffffffffff, 0xbfdfffffffffffff, 0xbff8000000000000},
1984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000000, 0x3ff0000000000000, 0x3fe0000000000001},
1994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000000, 0xffefffffffffffff, 0x3fefffffffffffff},
2004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff8000000000000, 0x7ff8000000000000, 0x7ff0000000000000},
2014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x4024000000000000, 0xbfefffffffffffff, 0xfff8000000000000},
2024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000000, 0x000123456789abcd, 0x3fe0000000000000},
2034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7fefffffffffffff, 0x3fe0000000000001, 0xfff0000000000000},
2044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfefffffffffffff, 0x000123456789abcd, 0x800fffffffffffff},
2054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff8000000000000, 0x8000000000000001, 0x7fefffffffffffff},
2064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff8000000000000, 0x3ff0000000000001, 0xfff123456789abcd},
2074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0x0000000000000000, 0xbfefffffffffffff},
2084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7fefffffffffffff, 0xfff0000000000000, 0xbff0000000000000},
2094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0x3fe0000000000000, 0x7ff123456789abcd},
2104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff0000000000000, 0x3ff0000000000000, 0x8000000000000001},
2114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff8000000000000, 0x4024000000000000, 0x3ff8000000000000},
2124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff923456789abcd, 0xbff8000000000000, 0x000fffffffffffff},
2134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x800123456789abcd, 0x0000000000000001, 0x4024000000000000},
2144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000000, 0xfff923456789abcd, 0x0000000000000000},
2154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff0000000000000, 0xfff8000000000000, 0xbfefffffffffffff},
2164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8000000000000000, 0x0000000000000001, 0x3fefffffffffffff},
2174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff8000000000000, 0xbff0000000000000, 0x7ff8000000000000},
2184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fdfffffffffffff, 0x8000000000000001, 0x3fdfffffffffffff},
2194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8010000000000000, 0x0000000000000001, 0x000123456789abcd},
2204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0x000fffffffffffff, 0xbfe0000000000001},
2214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff8000000000000, 0xbff0000000000001, 0x7ff0000000000000},
2224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfdfffffffffffff, 0x7ff123456789abcd, 0x4024000000000000},
2234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff8000000000000, 0xbff0000000000000, 0xbfdfffffffffffff},
2244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000123456789abcd, 0x3fefffffffffffff, 0x0000000000000000},
2254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x800fffffffffffff, 0xc024000000000000, 0x0000000000000001},
2264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff8000000000000, 0xbfe0000000000000, 0x8010000000000000},
2274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fdfffffffffffff, 0x000fffffffffffff, 0x3fdfffffffffffff},
2284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0x800fffffffffffff, 0x3ff0000000000001},
2294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff8000000000000, 0xfff0000000000000, 0x000fffffffffffff},
2304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fefffffffffffff, 0xbfefffffffffffff, 0x3fe0000000000000},
2314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0xbff0000000000001, 0xbff8000000000000},
2324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0xfff0000000000000, 0xbfe0000000000000},
2334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000000, 0x3fdfffffffffffff, 0x7ff123456789abcd},
2344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff8000000000000, 0xbff8000000000000, 0x000fffffffffffff},
2354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff923456789abcd, 0x7ff0000000000000, 0x7ff923456789abcd},
2364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0x000fffffffffffff, 0x3fe0000000000000},
2374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff923456789abcd, 0xbff0000000000000, 0x8000000000000001},
2384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000001, 0x3ff0000000000000, 0x7fefffffffffffff},
2394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff923456789abcd, 0x3fe0000000000000, 0xc024000000000000},
2404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000000, 0x8010000000000000, 0x000fffffffffffff},
2414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000001, 0x4024000000000000, 0x7fefffffffffffff},
2424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0x0000000000000000, 0xffefffffffffffff},
2434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff8000000000000, 0x3fe0000000000000, 0x800fffffffffffff},
2444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0xbfe0000000000000, 0x7fefffffffffffff},
2454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0xffefffffffffffff, 0x7ff0000000000000},
2464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000001, 0x3ff0000000000001, 0x7ff123456789abcd},
2474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0x8000000000000001, 0x3ff8000000000000},
2484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0x8000000000000001, 0xbfdfffffffffffff},
2494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0x0000000000000000, 0xfff923456789abcd},
2504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fefffffffffffff, 0xbfdfffffffffffff, 0x8000000000000001},
2514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000000, 0xfff123456789abcd, 0xffefffffffffffff},
2524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fefffffffffffff, 0xfff923456789abcd, 0x800123456789abcd},
2534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8010000000000000, 0x3ff0000000000000, 0xc024000000000000},
2544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff123456789abcd, 0x3fe0000000000001, 0x0000000000000001},
2554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0xffefffffffffffff, 0x3fe0000000000001},
2564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0xfff923456789abcd, 0x000fffffffffffff},
2574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x4024000000000000, 0x7ff8000000000000, 0x000123456789abcd},
2584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8010000000000000, 0x8000000000000001, 0xbfe0000000000000},
2594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0x3ff0000000000000, 0x3ff0000000000001},
2604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000000, 0x3fe0000000000000, 0xbff0000000000000},
2614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000001, 0xbfe0000000000000, 0x7ff0000000000000}};
2624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
2634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisstatic const Inputs kFloatsSameRegisters[] =
2644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    {{0x0, 0x8000000000000000, 0xbfdfffffffffffff, 0xbfdfffffffffffff},
2654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000000, 0xfff0000000000000, 0xfff0000000000000},
2664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000001, 0x3fdfffffffffffff, 0x3fdfffffffffffff},
2674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff8000000000000, 0x8000000000000001, 0x8000000000000001},
2684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0x7ff923456789abcd, 0x7ff923456789abcd},
2694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff123456789abcd, 0xfff0000000000000, 0xfff0000000000000},
2704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000001, 0xfff123456789abcd, 0xfff123456789abcd},
2714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0x8000000000000000, 0x8000000000000000},
2724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0x3fe0000000000001, 0x3fe0000000000001},
2734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0x8000000000000001, 0x8000000000000001},
2744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x800fffffffffffff, 0x7ff8000000000000, 0x7ff8000000000000},
2754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x800fffffffffffff, 0xfff8000000000000, 0xfff8000000000000},
2764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0x7ff8000000000000, 0x7ff8000000000000},
2774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0x7fefffffffffffff, 0x7fefffffffffffff},
2784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0xbff0000000000000, 0xbff0000000000000},
2794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0xfff8000000000000, 0xfff8000000000000},
2804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0xbfe0000000000000, 0xbfe0000000000000},
2814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000001, 0x3ff0000000000000, 0x3ff0000000000000},
2824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fdfffffffffffff, 0xbfe0000000000000, 0xbfe0000000000000},
2834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff923456789abcd, 0xfff123456789abcd, 0xfff123456789abcd},
2844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0x800123456789abcd, 0x800123456789abcd},
2854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff8000000000000, 0xbfdfffffffffffff, 0xbfdfffffffffffff},
2864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xffefffffffffffff, 0xbfe0000000000000, 0xbfe0000000000000},
2874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x800123456789abcd, 0xbff0000000000001, 0xbff0000000000001},
2884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000000, 0x800fffffffffffff, 0x800fffffffffffff},
2894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0x3ff8000000000000, 0x3ff8000000000000},
2904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0x7ff0000000000000, 0x7ff0000000000000},
2914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0xfff923456789abcd, 0xfff923456789abcd},
2924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fefffffffffffff, 0xfff0000000000000, 0xfff0000000000000},
2934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0x7ff0000000000000, 0x7ff0000000000000},
2944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000123456789abcd, 0xbfe0000000000001, 0xbfe0000000000001},
2954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff923456789abcd, 0x3fefffffffffffff, 0x3fefffffffffffff},
2964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fdfffffffffffff, 0xbff0000000000001, 0xbff0000000000001},
2974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000123456789abcd, 0xbfe0000000000000, 0xbfe0000000000000},
2984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0xbfefffffffffffff, 0xbfefffffffffffff},
2994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff8000000000000, 0xfff0000000000000, 0xfff0000000000000},
3004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000000, 0xbfdfffffffffffff, 0xbfdfffffffffffff},
3014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0xfff0000000000000, 0xfff0000000000000},
3024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff123456789abcd, 0x3fe0000000000000, 0x3fe0000000000000},
3034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000000, 0xfff0000000000000, 0xfff0000000000000},
3044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fdfffffffffffff, 0xbff8000000000000, 0xbff8000000000000},
3054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000001, 0x3fefffffffffffff, 0x3fefffffffffffff},
3064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000000, 0x7ff0000000000000, 0x7ff0000000000000},
3074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0xffefffffffffffff, 0xffefffffffffffff},
3084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000123456789abcd, 0x3fdfffffffffffff, 0x3fdfffffffffffff},
3094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0x4024000000000000, 0x4024000000000000},
3104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fefffffffffffff, 0xbfdfffffffffffff, 0xbfdfffffffffffff},
3114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0x7ff8000000000000, 0x7ff8000000000000},
3124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000001, 0x7ff8000000000000, 0x7ff8000000000000},
3134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8000000000000000, 0x7fefffffffffffff, 0x7fefffffffffffff},
3144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff123456789abcd, 0xfff0000000000000, 0xfff0000000000000},
3154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0x000fffffffffffff, 0x000fffffffffffff},
3164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff923456789abcd, 0xbff8000000000000, 0xbff8000000000000},
3174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0xbfefffffffffffff, 0xbfefffffffffffff},
3184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff123456789abcd, 0x3ff0000000000000, 0x3ff0000000000000},
3194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff923456789abcd, 0x3ff0000000000001, 0x3ff0000000000001},
3204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0xfff123456789abcd, 0xfff123456789abcd},
3214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0x8010000000000000, 0x8010000000000000},
3224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff923456789abcd, 0xbfdfffffffffffff, 0xbfdfffffffffffff},
3234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8010000000000000, 0x3fe0000000000000, 0x3fe0000000000000},
3244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff123456789abcd, 0x3ff8000000000000, 0x3ff8000000000000},
3254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x800fffffffffffff, 0x000fffffffffffff, 0x000fffffffffffff},
3264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xffefffffffffffff, 0xfff0000000000000, 0xfff0000000000000},
3274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x4024000000000000, 0xbfe0000000000001, 0xbfe0000000000001},
3284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xfff0000000000000, 0xfff923456789abcd, 0xfff923456789abcd},
3294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff123456789abcd, 0xfff0000000000000, 0xfff0000000000000},
3304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8000000000000000, 0x7ff123456789abcd, 0x7ff123456789abcd},
3314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000001, 0xc024000000000000, 0xc024000000000000},
3324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0010000000000000, 0x7ff0000000000000, 0x7ff0000000000000},
3334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000000, 0xbff0000000000000, 0xbff0000000000000},
3344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfdfffffffffffff, 0x8010000000000000, 0x8010000000000000},
3354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff8000000000000, 0x3fe0000000000001, 0x3fe0000000000001},
3364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xffefffffffffffff, 0x8000000000000000, 0x8000000000000000},
3374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000000, 0x7ff8000000000000, 0x7ff8000000000000},
3384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000001, 0xbff8000000000000, 0xbff8000000000000},
3394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000000, 0xbfe0000000000001, 0xbfe0000000000001},
3404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0x7ff0000000000000, 0x7ff0000000000000},
3414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8000000000000001, 0x7fefffffffffffff, 0x7fefffffffffffff},
3424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff923456789abcd, 0xfff0000000000000, 0xfff0000000000000},
3434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8010000000000000, 0x7ff0000000000000, 0x7ff0000000000000},
3444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xc024000000000000, 0x800123456789abcd, 0x800123456789abcd},
3454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff0000000000000, 0xc024000000000000, 0xc024000000000000},
3464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x4024000000000000, 0x0010000000000000, 0x0010000000000000},
3474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff0000000000000, 0x7ff0000000000000, 0x7ff0000000000000},
3484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000001, 0xc024000000000000, 0xc024000000000000},
3494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfdfffffffffffff, 0x7ff0000000000000, 0x7ff0000000000000},
3504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000123456789abcd, 0xfff8000000000000, 0xfff8000000000000},
3514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000001, 0x000123456789abcd, 0x000123456789abcd},
3524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x0000000000000000, 0x7ff123456789abcd, 0x7ff123456789abcd},
3534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff0000000000001, 0x7ff8000000000000, 0x7ff8000000000000},
3544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3fe0000000000001, 0x3ff0000000000001, 0x3ff0000000000001},
3554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff0000000000001, 0x000123456789abcd, 0x000123456789abcd},
3564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x3ff8000000000000, 0x8010000000000000, 0x8010000000000000},
3574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8000000000000000, 0x800fffffffffffff, 0x800fffffffffffff},
3584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff8000000000000, 0x7ff0000000000000, 0x7ff0000000000000},
3594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbff0000000000000, 0xfff8000000000000, 0xfff8000000000000},
3604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x000fffffffffffff, 0xbff8000000000000, 0xbff8000000000000},
3614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x7ff123456789abcd, 0x8010000000000000, 0x8010000000000000},
3624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0x8000000000000000, 0x3fefffffffffffff, 0x3fefffffffffffff},
3634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois     {0x0, 0xbfe0000000000000, 0x7ff0000000000000, 0x7ff0000000000000}};
3644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
3654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
3664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// A loop will be generated for each element of this array.
3674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisconst TestLoopData kTests[] = {{{F64, d3, d31, d11},
3684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d31 d11",
3694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d3_d31_d11",
3704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
3714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
3724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d21, d17, d0},
3734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d21 d17 d0",
3744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d21_d17_d0",
3754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
3764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
3774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d8, d4, d16},
3784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d8 d4 d16",
3794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d8_d4_d16",
3804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
3814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
3824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d11, d29},
3834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d11 d29",
3844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d18_d11_d29",
3854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
3864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
3874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d7, d16},
3884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d7 d16",
3894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d18_d7_d16",
3904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
3914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
3924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d31, d28, d30},
3934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d31 d28 d30",
3944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d31_d28_d30",
3954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
3964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
3974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d27, d4},
3984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d27 d4",
3994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d3_d27_d4",
4004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d16, d17, d25},
4034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d16 d17 d25",
4044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d16_d17_d25",
4054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d12, d16, d21},
4084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d12 d16 d21",
4094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d12_d16_d21",
4104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d13, d3, d9},
4134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d13 d3 d9",
4144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d13_d3_d9",
4154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d14, d15, d9},
4184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d14 d15 d9",
4194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d14_d15_d9",
4204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d23, d3, d9},
4234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d23 d3 d9",
4244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d23_d3_d9",
4254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d8, d5, d4},
4284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d8 d5 d4",
4294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d8_d5_d4",
4304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d28, d10, d8},
4334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d28 d10 d8",
4344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d28_d10_d8",
4354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d8, d28, d11},
4384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d8 d28 d11",
4394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d8_d28_d11",
4404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d2, d23},
4434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d2 d23",
4444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d1_d2_d23",
4454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d27, d26, d30},
4484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d27 d26 d30",
4494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d27_d26_d30",
4504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d22, d7},
4534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d22 d7",
4544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d3_d22_d7",
4554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d19, d24},
4584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d19 d24",
4594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d3_d19_d24",
4604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d27, d30, d22},
4634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d27 d30 d22",
4644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d27_d30_d22",
4654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d27, d25, d7},
4684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d27 d25 d7",
4694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d27_d25_d7",
4704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d21, d8, d10},
4734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d21 d8 d10",
4744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d21_d8_d10",
4754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d28, d17, d14},
4784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d28 d17 d14",
4794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d28_d17_d14",
4804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d5, d24},
4834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d5 d24",
4844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d1_d5_d24",
4854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d12, d17},
4884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d12 d17",
4894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d20_d12_d17",
4904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d29, d10},
4934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d29 d10",
4944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d30_d29_d10",
4954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
4964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
4974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d25, d14, d25},
4984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d25 d14 d25",
4994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d25_d14_d25",
5004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d27, d16},
5034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d27 d16",
5044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d1_d27_d16",
5054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d6, d28, d7},
5084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d6 d28 d7",
5094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d6_d28_d7",
5104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d23, d23, d15},
5134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d23 d23 d15",
5144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d23_d23_d15",
5154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d23, d3},
5184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d23 d3",
5194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d7_d23_d3",
5204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d23, d16},
5234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d23 d16",
5244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d7_d23_d16",
5254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d23, d18, d21},
5284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d23 d18 d21",
5294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d23_d18_d21",
5304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d16, d9, d17},
5334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d16 d9 d17",
5344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d16_d9_d17",
5354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d5, d21, d9},
5384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d5 d21 d9",
5394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d5_d21_d9",
5404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d28, d15, d11},
5434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d28 d15 d11",
5444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d28_d15_d11",
5454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d2, d17, d1},
5484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d2 d17 d1",
5494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d2_d17_d1",
5504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d25, d29, d17},
5534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d25 d29 d17",
5544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d25_d29_d17",
5554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d16, d2, d12},
5584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d16 d2 d12",
5594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d16_d2_d12",
5604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d14, d18, d24},
5634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d14 d18 d24",
5644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d14_d18_d24",
5654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d4, d25},
5684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d4 d25",
5694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d3_d4_d25",
5704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d29, d10, d21},
5734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d29 d10 d21",
5744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d29_d10_d21",
5754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d29, d27, d24},
5784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d29 d27 d24",
5794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d29_d27_d24",
5804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d19, d23},
5834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d19 d23",
5844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d30_d19_d23",
5854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d2, d14},
5884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d2 d14",
5894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d3_d2_d14",
5904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d26, d0},
5934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d26 d0",
5944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d17_d26_d0",
5954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
5964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
5974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d28, d8},
5984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d28 d8",
5994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d17_d28_d8",
6004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d3, d24},
6034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d3 d24",
6044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d0_d3_d24",
6054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d16, d21},
6084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d16 d21",
6094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d30_d16_d21",
6104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d24, d3},
6134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d24 d3",
6144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d18_d24_d3",
6154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d6, d2, d15},
6184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d6 d2 d15",
6194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d6_d2_d15",
6204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d0, d27},
6234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d0 d27",
6244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d7_d0_d27",
6254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d9, d27},
6284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d9 d27",
6294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d0_d9_d27",
6304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d11, d27},
6334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d11 d27",
6344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d7_d11_d27",
6354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d25, d11},
6384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d25 d11",
6394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d17_d25_d11",
6404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d31, d9, d22},
6434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d31 d9 d22",
6444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d31_d9_d22",
6454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d24, d0, d5},
6484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d24 d0 d5",
6494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d24_d0_d5",
6504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d5, d31, d4},
6534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d5 d31 d4",
6544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d5_d31_d4",
6554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d16, d24, d2},
6584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d16 d24 d2",
6594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d16_d24_d2",
6604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d30, d4},
6634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d30 d4",
6644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d7_d30_d4",
6654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d31, d4, d28},
6684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d31 d4 d28",
6694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d31_d4_d28",
6704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d10, d31, d13},
6734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d10 d31 d13",
6744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d10_d31_d13",
6754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d28, d14, d1},
6784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d28 d14 d1",
6794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d28_d14_d1",
6804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d4, d16, d0},
6834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d4 d16 d0",
6844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d4_d16_d0",
6854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d19, d26, d15},
6884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d19 d26 d15",
6894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d19_d26_d15",
6904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d23, d2, d26},
6934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d23 d2 d26",
6944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d23_d2_d26",
6954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
6964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
6974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d25, d26, d10},
6984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d25 d26 d10",
6994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d25_d26_d10",
7004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d19, d0},
7034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d19 d0",
7044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d0_d19_d0",
7054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d4, d31, d23},
7084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d4 d31 d23",
7094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d4_d31_d23",
7104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d1, d23},
7134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d1 d23",
7144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d30_d1_d23",
7154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d14, d5, d20},
7184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d14 d5 d20",
7194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d14_d5_d20",
7204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d4, d12},
7234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d4 d12",
7244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d20_d4_d12",
7254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d2, d5, d10},
7284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d2 d5 d10",
7294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d2_d5_d10",
7304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d14, d29, d3},
7334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d14 d29 d3",
7344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d14_d29_d3",
7354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d2, d15},
7384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d2 d15",
7394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d17_d2_d15",
7404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d9, d30, d29},
7434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d9 d30 d29",
7444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d9_d30_d29",
7454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d12, d30},
7484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d12 d30",
7494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d30_d12_d30",
7504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d28, d13, d21},
7534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d28 d13 d21",
7544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d28_d13_d21",
7554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d15, d17, d26},
7584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d15 d17 d26",
7594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d15_d17_d26",
7604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d18, d9},
7634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d18 d9",
7644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d30_d18_d9",
7654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d6, d9, d31},
7684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d6 d9 d31",
7694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d6_d9_d31",
7704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d11, d23, d22},
7734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d11 d23 d22",
7744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d11_d23_d22",
7754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d26, d23, d29},
7784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d26 d23 d29",
7794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d26_d23_d29",
7804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d2, d21},
7834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d2 d21",
7844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d20_d2_d21",
7854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d25, d1},
7884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d25 d1",
7894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d1_d25_d1",
7904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d13, d15},
7934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d13 d15",
7944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d1_d13_d15",
7954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
7964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
7974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d6, d15, d13},
7984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d6 d15 d13",
7994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d6_d15_d13",
8004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d4, d3, d7},
8034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d4 d3 d7",
8044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d4_d3_d7",
8054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d8, d16, d18},
8084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d8 d16 d18",
8094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d8_d16_d18",
8104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d12, d30, d21},
8134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d12 d30 d21",
8144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d12_d30_d21",
8154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d1, d15},
8184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d1 d15",
8194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d0_d1_d15",
8204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d6, d11, d4},
8234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d6 d11 d4",
8244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d6_d11_d4",
8254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d8, d30, d13},
8284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d8 d30 d13",
8294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d8_d30_d13",
8304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d12, d22, d12},
8334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d12 d22 d12",
8344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d12_d22_d12",
8354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d9, d7, d13},
8384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d9 d7 d13",
8394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d9_d7_d13",
8404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d1, d0},
8434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d1 d0",
8444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d3_d1_d0",
8454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d28, d22, d20},
8484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d28 d22 d20",
8494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d28_d22_d20",
8504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d22, d20, d9},
8534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d22 d20 d9",
8544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d22_d20_d9",
8554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d18, d25},
8584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d18 d25",
8594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d18_d18_d25",
8604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d19, d3, d8},
8634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d19 d3 d8",
8644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "Floats_F64_d19_d3_d8",
8654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloats),
8664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloats},
8674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d25, d21, d21},
8684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d25 d21 d21",
8694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d25_d21_d21",
8704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
8714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
8724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d31, d4, d4},
8734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d31 d4 d4",
8744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d31_d4_d4",
8754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
8764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
8774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d14, d30, d30},
8784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d14 d30 d30",
8794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d14_d30_d30",
8804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
8814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
8824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d11, d27, d27},
8834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d11 d27 d27",
8844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d11_d27_d27",
8854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
8864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
8874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d21, d20, d20},
8884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d21 d20 d20",
8894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d21_d20_d20",
8904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
8914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
8924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d26, d14, d14},
8934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d26 d14 d14",
8944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d26_d14_d14",
8954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
8964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
8974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d10, d1, d1},
8984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d10 d1 d1",
8994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d10_d1_d1",
9004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d9, d24, d24},
9034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d9 d24 d24",
9044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d9_d24_d24",
9054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d20, d20},
9084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d20 d20",
9094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d17_d20_d20",
9104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d15, d13, d13},
9134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d15 d13 d13",
9144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d15_d13_d13",
9154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d14, d14},
9184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d14 d14",
9194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d18_d14_d14",
9204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d10, d10},
9234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d10 d10",
9244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d20_d10_d10",
9254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d23, d27, d27},
9284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d23 d27 d27",
9294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d23_d27_d27",
9304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d25, d26, d26},
9334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d25 d26 d26",
9344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d25_d26_d26",
9354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d24, d5, d5},
9384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d24 d5 d5",
9394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d24_d5_d5",
9404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d15, d10, d10},
9434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d15 d10 d10",
9444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d15_d10_d10",
9454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d26, d26},
9484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d26 d26",
9494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d0_d26_d26",
9504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d22, d23, d23},
9534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d22 d23 d23",
9544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d22_d23_d23",
9554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d29, d29},
9584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d29 d29",
9594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d18_d29_d29",
9604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d27, d25, d25},
9634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d27 d25 d25",
9644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d27_d25_d25",
9654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d15, d15, d15},
9684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d15 d15 d15",
9694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d15_d15_d15",
9704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d5, d5},
9734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d5 d5",
9744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d17_d5_d5",
9754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d22, d22},
9784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d22 d22",
9794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d1_d22_d22",
9804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d29, d29},
9834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d29 d29",
9844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d20_d29_d29",
9854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d26, d26},
9884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d26 d26",
9894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d7_d26_d26",
9904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d5, d19, d19},
9934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d5 d19 d19",
9944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d5_d19_d19",
9954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
9964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
9974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d19, d13, d13},
9984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d19 d13 d13",
9994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d19_d13_d13",
10004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d23, d13, d13},
10034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d23 d13 d13",
10044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d23_d13_d13",
10054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d20, d20},
10084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d20 d20",
10094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d0_d20_d20",
10104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d19, d26, d26},
10134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d19 d26 d26",
10144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d19_d26_d26",
10154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d15, d15},
10184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d15 d15",
10194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d7_d15_d15",
10204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d6, d6},
10234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d6 d6",
10244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d1_d6_d6",
10254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d25, d25},
10284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d25 d25",
10294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d3_d25_d25",
10304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d11, d11, d11},
10334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d11 d11 d11",
10344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d11_d11_d11",
10354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d10, d28, d28},
10384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d10 d28 d28",
10394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d10_d28_d28",
10404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d13, d13},
10434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d13 d13",
10444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d20_d13_d13",
10454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d24, d24},
10484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d24 d24",
10494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d1_d24_d24",
10504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d27, d6, d6},
10534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d27 d6 d6",
10544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d27_d6_d6",
10554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d29, d29},
10584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d29 d29",
10594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d30_d29_d29",
10604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d31, d14, d14},
10634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d31 d14 d14",
10644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d31_d14_d14",
10654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d25, d13, d13},
10684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d25 d13 d13",
10694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d25_d13_d13",
10704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d21, d16, d16},
10734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d21 d16 d16",
10744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d21_d16_d16",
10754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d12, d26, d26},
10784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d12 d26 d26",
10794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d12_d26_d26",
10804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d2, d10, d10},
10834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d2 d10 d10",
10844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d2_d10_d10",
10854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d1, d5, d5},
10884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d1 d5 d5",
10894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d1_d5_d5",
10904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d26, d10, d10},
10934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d26 d10 d10",
10944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d26_d10_d10",
10954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
10964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
10974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d21, d22, d22},
10984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d21 d22 d22",
10994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d21_d22_d22",
11004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d2, d15, d15},
11034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d2 d15 d15",
11044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d2_d15_d15",
11054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d27, d27},
11084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d27 d27",
11094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d30_d27_d27",
11104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d4, d4},
11134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d4 d4",
11144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d17_d4_d4",
11154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d8, d8},
11184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d8 d8",
11194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d0_d8_d8",
11204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d27, d28, d28},
11234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d27 d28 d28",
11244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d27_d28_d28",
11254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d10, d10, d10},
11284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d10 d10 d10",
11294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d10_d10_d10",
11304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d10, d17, d17},
11334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d10 d17 d17",
11344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d10_d17_d17",
11354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d16, d16},
11384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d16 d16",
11394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d18_d16_d16",
11404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d3, d20, d20},
11434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d3 d20 d20",
11444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d3_d20_d20",
11454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d28, d28},
11484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d28 d28",
11494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d0_d28_d28",
11504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d2, d27, d27},
11534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d2 d27 d27",
11544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d2_d27_d27",
11554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d12, d20, d20},
11584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d12 d20 d20",
11594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d12_d20_d20",
11604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d9, d22, d22},
11634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d9 d22 d22",
11644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d9_d22_d22",
11654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d10, d4, d4},
11684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d10 d4 d4",
11694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d10_d4_d4",
11704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d8, d10, d10},
11734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d8 d10 d10",
11744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d8_d10_d10",
11754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d26, d5, d5},
11784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d26 d5 d5",
11794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d26_d5_d5",
11804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d20, d20},
11834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d20 d20",
11844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d7_d20_d20",
11854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d21, d24, d24},
11884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d21 d24 d24",
11894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d21_d24_d24",
11904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d29, d9, d9},
11934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d29 d9 d9",
11944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d29_d9_d9",
11954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
11964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
11974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d14, d14},
11984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d14 d14",
11994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d20_d14_d14",
12004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d30, d30},
12034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d30 d30",
12044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d18_d30_d30",
12054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d15, d14, d14},
12084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d15 d14 d14",
12094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d15_d14_d14",
12104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d31, d21, d21},
12134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d31 d21 d21",
12144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d31_d21_d21",
12154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d20, d22, d22},
12184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d20 d22 d22",
12194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d20_d22_d22",
12204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d13, d5, d5},
12234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d13 d5 d5",
12244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d13_d5_d5",
12254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d28, d14, d14},
12284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d28 d14 d14",
12294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d28_d14_d14",
12304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d21, d25, d25},
12334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d21 d25 d25",
12344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d21_d25_d25",
12354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d23, d29, d29},
12384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d23 d29 d29",
12394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d23_d29_d29",
12404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d19, d17, d17},
12434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d19 d17 d17",
12444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d19_d17_d17",
12454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d30, d21, d21},
12484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d30 d21 d21",
12494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d30_d21_d21",
12504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d6, d9, d9},
12534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d6 d9 d9",
12544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d6_d9_d9",
12554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d22, d27, d27},
12584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d22 d27 d27",
12594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d22_d27_d27",
12604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d9, d25, d25},
12634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d9 d25 d25",
12644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d9_d25_d25",
12654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d12, d22, d22},
12684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d12 d22 d22",
12694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d12_d22_d22",
12704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d12, d9, d9},
12734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d12 d9 d9",
12744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d12_d9_d9",
12754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d0, d27, d27},
12784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d0 d27 d27",
12794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d0_d27_d27",
12804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d2, d12, d12},
12834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d2 d12 d12",
12844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d2_d12_d12",
12854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d27, d29, d29},
12884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d27 d29 d29",
12894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d27_d29_d29",
12904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d14, d4, d4},
12934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d14 d4 d4",
12944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d14_d4_d4",
12954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
12964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
12974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d25, d25},
12984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d25 d25",
12994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d17_d25_d25",
13004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d19, d11, d11},
13034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d19 d11 d11",
13044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d19_d11_d11",
13054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d2, d6, d6},
13084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d2 d6 d6",
13094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d2_d6_d6",
13104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d26, d24, d24},
13134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d26 d24 d24",
13144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d26_d24_d24",
13154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d17, d16, d16},
13184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d17 d16 d16",
13194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d17_d16_d16",
13204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d14, d26, d26},
13234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d14 d26 d26",
13244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d14_d26_d26",
13254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d20, d20},
13284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d20 d20",
13294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d18_d20_d20",
13304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d24, d14, d14},
13334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d24 d14 d14",
13344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d24_d14_d14",
13354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d8, d14, d14},
13384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d8 d14 d14",
13394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d8_d14_d14",
13404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d13, d9, d9},
13434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d13 d9 d9",
13444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d13_d9_d9",
13454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d18, d31, d31},
13484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d18 d31 d31",
13494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d18_d31_d31",
13504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d7, d22, d22},
13534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d7 d22 d22",
13544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d7_d22_d22",
13554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d29, d10, d10},
13584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d29 d10 d10",
13594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d29_d10_d10",
13604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters},
13624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                               {{F64, d5, d29, d29},
13634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "F64 d5 d29 d29",
13644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                "FloatsSameRegisters_F64_d5_d29_d29",
13654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                ARRAY_SIZE(kFloatsSameRegisters),
13664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                kFloatsSameRegisters}};
13674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// We record all inputs to the instructions as outputs. This way, we also check
13694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// that what shouldn't change didn't change.
13704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisstruct TestResult {
13714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  size_t output_size;
13724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  const Inputs* outputs;
13734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois};
13744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// These headers each contain an array of `TestResult` with the reference output
13764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// values. The reference arrays are names `kReference{mnemonic}`.
13774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#include "aarch32/traces/simulator-cond-dt-drt-drd-drn-drm-float-f64-vadd-a32.h"
13784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#include "aarch32/traces/simulator-cond-dt-drt-drd-drn-drm-float-f64-vsub-a32.h"
13794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// The maximum number of errors to report in detail for each test.
13824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisconst unsigned kErrorReportLimit = 8;
13834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloistypedef void (MacroAssembler::*Fn)(DataType dt,
13854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                   DRegister rd,
13864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                   DRegister rn,
13874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                                   DRegister rm);
13884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langloisvoid TestHelper(Fn instruction,
13904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                const char* mnemonic,
13914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                const TestResult reference[]) {
13924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  SETUP();
13934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  masm.UseA32();
13944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  START();
13954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // Data to compare to `reference`.
13974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  TestResult* results[ARRAY_SIZE(kTests)];
13984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
13994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // Test cases for memory bound instructions may allocate a buffer and save its
14004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // address in this array.
14014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  byte* scratch_memory_buffers[ARRAY_SIZE(kTests)];
14024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // Generate a loop for each element in `kTests`. Each loop tests one specific
14044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  // instruction.
14054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
14064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Allocate results on the heap for this test.
14074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    results[i] = new TestResult;
14084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    results[i]->outputs = new Inputs[kTests[i].input_size];
14094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    results[i]->output_size = kTests[i].input_size;
14104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    size_t input_stride = sizeof(kTests[i].inputs[0]) * kTests[i].input_size;
14124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    VIXL_ASSERT(IsUint32(input_stride));
14134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    scratch_memory_buffers[i] = NULL;
14154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    Label loop;
14174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    UseScratchRegisterScope scratch_registers(&masm);
14184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Include all registers from r0 ro r12.
14194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    scratch_registers.Include(RegisterList(0x1fff));
14204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Values to pass to the macro-assembler.
14224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    DataType dt = kTests[i].operands.dt;
14234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    DRegister rd = kTests[i].operands.rd;
14244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    DRegister rn = kTests[i].operands.rn;
14254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    DRegister rm = kTests[i].operands.rm;
14264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Allocate reserved registers for our own use.
14284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    Register input_ptr = scratch_registers.Acquire();
14294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    Register input_end = scratch_registers.Acquire();
14304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    Register result_ptr = scratch_registers.Acquire();
14314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Initialize `input_ptr` to the first element and `input_end` the address
14334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // after the array.
14344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Mov(input_ptr, Operand::From(kTests[i].inputs));
14354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Add(input_end, input_ptr, static_cast<uint32_t>(input_stride));
14364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Mov(result_ptr, Operand::From(results[i]->outputs));
14374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Bind(&loop);
14384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    {
14404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      UseScratchRegisterScope temp_registers(&masm);
14414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      Register fpsr_bits = temp_registers.Acquire();
14424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      __ Ldr(fpsr_bits, MemOperand(input_ptr, offsetof(Inputs, fpscr)));
14434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      __ Vmsr(FPSCR, fpsr_bits);
14444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    }
14454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Vldr(rd, MemOperand(input_ptr, offsetof(Inputs, rd)));
14464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Vldr(rn, MemOperand(input_ptr, offsetof(Inputs, rn)));
14474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Vldr(rm, MemOperand(input_ptr, offsetof(Inputs, rm)));
14484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    (masm.*instruction)(dt, rd, rn, rm);
14504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    {
14524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      UseScratchRegisterScope temp_registers(&masm);
14534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      Register fpsr_bits = temp_registers.Acquire();
14544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      __ Vmrs(RegisterOrAPSR_nzcv(fpsr_bits.GetCode()), FPSCR);
14554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      __ Str(fpsr_bits, MemOperand(result_ptr, offsetof(Inputs, fpscr)));
14564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    }
14574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Vstr(rd, MemOperand(result_ptr, offsetof(Inputs, rd)));
14584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Vstr(rn, MemOperand(result_ptr, offsetof(Inputs, rn)));
14594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Vstr(rm, MemOperand(result_ptr, offsetof(Inputs, rm)));
14604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Advance the result pointer.
14624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Add(result_ptr, result_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
14634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Loop back until `input_ptr` is lower than `input_base`.
14644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Add(input_ptr, input_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
14654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ Cmp(input_ptr, input_end);
14664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    __ B(ne, &loop);
14674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  }
14684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  END();
14704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  RUN();
14724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
14734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  if (Test::generate_test_trace()) {
14744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Print the results.
14754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
14764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      printf("const Inputs kOutputs_%s_%s[] = {\n",
14774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois             mnemonic,
14784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois             kTests[i].identifier);
14794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      for (size_t j = 0; j < results[i]->output_size; j++) {
14804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf("  { ");
14814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf("0x%08" PRIx32, results[i]->outputs[j].fpscr);
14824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf(", ");
14834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf("0x%016" PRIx64, results[i]->outputs[j].rd);
14844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf(", ");
14854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf("0x%016" PRIx64, results[i]->outputs[j].rn);
14864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf(", ");
14874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf("0x%016" PRIx64, results[i]->outputs[j].rm);
14884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        printf(" },\n");
14894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      }
14904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      printf("};\n");
14914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    }
14924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    printf("const TestResult kReference%s[] = {\n", mnemonic);
14934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
14944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      printf("  {\n");
14954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      printf("    ARRAY_SIZE(kOutputs_%s_%s),\n",
14964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois             mnemonic,
14974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois             kTests[i].identifier);
14984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      printf("    kOutputs_%s_%s,\n", mnemonic, kTests[i].identifier);
14994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      printf("  },\n");
15004d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    }
15014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    printf("};\n");
15024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  } else if (kCheckSimulatorTestResults) {
15034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    // Check the results.
15044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    unsigned total_error_count = 0;
15054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
15064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      bool instruction_has_errors = false;
15074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      for (size_t j = 0; j < kTests[i].input_size; j++) {
15084d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint32_t fpscr = results[i]->outputs[j].fpscr;
15094d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rd = results[i]->outputs[j].rd;
15104d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rn = results[i]->outputs[j].rn;
15114d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rm = results[i]->outputs[j].rm;
15124d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint32_t fpscr_input = kTests[i].inputs[j].fpscr;
15134d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rd_input = kTests[i].inputs[j].rd;
15144d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rn_input = kTests[i].inputs[j].rn;
15154d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rm_input = kTests[i].inputs[j].rm;
15164d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint32_t fpscr_ref = reference[i].outputs[j].fpscr;
15174d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rd_ref = reference[i].outputs[j].rd;
15184d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rn_ref = reference[i].outputs[j].rn;
15194d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        uint64_t rm_ref = reference[i].outputs[j].rm;
15204d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
15214d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        if (((fpscr != fpscr_ref) || (rd != rd_ref) || (rn != rn_ref) ||
15224d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois             (rm != rm_ref)) &&
15234d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois            (++total_error_count <= kErrorReportLimit)) {
15244d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          // Print the instruction once even if it triggered multiple failures.
15254d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          if (!instruction_has_errors) {
15264d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois            printf("Error(s) when testing \"%s %s\":\n",
15274d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                   mnemonic,
15284d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois                   kTests[i].operands_description);
15294d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois            instruction_has_errors = true;
15304d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          }
15314d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          // Print subsequent errors.
15324d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("  Input:    ");
15334d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%08" PRIx32, fpscr_input);
15344d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15354d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rd_input, RawbitsToDouble(rd_input));
15364d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15374d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rn_input, RawbitsToDouble(rn_input));
15384d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15394d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rm_input, RawbitsToDouble(rm_input));
15404d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("\n");
15414d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("  Expected: ");
15424d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%08" PRIx32, fpscr_ref);
15434d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15444d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rd_ref, RawbitsToDouble(rd_ref));
15454d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15464d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rn_ref, RawbitsToDouble(rn_ref));
15474d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15484d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rm_ref, RawbitsToDouble(rm_ref));
15494d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("\n");
15504d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("  Found:    ");
15514d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%08" PRIx32, fpscr);
15524d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15534d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rd, RawbitsToDouble(rd));
15544d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15554d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rn, RawbitsToDouble(rn));
15564d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf(", ");
15574d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("0x%016" PRIx64 "(%g)", rm, RawbitsToDouble(rm));
15584d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois          printf("\n\n");
15594d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois        }
15604d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      }
15614d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    }
15624d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
15634d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    if (total_error_count > kErrorReportLimit) {
15644d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      printf("%u other errors follow.\n",
15654d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois             total_error_count - kErrorReportLimit);
15664d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    }
15674d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    VIXL_CHECK(total_error_count == 0);
15684d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  } else {
15694d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    VIXL_WARNING("Assembled the code, but did not run anything.\n");
15704d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  }
15714d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
15724d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
15734d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    delete[] results[i]->outputs;
15744d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    delete results[i];
15754d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    delete[] scratch_memory_buffers[i];
15764d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  }
15774d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois}
15784d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
15794d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// Instantiate tests for each instruction in the list.
15804d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois// TODO: Remove this limitation by having a sandboxing mechanism.
15814d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#if defined(VIXL_HOST_POINTER_32)
15824d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define TEST(mnemonic)                                                         \
15834d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  void Test_##mnemonic() {                                                     \
15844d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic);    \
15854d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  }                                                                            \
15864d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  Test test_##mnemonic(                                                        \
15874d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      "AARCH32_SIMULATOR_COND_DT_DRT_DRD_DRN_DRM_FLOAT_F64_" #mnemonic "_A32", \
15884d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      &Test_##mnemonic);
15894d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#else
15904d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#define TEST(mnemonic)                                                         \
15914d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  void Test_##mnemonic() {                                                     \
15924d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    VIXL_WARNING("This test can only run on a 32-bit host.\n");                \
15934d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois    USE(TestHelper);                                                           \
15944d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  }                                                                            \
15954d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois  Test test_##mnemonic(                                                        \
15964d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      "AARCH32_SIMULATOR_COND_DT_DRT_DRD_DRN_DRM_FLOAT_F64_" #mnemonic "_A32", \
15974d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois      &Test_##mnemonic);
15984d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#endif
15994d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
16004d912ac1b98ffe0638320815636b0b9661a8846cPierre LangloisFOREACH_INSTRUCTION(TEST)
16014d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#undef TEST
16024d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
16034d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois}  // namespace
16044d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois#endif
16054d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois
16064d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois}  // namespace aarch32
16074d912ac1b98ffe0638320815636b0b9661a8846cPierre Langlois}  // namespace vixl
1608