Home | History | Annotate | Download | only in aarch64
      1 // Copyright 2015, VIXL authors
      2 // All rights reserved.
      3 //
      4 // Redistribution and use in source and binary forms, with or without
      5 // modification, are permitted provided that the following conditions are met:
      6 //
      7 //   * Redistributions of source code must retain the above copyright notice,
      8 //     this list of conditions and the following disclaimer.
      9 //   * Redistributions in binary form must reproduce the above copyright notice,
     10 //     this list of conditions and the following disclaimer in the documentation
     11 //     and/or other materials provided with the distribution.
     12 //   * Neither the name of ARM Limited nor the names of its contributors may be
     13 //     used to endorse or promote products derived from this software without
     14 //     specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
     17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
     20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26 
     27 // This file holds inputs for the instructions tested by test-simulator-aarch64.
     28 //
     29 // If the input lists are updated, please run tools/generate_simulator_traces.py
     30 // on a reference platform to regenerate the expected outputs. The outputs are
     31 // stored in test-simulator-traces-aarch64.h.
     32 
     33 extern "C" {
     34 #include <stdint.h>
     35 }
     36 
     37 // This header should only be used by test/test-simulator-aarch64.cc, so it
     38 // doesn't need the usual header guard.
     39 #ifdef VIXL_AARCH64_TEST_SIMULATOR_INPUTS_AARCH64_H_
     40 #error This header should be inluded only once.
     41 #endif
     42 #define VIXL_AARCH64_TEST_SIMULATOR_INPUTS_AARCH64_H_
     43 
     44 // clang-format off
     45 
     46 // Double values, stored as uint64_t representations. This ensures exact bit
     47 // representation, and avoids the loss of NaNs and suchlike through C++ casts.
     48 #define INPUT_DOUBLE_BASIC                                                    \
     49   /* Simple values. */                                                        \
     50   0x0000000000000000,   /* 0.0                        */                      \
     51   0x0010000000000000,   /* The smallest normal value. */                      \
     52   0x3fdfffffffffffff,   /* The value just below 0.5.  */                      \
     53   0x3fe0000000000000,   /* 0.5                        */                      \
     54   0x3fe0000000000001,   /* The value just above 0.5.  */                      \
     55   0x3fefffffffffffff,   /* The value just below 1.0.  */                      \
     56   0x3ff0000000000000,   /* 1.0                        */                      \
     57   0x3ff0000000000001,   /* The value just above 1.0.  */                      \
     58   0x3ff8000000000000,   /* 1.5                        */                      \
     59   0x4024000000000000,   /* 10                         */                      \
     60   0x7fefffffffffffff,   /* The largest finite value.  */                      \
     61                                                                               \
     62   /* Infinity. */                                                             \
     63   0x7ff0000000000000,                                                         \
     64                                                                               \
     65   /* NaNs. */                                                                 \
     66   /*  - Quiet NaNs */                                                         \
     67   0x7ff923456789abcd,                                                         \
     68   0x7ff8000000000000,                                                         \
     69   /*  - Signalling NaNs */                                                    \
     70   0x7ff123456789abcd,                                                         \
     71   0x7ff0000000000000,                                                         \
     72                                                                               \
     73   /* Subnormals. */                                                           \
     74   /*  - A recognisable bit pattern. */                                        \
     75   0x000123456789abcd,                                                         \
     76   /*  - The largest subnormal value. */                                       \
     77   0x000fffffffffffff,                                                         \
     78   /*  - The smallest subnormal value. */                                      \
     79   0x0000000000000001,                                                         \
     80                                                                               \
     81   /* The same values again, but negated. */                                   \
     82   0x8000000000000000,                                                         \
     83   0x8010000000000000,                                                         \
     84   0xbfdfffffffffffff,                                                         \
     85   0xbfe0000000000000,                                                         \
     86   0xbfe0000000000001,                                                         \
     87   0xbfefffffffffffff,                                                         \
     88   0xbff0000000000000,                                                         \
     89   0xbff0000000000001,                                                         \
     90   0xbff8000000000000,                                                         \
     91   0xc024000000000000,                                                         \
     92   0xffefffffffffffff,                                                         \
     93   0xfff0000000000000,                                                         \
     94   0xfff923456789abcd,                                                         \
     95   0xfff8000000000000,                                                         \
     96   0xfff123456789abcd,                                                         \
     97   0xfff0000000000000,                                                         \
     98   0x800123456789abcd,                                                         \
     99   0x800fffffffffffff,                                                         \
    100   0x8000000000000001,
    101 
    102 
    103 // Extra inputs. Passing these to 3- or 2-op instructions makes the trace file
    104 // very large, so these should only be used with 1-op instructions.
    105 #define INPUT_DOUBLE_CONVERSIONS                                              \
    106   /* Values relevant for conversions to single-precision floats. */           \
    107   0x47efffff00000000,                                                         \
    108   /*  - The smallest normalized float. */                                     \
    109   0x3810000000000000,                                                         \
    110   /*  - Normal floats that need (ties-to-even) rounding.           */         \
    111   /*    For normalized numbers, bit 29 (0x0000000020000000) is the */         \
    112   /*    lowest-order bit which will fit in the float's mantissa.   */         \
    113   0x3ff0000000000000,                                                         \
    114   0x3ff0000000000001,                                                         \
    115   0x3ff0000010000000,                                                         \
    116   0x3ff0000010000001,                                                         \
    117   0x3ff0000020000000,                                                         \
    118   0x3ff0000020000001,                                                         \
    119   0x3ff0000030000000,                                                         \
    120   0x3ff0000030000001,                                                         \
    121   0x3ff0000040000000,                                                         \
    122   0x3ff0000040000001,                                                         \
    123   0x3ff0000050000000,                                                         \
    124   0x3ff0000050000001,                                                         \
    125   0x3ff0000060000000,                                                         \
    126   /*  - A mantissa that overflows into the exponent during rounding. */       \
    127   0x3feffffff0000000,                                                         \
    128   /*  - The largest double that rounds to a normal float. */                  \
    129   0x47efffffefffffff,                                                         \
    130   /*  - The smallest exponent that's too big for a float. */                  \
    131   0x47f0000000000000,                                                         \
    132   /*  - This exponent is in range, but the value rounds to infinity. */       \
    133   0x47effffff0000000,                                                         \
    134   /*  - The largest double which is too small for a subnormal float. */       \
    135   0x3690000000000000,                                                         \
    136   /*  - The largest subnormal float. */                                       \
    137   0x380fffffc0000000,                                                         \
    138   /*  - The smallest subnormal float. */                                      \
    139   0x36a0000000000000,                                                         \
    140   /*  - Subnormal floats that need (ties-to-even) rounding.      */           \
    141   /*    For these subnormals, bit 34 (0x0000000400000000) is the */           \
    142   /*    lowest-order bit which will fit in the float's mantissa. */           \
    143   0x37c159e000000000,                                                         \
    144   0x37c159e000000001,                                                         \
    145   0x37c159e200000000,                                                         \
    146   0x37c159e200000001,                                                         \
    147   0x37c159e400000000,                                                         \
    148   0x37c159e400000001,                                                         \
    149   0x37c159e600000000,                                                         \
    150   0x37c159e600000001,                                                         \
    151   0x37c159e800000000,                                                         \
    152   0x37c159e800000001,                                                         \
    153   0x37c159ea00000000,                                                         \
    154   0x37c159ea00000001,                                                         \
    155   0x37c159ec00000000,                                                         \
    156   /*  - The smallest double which rounds up to become a subnormal float. */   \
    157   0x3690000000000001,                                                         \
    158                                                                               \
    159   /* The same values again, but negated. */                                   \
    160   0xc7efffff00000000,                                                         \
    161   0xb810000000000000,                                                         \
    162   0xbff0000000000000,                                                         \
    163   0xbff0000000000001,                                                         \
    164   0xbff0000010000000,                                                         \
    165   0xbff0000010000001,                                                         \
    166   0xbff0000020000000,                                                         \
    167   0xbff0000020000001,                                                         \
    168   0xbff0000030000000,                                                         \
    169   0xbff0000030000001,                                                         \
    170   0xbff0000040000000,                                                         \
    171   0xbff0000040000001,                                                         \
    172   0xbff0000050000000,                                                         \
    173   0xbff0000050000001,                                                         \
    174   0xbff0000060000000,                                                         \
    175   0xbfeffffff0000000,                                                         \
    176   0xc7efffffefffffff,                                                         \
    177   0xc7f0000000000000,                                                         \
    178   0xc7effffff0000000,                                                         \
    179   0xb690000000000000,                                                         \
    180   0xb80fffffc0000000,                                                         \
    181   0xb6a0000000000000,                                                         \
    182   0xb7c159e000000000,                                                         \
    183   0xb7c159e000000001,                                                         \
    184   0xb7c159e200000000,                                                         \
    185   0xb7c159e200000001,                                                         \
    186   0xb7c159e400000000,                                                         \
    187   0xb7c159e400000001,                                                         \
    188   0xb7c159e600000000,                                                         \
    189   0xb7c159e600000001,                                                         \
    190   0xb7c159e800000000,                                                         \
    191   0xb7c159e800000001,                                                         \
    192   0xb7c159ea00000000,                                                         \
    193   0xb7c159ea00000001,                                                         \
    194   0xb7c159ec00000000,                                                         \
    195   0xb690000000000001,                                                         \
    196                                                                               \
    197   /* Values relevant for conversions to integers (frint).           */        \
    198   /*  - The lowest-order mantissa bit has value 1.                  */        \
    199   0x4330000000000000,                                                         \
    200   0x4330000000000001,                                                         \
    201   0x4330000000000002,                                                         \
    202   0x4330000000000003,                                                         \
    203   0x433fedcba9876543,                                                         \
    204   0x433ffffffffffffc,                                                         \
    205   0x433ffffffffffffd,                                                         \
    206   0x433ffffffffffffe,                                                         \
    207   0x433fffffffffffff,                                                         \
    208   /*  - The lowest-order mantissa bit has value 0.5.                */        \
    209   0x4320000000000000,                                                         \
    210   0x4320000000000001,                                                         \
    211   0x4320000000000002,                                                         \
    212   0x4320000000000003,                                                         \
    213   0x432fedcba9876543,                                                         \
    214   0x432ffffffffffffc,                                                         \
    215   0x432ffffffffffffd,                                                         \
    216   0x432ffffffffffffe,                                                         \
    217   0x432fffffffffffff,                                                         \
    218   /*  - The lowest-order mantissa bit has value 0.25.               */        \
    219   0x4310000000000000,                                                         \
    220   0x4310000000000001,                                                         \
    221   0x4310000000000002,                                                         \
    222   0x4310000000000003,                                                         \
    223   0x431fedcba9876543,                                                         \
    224   0x431ffffffffffffc,                                                         \
    225   0x431ffffffffffffd,                                                         \
    226   0x431ffffffffffffe,                                                         \
    227   0x431fffffffffffff,                                                         \
    228                                                                               \
    229   /* The same values again, but negated. */                                   \
    230   0xc330000000000000,                                                         \
    231   0xc330000000000001,                                                         \
    232   0xc330000000000002,                                                         \
    233   0xc330000000000003,                                                         \
    234   0xc33fedcba9876543,                                                         \
    235   0xc33ffffffffffffc,                                                         \
    236   0xc33ffffffffffffd,                                                         \
    237   0xc33ffffffffffffe,                                                         \
    238   0xc33fffffffffffff,                                                         \
    239   0xc320000000000000,                                                         \
    240   0xc320000000000001,                                                         \
    241   0xc320000000000002,                                                         \
    242   0xc320000000000003,                                                         \
    243   0xc32fedcba9876543,                                                         \
    244   0xc32ffffffffffffc,                                                         \
    245   0xc32ffffffffffffd,                                                         \
    246   0xc32ffffffffffffe,                                                         \
    247   0xc32fffffffffffff,                                                         \
    248   0xc310000000000000,                                                         \
    249   0xc310000000000001,                                                         \
    250   0xc310000000000002,                                                         \
    251   0xc310000000000003,                                                         \
    252   0xc31fedcba9876543,                                                         \
    253   0xc31ffffffffffffc,                                                         \
    254   0xc31ffffffffffffd,                                                         \
    255   0xc31ffffffffffffe,                                                         \
    256   0xc31fffffffffffff,                                                         \
    257                                                                               \
    258   /* Values relevant for conversions to integers (fcvt).    */                \
    259   0xc3e0000000000001,   /* The value just below INT64_MIN.          */        \
    260   0xc3e0000000000000,   /* INT64_MIN                                */        \
    261   0xc3dfffffffffffff,   /* The value just above INT64_MIN.          */        \
    262   0x43dfffffffffffff,   /* The value just below INT64_MAX.          */        \
    263                         /* INT64_MAX is not representable.          */        \
    264   0x43e0000000000000,   /* The value just above INT64_MAX.          */        \
    265                                                                               \
    266   0x43efffffffffffff,   /* The value just below UINT64_MAX.         */        \
    267                         /* UINT64_MAX is not representable.         */        \
    268   0x43f0000000000000,   /* The value just above UINT64_MAX.         */        \
    269                                                                               \
    270   0xc1e0000000200001,   /* The value just below INT32_MIN - 1.0.    */        \
    271   0xc1e0000000200000,   /* INT32_MIN - 1.0                          */        \
    272   0xc1e00000001fffff,   /* The value just above INT32_MIN - 1.0.    */        \
    273   0xc1e0000000100001,   /* The value just below INT32_MIN - 0.5.    */        \
    274   0xc1e0000000100000,   /* INT32_MIN - 0.5                          */        \
    275   0xc1e00000000fffff,   /* The value just above INT32_MIN - 0.5.    */        \
    276   0xc1e0000000000001,   /* The value just below INT32_MIN.          */        \
    277   0xc1e0000000000000,   /* INT32_MIN                                */        \
    278   0xc1dfffffffffffff,   /* The value just above INT32_MIN.          */        \
    279   0xc1dfffffffe00001,   /* The value just below INT32_MIN + 0.5.    */        \
    280   0xc1dfffffffe00000,   /* INT32_MIN + 0.5                          */        \
    281   0xc1dfffffffdfffff,   /* The value just above INT32_MIN + 0.5.    */        \
    282                                                                               \
    283   0x41dfffffff7fffff,   /* The value just below INT32_MAX - 1.0.    */        \
    284   0x41dfffffff800000,   /* INT32_MAX - 1.0                          */        \
    285   0x41dfffffff800001,   /* The value just above INT32_MAX - 1.0.    */        \
    286   0x41dfffffff9fffff,   /* The value just below INT32_MAX - 0.5.    */        \
    287   0x41dfffffffa00000,   /* INT32_MAX - 0.5                          */        \
    288   0x41dfffffffa00001,   /* The value just above INT32_MAX - 0.5.    */        \
    289   0x41dfffffffbfffff,   /* The value just below INT32_MAX.          */        \
    290   0x41dfffffffc00000,   /* INT32_MAX                                */        \
    291   0x41dfffffffc00001,   /* The value just above INT32_MAX.          */        \
    292   0x41dfffffffdfffff,   /* The value just below INT32_MAX + 0.5.    */        \
    293   0x41dfffffffe00000,   /* INT32_MAX + 0.5                          */        \
    294   0x41dfffffffe00001,   /* The value just above INT32_MAX + 0.5.    */        \
    295                                                                               \
    296   0x41efffffffbfffff,   /* The value just below UINT32_MAX - 1.0.   */        \
    297   0x41efffffffc00000,   /* UINT32_MAX - 1.0                         */        \
    298   0x41efffffffc00001,   /* The value just above UINT32_MAX - 1.0.   */        \
    299   0x41efffffffcfffff,   /* The value just below UINT32_MAX - 0.5.   */        \
    300   0x41efffffffd00000,   /* UINT32_MAX - 0.5                         */        \
    301   0x41efffffffd00001,   /* The value just above UINT32_MAX - 0.5.   */        \
    302   0x41efffffffdfffff,   /* The value just below UINT32_MAX.         */        \
    303   0x41efffffffe00000,   /* UINT32_MAX                               */        \
    304   0x41efffffffe00001,   /* The value just above UINT32_MAX.         */        \
    305   0x41efffffffefffff,   /* The value just below UINT32_MAX + 0.5.   */        \
    306   0x41effffffff00000,   /* UINT32_MAX + 0.5                         */        \
    307   0x41effffffff00001,   /* The value just above UINT32_MAX + 0.5.   */
    308 
    309 
    310 // Float values, stored as uint32_t representations. This ensures exact bit
    311 // representation, and avoids the loss of NaNs and suchlike through C++ casts.
    312 #define INPUT_FLOAT_BASIC                                                     \
    313   /* Simple values. */                                                        \
    314   0x00000000,   /* 0.0                        */                              \
    315   0x00800000,   /* The smallest normal value. */                              \
    316   0x3effffff,   /* The value just below 0.5.  */                              \
    317   0x3f000000,   /* 0.5                        */                              \
    318   0x3f000001,   /* The value just above 0.5.  */                              \
    319   0x3f7fffff,   /* The value just below 1.0.  */                              \
    320   0x3f800000,   /* 1.0                        */                              \
    321   0x3f800001,   /* The value just above 1.0.  */                              \
    322   0x3fc00000,   /* 1.5                        */                              \
    323   0x41200000,   /* 10                         */                              \
    324   0x7f8fffff,   /* The largest finite value.  */                              \
    325                                                                               \
    326   /* Infinity. */                                                             \
    327   0x7f800000,                                                                 \
    328                                                                               \
    329   /* NaNs. */                                                                 \
    330   /*  - Quiet NaNs */                                                         \
    331   0x7fd23456,                                                                 \
    332   0x7fc00000,                                                                 \
    333   /*  - Signalling NaNs */                                                    \
    334   0x7f923456,                                                                 \
    335   0x7f800001,                                                                 \
    336                                                                               \
    337   /* Subnormals. */                                                           \
    338   /*  - A recognisable bit pattern. */                                        \
    339   0x00123456,                                                                 \
    340   /*  - The largest subnormal value. */                                       \
    341   0x007fffff,                                                                 \
    342   /*  - The smallest subnormal value. */                                      \
    343   0x00000001,                                                                 \
    344                                                                               \
    345   /* The same values again, but negated. */                                   \
    346   0x80000000,                                                                 \
    347   0x80800000,                                                                 \
    348   0xbeffffff,                                                                 \
    349   0xbf000000,                                                                 \
    350   0xbf000001,                                                                 \
    351   0xbf7fffff,                                                                 \
    352   0xbf800000,                                                                 \
    353   0xbf800001,                                                                 \
    354   0xbfc00000,                                                                 \
    355   0xc1200000,                                                                 \
    356   0xff8fffff,                                                                 \
    357   0xff800000,                                                                 \
    358   0xffd23456,                                                                 \
    359   0xffc00000,                                                                 \
    360   0xff923456,                                                                 \
    361   0xff800001,                                                                 \
    362   0x80123456,                                                                 \
    363   0x807fffff,                                                                 \
    364   0x80000001,
    365 
    366 
    367 // Extra inputs. Passing these to 3- or 2-op instructions makes the trace file
    368 // very large, so these should only be used with 1-op instructions.
    369 #define INPUT_FLOAT_CONVERSIONS                                               \
    370   /* Values relevant for conversions to integers (frint).           */        \
    371   /*  - The lowest-order mantissa bit has value 1.                  */        \
    372   0x4b000000,                                                                 \
    373   0x4b000001,                                                                 \
    374   0x4b000002,                                                                 \
    375   0x4b000003,                                                                 \
    376   0x4b765432,                                                                 \
    377   0x4b7ffffc,                                                                 \
    378   0x4b7ffffd,                                                                 \
    379   0x4b7ffffe,                                                                 \
    380   0x4b7fffff,                                                                 \
    381   /*  - The lowest-order mantissa bit has value 0.5.                */        \
    382   0x4a800000,                                                                 \
    383   0x4a800001,                                                                 \
    384   0x4a800002,                                                                 \
    385   0x4a800003,                                                                 \
    386   0x4af65432,                                                                 \
    387   0x4afffffc,                                                                 \
    388   0x4afffffd,                                                                 \
    389   0x4afffffe,                                                                 \
    390   0x4affffff,                                                                 \
    391   /*  - The lowest-order mantissa bit has value 0.25.               */        \
    392   0x4a000000,                                                                 \
    393   0x4a000001,                                                                 \
    394   0x4a000002,                                                                 \
    395   0x4a000003,                                                                 \
    396   0x4a765432,                                                                 \
    397   0x4a7ffffc,                                                                 \
    398   0x4a7ffffd,                                                                 \
    399   0x4a7ffffe,                                                                 \
    400   0x4a7fffff,                                                                 \
    401                                                                               \
    402   /* The same values again, but negated. */                                   \
    403   0xcb000000,                                                                 \
    404   0xcb000001,                                                                 \
    405   0xcb000002,                                                                 \
    406   0xcb000003,                                                                 \
    407   0xcb765432,                                                                 \
    408   0xcb7ffffc,                                                                 \
    409   0xcb7ffffd,                                                                 \
    410   0xcb7ffffe,                                                                 \
    411   0xcb7fffff,                                                                 \
    412   0xca800000,                                                                 \
    413   0xca800001,                                                                 \
    414   0xca800002,                                                                 \
    415   0xca800003,                                                                 \
    416   0xcaf65432,                                                                 \
    417   0xcafffffc,                                                                 \
    418   0xcafffffd,                                                                 \
    419   0xcafffffe,                                                                 \
    420   0xcaffffff,                                                                 \
    421   0xca000000,                                                                 \
    422   0xca000001,                                                                 \
    423   0xca000002,                                                                 \
    424   0xca000003,                                                                 \
    425   0xca765432,                                                                 \
    426   0xca7ffffc,                                                                 \
    427   0xca7ffffd,                                                                 \
    428   0xca7ffffe,                                                                 \
    429   0xca7fffff,                                                                 \
    430                                                                               \
    431   /* Values relevant for conversions to integers (fcvt).            */        \
    432   0xdf000001,   /* The value just below INT64_MIN.                  */        \
    433   0xdf000000,   /* INT64_MIN                                        */        \
    434   0xdeffffff,   /* The value just above INT64_MIN.                  */        \
    435   0x5effffff,   /* The value just below INT64_MAX.                  */        \
    436                 /* INT64_MAX is not representable.                  */        \
    437   0x5f000000,   /* The value just above INT64_MAX.                  */        \
    438                                                                               \
    439   0x5f7fffff,   /* The value just below UINT64_MAX.                 */        \
    440                 /* UINT64_MAX is not representable.                 */        \
    441   0x5f800000,   /* The value just above UINT64_MAX.                 */        \
    442                                                                               \
    443   0xcf000001,   /* The value just below INT32_MIN.                  */        \
    444   0xcf000000,   /* INT32_MIN                                        */        \
    445   0xceffffff,   /* The value just above INT32_MIN.                  */        \
    446   0x4effffff,   /* The value just below INT32_MAX.                  */        \
    447                 /* INT32_MAX is not representable.                  */        \
    448   0x4f000000,   /* The value just above INT32_MAX.                  */
    449 
    450 
    451 // FP16 values, stored as uint16_t representations. This ensures exact bit
    452 // representation, and avoids the loss of NaNs and suchlike through C++ casts.
    453 #define INPUT_FLOAT16_BASIC                                                   \
    454   /* Simple values. */                                                        \
    455   0x0000,   /* 0.0                        */                                  \
    456   0x0400,   /* The smallest normal value. */                                  \
    457   0x37ff,   /* The value just below 0.5.  */                                  \
    458   0x3800,   /* 0.5                        */                                  \
    459   0x3801,   /* The value just above 0.5.  */                                  \
    460   0x3bff,   /* The value just below 1.0.  */                                  \
    461   0x3c00,   /* 1.0                        */                                  \
    462   0x3c01,   /* The value just above 1.0.  */                                  \
    463   0x3e00,   /* 1.5                        */                                  \
    464   0x4900,   /* 10                         */                                  \
    465   0x7bff,   /* The largest finite value.  */                                  \
    466                                                                               \
    467   /* Infinity. */                                                             \
    468   0x7c00,                                                                     \
    469                                                                               \
    470   /* NaNs. */                                                                 \
    471   /*  - Quiet NaNs */                                                         \
    472   0x7f23,                                                                     \
    473   0x7e00,                                                                     \
    474   /*  - Signalling NaNs */                                                    \
    475   0x7d23,                                                                     \
    476   0x7c01,                                                                     \
    477                                                                               \
    478   /* Subnormals. */                                                           \
    479   /*  - A recognisable bit pattern. */                                        \
    480   0x0012,                                                                     \
    481   /*  - The largest subnormal value. */                                       \
    482   0x03ff,                                                                     \
    483   /*  - The smallest subnormal value. */                                      \
    484   0x0001,                                                                     \
    485                                                                               \
    486   /* The same values again, but negated. */                                   \
    487   0x8000,                                                                     \
    488   0x8400,                                                                     \
    489   0xb7ff,                                                                     \
    490   0xb800,                                                                     \
    491   0xb801,                                                                     \
    492   0xbbff,                                                                     \
    493   0xbc00,                                                                     \
    494   0xbc01,                                                                     \
    495   0xbe00,                                                                     \
    496   0xc900,                                                                     \
    497   0xfbff,                                                                     \
    498   0xfc00,                                                                     \
    499   0xff23,                                                                     \
    500   0xfe00,                                                                     \
    501   0xfd23,                                                                     \
    502   0xfc01,                                                                     \
    503   0x8012,                                                                     \
    504   0x83ff,                                                                     \
    505   0x8001,
    506 
    507 
    508 // Extra inputs. Passing these to 3- or 2-op instructions makes the trace file
    509 // very large, so these should only be used with 1-op instructions. The largest
    510 // normal FP16 value is 65504 which won't overflow int32_t or int64_t, so we
    511 // don't test any cases like that.
    512 #define INPUT_FLOAT16_CONVERSIONS                                             \
    513   /* Values relevant for conversions to integers (frint).           */        \
    514   /*  - The lowest-order mantissa bit has value 1.                  */        \
    515   0x6400,                                                                     \
    516   0x6401,                                                                     \
    517   0x6402,                                                                     \
    518   0x6403,                                                                     \
    519   0x6543,                                                                     \
    520   0x67fc,                                                                     \
    521   0x67fd,                                                                     \
    522   0x67fe,                                                                     \
    523   0x67ff,                                                                     \
    524   /*  - The lowest-order mantissa bit has value 0.5.                */        \
    525   0x6000,                                                                     \
    526   0x6001,                                                                     \
    527   0x6002,                                                                     \
    528   0x6003,                                                                     \
    529   0x6321,                                                                     \
    530   0x63fc,                                                                     \
    531   0x63fd,                                                                     \
    532   0x63fe,                                                                     \
    533   0x63ff,                                                                     \
    534   /*  - The lowest-order mantissa bit has value 0.25.               */        \
    535   0x5c00,                                                                     \
    536   0x5c01,                                                                     \
    537   0x5c02,                                                                     \
    538   0x5c03,                                                                     \
    539   0x5d32,                                                                     \
    540   0x5ffc,                                                                     \
    541   0x5ffd,                                                                     \
    542   0x5ffe,                                                                     \
    543   0x5fff,                                                                     \
    544                                                                               \
    545   /* The same values again, but negated. */                                   \
    546   0xe400,                                                                     \
    547   0xe401,                                                                     \
    548   0xe402,                                                                     \
    549   0xe403,                                                                     \
    550   0xe543,                                                                     \
    551   0xe7fc,                                                                     \
    552   0xe7fd,                                                                     \
    553   0xe7fe,                                                                     \
    554   0xe7ff,                                                                     \
    555   0xe000,                                                                     \
    556   0xe001,                                                                     \
    557   0xe002,                                                                     \
    558   0xe003,                                                                     \
    559   0xe321,                                                                     \
    560   0xe3fc,                                                                     \
    561   0xe3fd,                                                                     \
    562   0xe3fe,                                                                     \
    563   0xe3ff,                                                                     \
    564   0xdc00,                                                                     \
    565   0xdc01,                                                                     \
    566   0xdc02,                                                                     \
    567   0xdc03,                                                                     \
    568   0xdd32,                                                                     \
    569   0xdffc,                                                                     \
    570   0xdffd,                                                                     \
    571   0xdffe,                                                                     \
    572   0xdfff,                                                                     \
    573                                                                               \
    574   /* Some more NaN values. */                                                 \
    575   0x7c7f,                                                                     \
    576   0x7e91,                                                                     \
    577   0x7e00,                                                                     \
    578   0x7c91,                                                                     \
    579   0xfc7f,                                                                     \
    580   0xfe91,                                                                     \
    581   0xfe00,                                                                     \
    582   0xfc91,                                                                     \
    583   0xffff,
    584 
    585 #define INPUT_16BITS_FIXEDPOINT_CONVERSIONS                                   \
    586   0x0000,                                                                     \
    587   0x0001,                                                                     \
    588   0x0400,                                                                     \
    589   0x0401,                                                                     \
    590   0x0476,                                                                     \
    591   0x0800,                                                                     \
    592   0x0801,                                                                     \
    593   0x0c00,                                                                     \
    594   0x0c01,                                                                     \
    595   0x1000,                                                                     \
    596   0x1001,                                                                     \
    597   0x1400,                                                                     \
    598   0x1401,                                                                     \
    599   0x1800,                                                                     \
    600   0x1c00,                                                                     \
    601   0x7f80,                                                                     \
    602   0x7fc0,                                                                     \
    603   0x7fff,                                                                     \
    604                                                                               \
    605   /* The same values again, but negated. */                                   \
    606   0x8000,                                                                     \
    607   0x8001,                                                                     \
    608   0x8400,                                                                     \
    609   0x8401,                                                                     \
    610   0x8476,                                                                     \
    611   0x8800,                                                                     \
    612   0x8801,                                                                     \
    613   0x8c00,                                                                     \
    614   0x8c01,                                                                     \
    615   0x9000,                                                                     \
    616   0x9001,                                                                     \
    617   0x9400,                                                                     \
    618   0x9401,                                                                     \
    619   0x9800,                                                                     \
    620   0x9c00,                                                                     \
    621   0xff80,                                                                     \
    622   0xffc0,                                                                     \
    623   0xffff
    624 
    625 #define INPUT_32BITS_FIXEDPOINT_CONVERSIONS                                   \
    626   0x00000000,                                                                 \
    627   0x00000001,                                                                 \
    628   0x00800000,                                                                 \
    629   0x00800001,                                                                 \
    630   0x00876543,                                                                 \
    631   0x01000000,                                                                 \
    632   0x01000001,                                                                 \
    633   0x01800000,                                                                 \
    634   0x01800001,                                                                 \
    635   0x02000000,                                                                 \
    636   0x02000001,                                                                 \
    637   0x02800000,                                                                 \
    638   0x02800001,                                                                 \
    639   0x03000000,                                                                 \
    640   0x40000000,                                                                 \
    641   0x7fffff80,                                                                 \
    642   0x7fffffc0,                                                                 \
    643   0x7fffffff,                                                                 \
    644   0x80000000,                                                                 \
    645   0x80000100,                                                                 \
    646   0xffffff00,                                                                 \
    647   0xffffff80,                                                                 \
    648   0xffffffff,                                                                 \
    649   0xffffffff
    650 
    651 #define INPUT_64BITS_FIXEDPOINT_CONVERSIONS                                   \
    652   0x0000000000000000,                                                         \
    653   0x0000000000000001,                                                         \
    654   0x0000000040000000,                                                         \
    655   0x0000000100000000,                                                         \
    656   0x4000000000000000,                                                         \
    657   0x4000000000000400,                                                         \
    658   0x000000007fffffff,                                                         \
    659   0x00000000ffffffff,                                                         \
    660   0x0000000080000000,                                                         \
    661   0x0000000080000001,                                                         \
    662   0x7ffffffffffffc00,                                                         \
    663   0x0123456789abcde0,                                                         \
    664   0x0000000012345678,                                                         \
    665   0xffffffffc0000000,                                                         \
    666   0xffffffff00000000,                                                         \
    667   0xc000000000000000,                                                         \
    668   0x1000000000000000,                                                         \
    669   0x1000000000000001,                                                         \
    670   0x1000000000000080,                                                         \
    671   0x1000000000000081,                                                         \
    672   0x1000000000000100,                                                         \
    673   0x1000000000000101,                                                         \
    674   0x1000000000000180,                                                         \
    675   0x1000000000000181,                                                         \
    676   0x1000000000000200,                                                         \
    677   0x1000000000000201,                                                         \
    678   0x1000000000000280,                                                         \
    679   0x1000000000000281,                                                         \
    680   0x1000000000000300,                                                         \
    681   0x8000000000000000,                                                         \
    682   0x8000000000000001,                                                         \
    683   0x8000000000000200,                                                         \
    684   0x8000000000000201,                                                         \
    685   0x8000000000000400,                                                         \
    686   0x8000000000000401,                                                         \
    687   0x8000000000000600,                                                         \
    688   0x8000000000000601,                                                         \
    689   0x8000000000000800,                                                         \
    690   0x8000000000000801,                                                         \
    691   0x8000000000000a00,                                                         \
    692   0x8000000000000a01,                                                         \
    693   0x8000000000000c00,                                                         \
    694   0x7ffffffffffffe00,                                                         \
    695   0x7fffffffffffffff,                                                         \
    696   0xfffffffffffffc00,                                                         \
    697   0xffffffffffffffff
    698 
    699 // Some useful sets of values for testing vector SIMD operations.
    700 #define INPUT_8BITS_IMM_LANECOUNT_FROMZERO                                    \
    701   0x00,                                                                       \
    702   0x01,                                                                       \
    703   0x02,                                                                       \
    704   0x03,                                                                       \
    705   0x04,                                                                       \
    706   0x05,                                                                       \
    707   0x06,                                                                       \
    708   0x07,                                                                       \
    709   0x08,                                                                       \
    710   0x09,                                                                       \
    711   0x0a,                                                                       \
    712   0x0b,                                                                       \
    713   0x0c,                                                                       \
    714   0x0d,                                                                       \
    715   0x0e,                                                                       \
    716   0x0f
    717 
    718 #define INPUT_16BITS_IMM_LANECOUNT_FROMZERO                                    \
    719   0x00,                                                                       \
    720   0x01,                                                                       \
    721   0x02,                                                                       \
    722   0x03,                                                                       \
    723   0x04,                                                                       \
    724   0x05,                                                                       \
    725   0x06,                                                                       \
    726   0x07
    727 
    728 #define INPUT_32BITS_IMM_LANECOUNT_FROMZERO                                    \
    729   0x00,                                                                       \
    730   0x01,                                                                       \
    731   0x02,                                                                       \
    732   0x03
    733 
    734 #define INPUT_64BITS_IMM_LANECOUNT_FROMZERO                                    \
    735   0x00,                                                                       \
    736   0x01
    737 
    738 #define INPUT_8BITS_IMM_TYPEWIDTH_BASE                                        \
    739   0x01,                                                                       \
    740   0x02,                                                                       \
    741   0x03,                                                                       \
    742   0x04,                                                                       \
    743   0x05,                                                                       \
    744   0x06,                                                                       \
    745   0x07
    746 
    747 #define INPUT_16BITS_IMM_TYPEWIDTH_BASE                                       \
    748   INPUT_8BITS_IMM_TYPEWIDTH_BASE,                                             \
    749   0x08,                                                                       \
    750   0x09,                                                                       \
    751   0x0a,                                                                       \
    752   0x0b,                                                                       \
    753   0x0c,                                                                       \
    754   0x0d,                                                                       \
    755   0x0e,                                                                       \
    756   0x0f
    757 
    758 #define INPUT_32BITS_IMM_TYPEWIDTH_BASE                                       \
    759   INPUT_16BITS_IMM_TYPEWIDTH_BASE,                                            \
    760   0x10,                                                                       \
    761   0x11,                                                                       \
    762   0x12,                                                                       \
    763   0x13,                                                                       \
    764   0x14,                                                                       \
    765   0x15,                                                                       \
    766   0x16,                                                                       \
    767   0x17,                                                                       \
    768   0x18,                                                                       \
    769   0x19,                                                                       \
    770   0x1a,                                                                       \
    771   0x1b,                                                                       \
    772   0x1c,                                                                       \
    773   0x1d,                                                                       \
    774   0x1e,                                                                       \
    775   0x1f
    776 
    777 #define INPUT_64BITS_IMM_TYPEWIDTH_BASE                                       \
    778   INPUT_32BITS_IMM_TYPEWIDTH_BASE,                                            \
    779   0x20,                                                                       \
    780   0x21,                                                                       \
    781   0x22,                                                                       \
    782   0x23,                                                                       \
    783   0x24,                                                                       \
    784   0x25,                                                                       \
    785   0x26,                                                                       \
    786   0x27,                                                                       \
    787   0x28,                                                                       \
    788   0x29,                                                                       \
    789   0x2a,                                                                       \
    790   0x2b,                                                                       \
    791   0x2c,                                                                       \
    792   0x2d,                                                                       \
    793   0x2e,                                                                       \
    794   0x2f,                                                                       \
    795   0x30,                                                                       \
    796   0x31,                                                                       \
    797   0x32,                                                                       \
    798   0x33,                                                                       \
    799   0x34,                                                                       \
    800   0x35,                                                                       \
    801   0x36,                                                                       \
    802   0x37,                                                                       \
    803   0x38,                                                                       \
    804   0x39,                                                                       \
    805   0x3a,                                                                       \
    806   0x3b,                                                                       \
    807   0x3c,                                                                       \
    808   0x3d,                                                                       \
    809   0x3e,                                                                       \
    810   0x3f
    811 
    812 #define INPUT_8BITS_IMM_TYPEWIDTH                                             \
    813   INPUT_8BITS_IMM_TYPEWIDTH_BASE,                                             \
    814   0x08
    815 
    816 #define INPUT_16BITS_IMM_TYPEWIDTH                                            \
    817   INPUT_16BITS_IMM_TYPEWIDTH_BASE,                                            \
    818   0x10
    819 
    820 #define INPUT_32BITS_IMM_TYPEWIDTH                                            \
    821   INPUT_32BITS_IMM_TYPEWIDTH_BASE,                                            \
    822   0x20
    823 
    824 #define INPUT_64BITS_IMM_TYPEWIDTH                                            \
    825   INPUT_64BITS_IMM_TYPEWIDTH_BASE,                                            \
    826   0x40
    827 
    828 #define INPUT_8BITS_IMM_TYPEWIDTH_FROMZERO                                    \
    829   0x00,                                                                       \
    830   INPUT_8BITS_IMM_TYPEWIDTH_BASE
    831 
    832 #define INPUT_16BITS_IMM_TYPEWIDTH_FROMZERO                                   \
    833   0x00,                                                                       \
    834   INPUT_16BITS_IMM_TYPEWIDTH_BASE
    835 
    836 #define INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO                                   \
    837   0x00,                                                                       \
    838   INPUT_32BITS_IMM_TYPEWIDTH_BASE
    839 
    840 #define INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO                                   \
    841   0x00,                                                                       \
    842   INPUT_64BITS_IMM_TYPEWIDTH_BASE
    843 
    844 #define INPUT_16BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH                           \
    845   0x00,                                                                       \
    846   INPUT_16BITS_IMM_TYPEWIDTH_BASE,                                            \
    847   0x10
    848 
    849 #define INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH                           \
    850   0x00,                                                                       \
    851   INPUT_32BITS_IMM_TYPEWIDTH_BASE,                                            \
    852   0x20
    853 
    854 #define INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH                           \
    855   0x00,                                                                       \
    856   INPUT_64BITS_IMM_TYPEWIDTH_BASE,                                            \
    857   0x40
    858 
    859 #define INPUT_8BITS_BASIC                                                     \
    860   0x00,                                                                       \
    861   0x01,                                                                       \
    862   0x02,                                                                       \
    863   0x08,                                                                       \
    864   0x33,                                                                       \
    865   0x55,                                                                       \
    866   0x7d,                                                                       \
    867   0x7e,                                                                       \
    868   0x7f,                                                                       \
    869   0x80,                                                                       \
    870   0x81,                                                                       \
    871   0x82,                                                                       \
    872   0x83,                                                                       \
    873   0xaa,                                                                       \
    874   0xcc,                                                                       \
    875   0xf8,                                                                       \
    876   0xfd,                                                                       \
    877   0xfe,                                                                       \
    878   0xff
    879 
    880 // Basic values for vector SIMD operations of types 4H or 8H.
    881 #define INPUT_16BITS_BASIC                                                    \
    882   0x0000,                                                                     \
    883   0x0001,                                                                     \
    884   0x0002,                                                                     \
    885   0x0010,                                                                     \
    886   0x007d,                                                                     \
    887   0x007e,                                                                     \
    888   0x007f,                                                                     \
    889   0x3333,                                                                     \
    890   0x5555,                                                                     \
    891   0x7ffd,                                                                     \
    892   0x7ffe,                                                                     \
    893   0x7fff,                                                                     \
    894   0x8000,                                                                     \
    895   0x8001,                                                                     \
    896   0xaaaa,                                                                     \
    897   0xcccc,                                                                     \
    898   0xff80,                                                                     \
    899   0xff81,                                                                     \
    900   0xff82,                                                                     \
    901   0xff83,                                                                     \
    902   0xfff0,                                                                     \
    903   0xfffd,                                                                     \
    904   0xfffe,                                                                     \
    905   0xffff
    906 
    907 // Basic values for vector SIMD operations of types 2S or 4S.
    908 #define INPUT_32BITS_BASIC                                                    \
    909   0x00000000,                                                                 \
    910   0x00000001,                                                                 \
    911   0x00000002,                                                                 \
    912   0x00000020,                                                                 \
    913   0x0000007d,                                                                 \
    914   0x0000007e,                                                                 \
    915   0x0000007f,                                                                 \
    916   0x00007ffd,                                                                 \
    917   0x00007ffe,                                                                 \
    918   0x00007fff,                                                                 \
    919   0x33333333,                                                                 \
    920   0x55555555,                                                                 \
    921   0x7ffffffd,                                                                 \
    922   0x7ffffffe,                                                                 \
    923   0x7fffffff,                                                                 \
    924   0x80000000,                                                                 \
    925   0x80000001,                                                                 \
    926   0xaaaaaaaa,                                                                 \
    927   0xcccccccc,                                                                 \
    928   0xffff8000,                                                                 \
    929   0xffff8001,                                                                 \
    930   0xffff8002,                                                                 \
    931   0xffff8003,                                                                 \
    932   0xffffff80,                                                                 \
    933   0xffffff81,                                                                 \
    934   0xffffff82,                                                                 \
    935   0xffffff83,                                                                 \
    936   0xffffffe0,                                                                 \
    937   0xfffffffd,                                                                 \
    938   0xfffffffe,                                                                 \
    939   0xffffffff
    940 
    941 // Basic values for vector SIMD operations of type 2D
    942 #define INPUT_64BITS_BASIC                                                    \
    943   0x0000000000000000,                                                         \
    944   0x0000000000000001,                                                         \
    945   0x0000000000000002,                                                         \
    946   0x0000000000000040,                                                         \
    947   0x000000000000007d,                                                         \
    948   0x000000000000007e,                                                         \
    949   0x000000000000007f,                                                         \
    950   0x0000000000007ffd,                                                         \
    951   0x0000000000007ffe,                                                         \
    952   0x0000000000007fff,                                                         \
    953   0x000000007ffffffd,                                                         \
    954   0x000000007ffffffe,                                                         \
    955   0x000000007fffffff,                                                         \
    956   0x3333333333333333,                                                         \
    957   0x5555555555555555,                                                         \
    958   0x7ffffffffffffffd,                                                         \
    959   0x7ffffffffffffffe,                                                         \
    960   0x7fffffffffffffff,                                                         \
    961   0x8000000000000000,                                                         \
    962   0x8000000000000001,                                                         \
    963   0x8000000000000002,                                                         \
    964   0x8000000000000003,                                                         \
    965   0xaaaaaaaaaaaaaaaa,                                                         \
    966   0xcccccccccccccccc,                                                         \
    967   0xffffffff80000000,                                                         \
    968   0xffffffff80000001,                                                         \
    969   0xffffffff80000002,                                                         \
    970   0xffffffff80000003,                                                         \
    971   0xffffffffffff8000,                                                         \
    972   0xffffffffffff8001,                                                         \
    973   0xffffffffffff8002,                                                         \
    974   0xffffffffffff8003,                                                         \
    975   0xffffffffffffff80,                                                         \
    976   0xffffffffffffff81,                                                         \
    977   0xffffffffffffff82,                                                         \
    978   0xffffffffffffff83,                                                         \
    979   0xffffffffffffffc0,                                                         \
    980   0xfffffffffffffffd,                                                         \
    981   0xfffffffffffffffe,                                                         \
    982   0xffffffffffffffff
    983 
    984 // clang-format on
    985 
    986 // For most 2- and 3-op instructions, use only basic inputs. Because every
    987 // combination is tested, the length of the output trace is very sensitive to
    988 // the length of this list.
    989 static const uint64_t kInputDoubleBasic[] = {INPUT_DOUBLE_BASIC};
    990 static const uint32_t kInputFloatBasic[] = {INPUT_FLOAT_BASIC};
    991 static const uint16_t kInputFloat16Basic[] = {INPUT_FLOAT16_BASIC};
    992 
    993 // TODO: Define different values when the traces file is split.
    994 #define INPUT_DOUBLE_ACC_DESTINATION INPUT_DOUBLE_BASIC
    995 #define INPUT_FLOAT_ACC_DESTINATION INPUT_FLOAT_BASIC
    996 #define INPUT_FLOAT16_ACC_DESTINATION INPUT_FLOAT16_BASIC
    997 
    998 static const uint64_t kInputDoubleAccDestination[] = {
    999     INPUT_DOUBLE_ACC_DESTINATION};
   1000 
   1001 static const uint32_t kInputFloatAccDestination[] = {
   1002     INPUT_FLOAT_ACC_DESTINATION};
   1003 
   1004 static const uint16_t kInputFloat16AccDestination[] = {
   1005     INPUT_FLOAT16_ACC_DESTINATION};
   1006 
   1007 // For conversions, include several extra inputs.
   1008 static const uint64_t kInputDoubleConversions[] = {
   1009     INPUT_DOUBLE_BASIC INPUT_DOUBLE_CONVERSIONS};
   1010 
   1011 static const uint32_t kInputFloatConversions[] = {
   1012     INPUT_FLOAT_BASIC INPUT_FLOAT_CONVERSIONS};
   1013 
   1014 static const uint64_t kInput64bitsFixedPointConversions[] =
   1015     {INPUT_64BITS_BASIC, INPUT_64BITS_FIXEDPOINT_CONVERSIONS};
   1016 
   1017 static const uint32_t kInput32bitsFixedPointConversions[] =
   1018     {INPUT_32BITS_BASIC, INPUT_32BITS_FIXEDPOINT_CONVERSIONS};
   1019 
   1020 static const uint16_t kInput16bitsFixedPointConversions[] =
   1021     {INPUT_16BITS_BASIC, INPUT_16BITS_FIXEDPOINT_CONVERSIONS};
   1022 
   1023 static const uint16_t kInputFloat16Conversions[] = {
   1024     INPUT_FLOAT16_BASIC INPUT_FLOAT16_CONVERSIONS};
   1025 
   1026 static const uint8_t kInput8bitsBasic[] = {INPUT_8BITS_BASIC};
   1027 
   1028 static const uint16_t kInput16bitsBasic[] = {INPUT_16BITS_BASIC};
   1029 
   1030 static const uint32_t kInput32bitsBasic[] = {INPUT_32BITS_BASIC};
   1031 
   1032 static const uint64_t kInput64bitsBasic[] = {INPUT_64BITS_BASIC};
   1033 
   1034 static const int kInput8bitsImmTypeWidth[] = {INPUT_8BITS_IMM_TYPEWIDTH};
   1035 
   1036 static const int kInput16bitsImmTypeWidth[] = {INPUT_16BITS_IMM_TYPEWIDTH};
   1037 
   1038 static const int kInput32bitsImmTypeWidth[] = {INPUT_32BITS_IMM_TYPEWIDTH};
   1039 
   1040 static const int kInput64bitsImmTypeWidth[] = {INPUT_64BITS_IMM_TYPEWIDTH};
   1041 
   1042 static const int kInput8bitsImmTypeWidthFromZero[] = {
   1043     INPUT_8BITS_IMM_TYPEWIDTH_FROMZERO};
   1044 
   1045 static const int kInput16bitsImmTypeWidthFromZero[] = {
   1046     INPUT_16BITS_IMM_TYPEWIDTH_FROMZERO};
   1047 
   1048 static const int kInput32bitsImmTypeWidthFromZero[] = {
   1049     INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO};
   1050 
   1051 static const int kInput64bitsImmTypeWidthFromZero[] = {
   1052     INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO};
   1053 
   1054 static const int kInput16bitsImmTypeWidthFromZeroToWidth[] = {
   1055     INPUT_16BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH};
   1056 
   1057 static const int kInput32bitsImmTypeWidthFromZeroToWidth[] = {
   1058     INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH};
   1059 
   1060 static const int kInput64bitsImmTypeWidthFromZeroToWidth[] = {
   1061     INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH};
   1062 
   1063 // These immediate values are used only in 'shll{2}' tests.
   1064 static const int kInput8bitsImmSHLL[] = {8};
   1065 static const int kInput16bitsImmSHLL[] = {16};
   1066 static const int kInput32bitsImmSHLL[] = {32};
   1067 
   1068 static const double kInputDoubleImmZero[] = {0.0};
   1069 
   1070 static const int kInput8bitsImmZero[] = {0};
   1071 
   1072 static const int kInput16bitsImmZero[] = {0};
   1073 
   1074 static const int kInput32bitsImmZero[] = {0};
   1075 
   1076 static const int kInput64bitsImmZero[] = {0};
   1077 
   1078 static const int kInput8bitsImmLaneCountFromZero[] = {
   1079     INPUT_8BITS_IMM_LANECOUNT_FROMZERO};
   1080 
   1081 static const int kInput16bitsImmLaneCountFromZero[] = {
   1082     INPUT_16BITS_IMM_LANECOUNT_FROMZERO};
   1083 
   1084 static const int kInput32bitsImmLaneCountFromZero[] = {
   1085     INPUT_32BITS_IMM_LANECOUNT_FROMZERO};
   1086 
   1087 static const int kInput64bitsImmLaneCountFromZero[] = {
   1088     INPUT_64BITS_IMM_LANECOUNT_FROMZERO};
   1089 
   1090 // TODO: Define different values when the traces file is split.
   1091 #define INPUT_8BITS_ACC_DESTINATION INPUT_8BITS_BASIC
   1092 #define INPUT_16BITS_ACC_DESTINATION INPUT_16BITS_BASIC
   1093 #define INPUT_32BITS_ACC_DESTINATION INPUT_32BITS_BASIC
   1094 #define INPUT_64BITS_ACC_DESTINATION INPUT_64BITS_BASIC
   1095 
   1096 static const uint8_t kInput8bitsAccDestination[] = {
   1097     INPUT_8BITS_ACC_DESTINATION};
   1098 
   1099 static const uint16_t kInput16bitsAccDestination[] = {
   1100     INPUT_16BITS_ACC_DESTINATION};
   1101 
   1102 static const uint32_t kInput32bitsAccDestination[] = {
   1103     INPUT_32BITS_ACC_DESTINATION};
   1104 
   1105 static const uint64_t kInput64bitsAccDestination[] = {
   1106     INPUT_64BITS_ACC_DESTINATION};
   1107 
   1108 static const int kInputHIndices[] = {0, 1, 2, 3, 4, 5, 6, 7};
   1109 
   1110 static const int kInputSIndices[] = {0, 1, 2, 3};
   1111 
   1112 static const int kInputDIndices[] = {0, 1};
   1113