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 #define INPUT_32BITS_FIXEDPOINT_CONVERSIONS                                   \
    452   0x00000000,                                                                 \
    453   0x00000001,                                                                 \
    454   0x00800000,                                                                 \
    455   0x00800001,                                                                 \
    456   0x00876543,                                                                 \
    457   0x01000000,                                                                 \
    458   0x01000001,                                                                 \
    459   0x01800000,                                                                 \
    460   0x01800001,                                                                 \
    461   0x02000000,                                                                 \
    462   0x02000001,                                                                 \
    463   0x02800000,                                                                 \
    464   0x02800001,                                                                 \
    465   0x03000000,                                                                 \
    466   0x40000000,                                                                 \
    467   0x7fffff80,                                                                 \
    468   0x7fffffc0,                                                                 \
    469   0x7fffffff,                                                                 \
    470   0x80000000,                                                                 \
    471   0x80000100,                                                                 \
    472   0xffffff00,                                                                 \
    473   0xffffff80,                                                                 \
    474   0xffffffff,                                                                 \
    475   0xffffffff
    476 
    477 #define INPUT_64BITS_FIXEDPOINT_CONVERSIONS                                   \
    478   0x0000000000000000,                                                         \
    479   0x0000000000000001,                                                         \
    480   0x0000000040000000,                                                         \
    481   0x0000000100000000,                                                         \
    482   0x4000000000000000,                                                         \
    483   0x4000000000000400,                                                         \
    484   0x000000007fffffff,                                                         \
    485   0x00000000ffffffff,                                                         \
    486   0x0000000080000000,                                                         \
    487   0x0000000080000001,                                                         \
    488   0x7ffffffffffffc00,                                                         \
    489   0x0123456789abcde0,                                                         \
    490   0x0000000012345678,                                                         \
    491   0xffffffffc0000000,                                                         \
    492   0xffffffff00000000,                                                         \
    493   0xc000000000000000,                                                         \
    494   0x1000000000000000,                                                         \
    495   0x1000000000000001,                                                         \
    496   0x1000000000000080,                                                         \
    497   0x1000000000000081,                                                         \
    498   0x1000000000000100,                                                         \
    499   0x1000000000000101,                                                         \
    500   0x1000000000000180,                                                         \
    501   0x1000000000000181,                                                         \
    502   0x1000000000000200,                                                         \
    503   0x1000000000000201,                                                         \
    504   0x1000000000000280,                                                         \
    505   0x1000000000000281,                                                         \
    506   0x1000000000000300,                                                         \
    507   0x8000000000000000,                                                         \
    508   0x8000000000000001,                                                         \
    509   0x8000000000000200,                                                         \
    510   0x8000000000000201,                                                         \
    511   0x8000000000000400,                                                         \
    512   0x8000000000000401,                                                         \
    513   0x8000000000000600,                                                         \
    514   0x8000000000000601,                                                         \
    515   0x8000000000000800,                                                         \
    516   0x8000000000000801,                                                         \
    517   0x8000000000000a00,                                                         \
    518   0x8000000000000a01,                                                         \
    519   0x8000000000000c00,                                                         \
    520   0x7ffffffffffffe00,                                                         \
    521   0x7fffffffffffffff,                                                         \
    522   0xfffffffffffffc00,                                                         \
    523   0xffffffffffffffff
    524 
    525 // Float16 - Basic test values.
    526 #define INPUT_FLOAT16_BASIC                                                   \
    527   0x3c00,  /* 1                             0 01111 0000000000 */             \
    528   0x3c01,  /* Next smallest float after 1.  0 01111 0000000001 */             \
    529   0xc000,  /* -2                            1 10000 0000000000 */             \
    530   0x7bff,  /* Maximum in half precision.    0 11110 1111111111 */             \
    531   0x0400,  /* Minimum positive normal.      0 00001 0000000000 */             \
    532   0x03ff,  /* Maximum subnormal.            0 00000 1111111111 */             \
    533   0x0001,  /* Minimum positive subnormal.   0 00000 0000000001 */             \
    534   0x0000,  /* 0                             0 00000 0000000000 */             \
    535   0x8000,  /* -0                            1 00000 0000000000 */             \
    536   0x7c00,  /* inf                           0 11111 0000000000 */             \
    537   0xfc00,  /* -inf                          1 11111 0000000000 */             \
    538   0x3555,  /* 1/3                           0 01101 0101010101 */             \
    539   0x3e00,  /* 1.5                           0 01111 1000000000 */             \
    540   0x4900,  /* 10                            0 10010 0100000000 */             \
    541   0xbe00,  /* -1.5                          1 01111 1000000000 */             \
    542   0xc900,  /* -10                           1 10010 0100000000 */             \
    543 
    544 // Float16 - Conversion test values.
    545 // Note the second column in the comments shows what the value might
    546 // look like if represented in single precision (32 bit) floating point format.
    547 #define INPUT_FLOAT16_CONVERSIONS                                             \
    548   0x37ff,  /* 0.4999999701976776     0x3effffff  f16: 0 01101 1111111111 */   \
    549   0x3800,  /* 0.4999999701976776     0x3effffff  f16: 0 01110 0000000000 */   \
    550   0x3801,  /* 0.5000000596046448     0x3f000001  f16: 0 01110 0000000001 */   \
    551   0x3bff,  /* 0.9999999403953552     0x3f7fffff  f16: 0 01110 1111111111 */   \
    552   0x7c7f,  /* nan                    0x7f8fffff  f16: 0 11111 0001111111 */   \
    553   0x7e91,  /* nan                    0x7fd23456  f16: 0 11111 1010010001 */   \
    554   0x7e00,  /* nan                    0x7fc00000  f16: 0 11111 1000000000 */   \
    555   0x7c91,  /* nan                    0x7f923456  f16: 0 11111 0010010001 */   \
    556   0x8001,  /* -1.175494350822288e-38 0x80800000  f16: 1 00000 0000000001 */   \
    557   0xb7ff,  /* -0.4999999701976776    0xbeffffff  f16: 1 01101 1111111111 */   \
    558   0xb800,  /* -0.4999999701976776    0xbeffffff  f16: 1 01110 0000000000 */   \
    559   0xb801,  /* -0.5000000596046448    0xbf000001  f16: 1 01110 0000000001 */   \
    560   0xbbff,  /* -0.9999999403953552    0xbf7fffff  f16: 1 01110 1111111111 */   \
    561   0xbc00,  /* -0.9999999403953552    0xbf7fffff  f16: 1 01111 0000000000 */   \
    562   0xbc01,  /* -1.00000011920929      0xbf800001  f16: 1 01111 0000000001 */   \
    563   0xfc7f,  /* -nan                   0xff8fffff  f16: 1 11111 0001111111 */   \
    564   0xfe91,  /* -nan                   0xffd23456  f16: 1 11111 1010010001 */   \
    565   0xfe00,  /* -nan                   0xffc00000  f16: 1 11111 1000000000 */   \
    566   0xfc91,  /* -nan                   0xff923456  f16: 1 11111 0010010001 */   \
    567   0xfbff,  /* -8388608               0xcb000000  f16: 1 11110 1111111111 */   \
    568   0x0002,  /* 1.192092895507812e-07  0x00000002  f16: 0 00000 0000000010 */   \
    569   0x8002,  /* -1.192092895507812e-07 0x80000002  f16: 1 00000 0000000010 */   \
    570   0x8fff,  /* -0.0004880428314208984 0x8fffffff  f16: 1 00011 1111111111 */   \
    571   0xffff,  /* -nan                   0xffffffff  f16: 1 11111 1111111111 */   \
    572 
    573 // Some useful sets of values for testing vector SIMD operations.
    574 #define INPUT_8BITS_IMM_LANECOUNT_FROMZERO                                    \
    575   0x00,                                                                       \
    576   0x01,                                                                       \
    577   0x02,                                                                       \
    578   0x03,                                                                       \
    579   0x04,                                                                       \
    580   0x05,                                                                       \
    581   0x06,                                                                       \
    582   0x07,                                                                       \
    583   0x08,                                                                       \
    584   0x09,                                                                       \
    585   0x0a,                                                                       \
    586   0x0b,                                                                       \
    587   0x0c,                                                                       \
    588   0x0d,                                                                       \
    589   0x0e,                                                                       \
    590   0x0f
    591 
    592 #define INPUT_16BITS_IMM_LANECOUNT_FROMZERO                                    \
    593   0x00,                                                                       \
    594   0x01,                                                                       \
    595   0x02,                                                                       \
    596   0x03,                                                                       \
    597   0x04,                                                                       \
    598   0x05,                                                                       \
    599   0x06,                                                                       \
    600   0x07
    601 
    602 #define INPUT_32BITS_IMM_LANECOUNT_FROMZERO                                    \
    603   0x00,                                                                       \
    604   0x01,                                                                       \
    605   0x02,                                                                       \
    606   0x03
    607 
    608 #define INPUT_64BITS_IMM_LANECOUNT_FROMZERO                                    \
    609   0x00,                                                                       \
    610   0x01
    611 
    612 #define INPUT_8BITS_IMM_TYPEWIDTH_BASE                                        \
    613   0x01,                                                                       \
    614   0x02,                                                                       \
    615   0x03,                                                                       \
    616   0x04,                                                                       \
    617   0x05,                                                                       \
    618   0x06,                                                                       \
    619   0x07
    620 
    621 #define INPUT_16BITS_IMM_TYPEWIDTH_BASE                                       \
    622   INPUT_8BITS_IMM_TYPEWIDTH_BASE,                                             \
    623   0x08,                                                                       \
    624   0x09,                                                                       \
    625   0x0a,                                                                       \
    626   0x0b,                                                                       \
    627   0x0c,                                                                       \
    628   0x0d,                                                                       \
    629   0x0e,                                                                       \
    630   0x0f
    631 
    632 #define INPUT_32BITS_IMM_TYPEWIDTH_BASE                                       \
    633   INPUT_16BITS_IMM_TYPEWIDTH_BASE,                                            \
    634   0x10,                                                                       \
    635   0x11,                                                                       \
    636   0x12,                                                                       \
    637   0x13,                                                                       \
    638   0x14,                                                                       \
    639   0x15,                                                                       \
    640   0x16,                                                                       \
    641   0x17,                                                                       \
    642   0x18,                                                                       \
    643   0x19,                                                                       \
    644   0x1a,                                                                       \
    645   0x1b,                                                                       \
    646   0x1c,                                                                       \
    647   0x1d,                                                                       \
    648   0x1e,                                                                       \
    649   0x1f
    650 
    651 #define INPUT_64BITS_IMM_TYPEWIDTH_BASE                                       \
    652   INPUT_32BITS_IMM_TYPEWIDTH_BASE,                                            \
    653   0x20,                                                                       \
    654   0x21,                                                                       \
    655   0x22,                                                                       \
    656   0x23,                                                                       \
    657   0x24,                                                                       \
    658   0x25,                                                                       \
    659   0x26,                                                                       \
    660   0x27,                                                                       \
    661   0x28,                                                                       \
    662   0x29,                                                                       \
    663   0x2a,                                                                       \
    664   0x2b,                                                                       \
    665   0x2c,                                                                       \
    666   0x2d,                                                                       \
    667   0x2e,                                                                       \
    668   0x2f,                                                                       \
    669   0x30,                                                                       \
    670   0x31,                                                                       \
    671   0x32,                                                                       \
    672   0x33,                                                                       \
    673   0x34,                                                                       \
    674   0x35,                                                                       \
    675   0x36,                                                                       \
    676   0x37,                                                                       \
    677   0x38,                                                                       \
    678   0x39,                                                                       \
    679   0x3a,                                                                       \
    680   0x3b,                                                                       \
    681   0x3c,                                                                       \
    682   0x3d,                                                                       \
    683   0x3e,                                                                       \
    684   0x3f
    685 
    686 #define INPUT_8BITS_IMM_TYPEWIDTH                                             \
    687   INPUT_8BITS_IMM_TYPEWIDTH_BASE,                                             \
    688   0x08
    689 
    690 #define INPUT_16BITS_IMM_TYPEWIDTH                                            \
    691   INPUT_16BITS_IMM_TYPEWIDTH_BASE,                                            \
    692   0x10
    693 
    694 #define INPUT_32BITS_IMM_TYPEWIDTH                                            \
    695   INPUT_32BITS_IMM_TYPEWIDTH_BASE,                                            \
    696   0x20
    697 
    698 #define INPUT_64BITS_IMM_TYPEWIDTH                                            \
    699   INPUT_64BITS_IMM_TYPEWIDTH_BASE,                                            \
    700   0x40
    701 
    702 #define INPUT_8BITS_IMM_TYPEWIDTH_FROMZERO                                    \
    703   0x00,                                                                       \
    704   INPUT_8BITS_IMM_TYPEWIDTH_BASE
    705 
    706 #define INPUT_16BITS_IMM_TYPEWIDTH_FROMZERO                                   \
    707   0x00,                                                                       \
    708   INPUT_16BITS_IMM_TYPEWIDTH_BASE
    709 
    710 #define INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO                                   \
    711   0x00,                                                                       \
    712   INPUT_32BITS_IMM_TYPEWIDTH_BASE
    713 
    714 #define INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO                                   \
    715   0x00,                                                                       \
    716   INPUT_64BITS_IMM_TYPEWIDTH_BASE
    717 
    718 #define INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH                           \
    719   0x00,                                                                       \
    720   INPUT_32BITS_IMM_TYPEWIDTH_BASE,                                            \
    721   0x20
    722 
    723 #define INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH                           \
    724   0x00,                                                                       \
    725   INPUT_64BITS_IMM_TYPEWIDTH_BASE,                                            \
    726   0x40
    727 
    728 #define INPUT_8BITS_BASIC                                                     \
    729   0x00,                                                                       \
    730   0x01,                                                                       \
    731   0x02,                                                                       \
    732   0x08,                                                                       \
    733   0x33,                                                                       \
    734   0x55,                                                                       \
    735   0x7d,                                                                       \
    736   0x7e,                                                                       \
    737   0x7f,                                                                       \
    738   0x80,                                                                       \
    739   0x81,                                                                       \
    740   0x82,                                                                       \
    741   0x83,                                                                       \
    742   0xaa,                                                                       \
    743   0xcc,                                                                       \
    744   0xf8,                                                                       \
    745   0xfd,                                                                       \
    746   0xfe,                                                                       \
    747   0xff
    748 
    749 // Basic values for vector SIMD operations of types 4H or 8H.
    750 #define INPUT_16BITS_BASIC                                                    \
    751   0x0000,                                                                     \
    752   0x0001,                                                                     \
    753   0x0002,                                                                     \
    754   0x0010,                                                                     \
    755   0x007d,                                                                     \
    756   0x007e,                                                                     \
    757   0x007f,                                                                     \
    758   0x3333,                                                                     \
    759   0x5555,                                                                     \
    760   0x7ffd,                                                                     \
    761   0x7ffe,                                                                     \
    762   0x7fff,                                                                     \
    763   0x8000,                                                                     \
    764   0x8001,                                                                     \
    765   0xaaaa,                                                                     \
    766   0xcccc,                                                                     \
    767   0xff80,                                                                     \
    768   0xff81,                                                                     \
    769   0xff82,                                                                     \
    770   0xff83,                                                                     \
    771   0xfff0,                                                                     \
    772   0xfffd,                                                                     \
    773   0xfffe,                                                                     \
    774   0xffff
    775 
    776 // Basic values for vector SIMD operations of types 2S or 4S.
    777 #define INPUT_32BITS_BASIC                                                    \
    778   0x00000000,                                                                 \
    779   0x00000001,                                                                 \
    780   0x00000002,                                                                 \
    781   0x00000020,                                                                 \
    782   0x0000007d,                                                                 \
    783   0x0000007e,                                                                 \
    784   0x0000007f,                                                                 \
    785   0x00007ffd,                                                                 \
    786   0x00007ffe,                                                                 \
    787   0x00007fff,                                                                 \
    788   0x33333333,                                                                 \
    789   0x55555555,                                                                 \
    790   0x7ffffffd,                                                                 \
    791   0x7ffffffe,                                                                 \
    792   0x7fffffff,                                                                 \
    793   0x80000000,                                                                 \
    794   0x80000001,                                                                 \
    795   0xaaaaaaaa,                                                                 \
    796   0xcccccccc,                                                                 \
    797   0xffff8000,                                                                 \
    798   0xffff8001,                                                                 \
    799   0xffff8002,                                                                 \
    800   0xffff8003,                                                                 \
    801   0xffffff80,                                                                 \
    802   0xffffff81,                                                                 \
    803   0xffffff82,                                                                 \
    804   0xffffff83,                                                                 \
    805   0xffffffe0,                                                                 \
    806   0xfffffffd,                                                                 \
    807   0xfffffffe,                                                                 \
    808   0xffffffff
    809 
    810 // Basic values for vector SIMD operations of type 2D
    811 #define INPUT_64BITS_BASIC                                                    \
    812   0x0000000000000000,                                                         \
    813   0x0000000000000001,                                                         \
    814   0x0000000000000002,                                                         \
    815   0x0000000000000040,                                                         \
    816   0x000000000000007d,                                                         \
    817   0x000000000000007e,                                                         \
    818   0x000000000000007f,                                                         \
    819   0x0000000000007ffd,                                                         \
    820   0x0000000000007ffe,                                                         \
    821   0x0000000000007fff,                                                         \
    822   0x000000007ffffffd,                                                         \
    823   0x000000007ffffffe,                                                         \
    824   0x000000007fffffff,                                                         \
    825   0x3333333333333333,                                                         \
    826   0x5555555555555555,                                                         \
    827   0x7ffffffffffffffd,                                                         \
    828   0x7ffffffffffffffe,                                                         \
    829   0x7fffffffffffffff,                                                         \
    830   0x8000000000000000,                                                         \
    831   0x8000000000000001,                                                         \
    832   0x8000000000000002,                                                         \
    833   0x8000000000000003,                                                         \
    834   0xaaaaaaaaaaaaaaaa,                                                         \
    835   0xcccccccccccccccc,                                                         \
    836   0xffffffff80000000,                                                         \
    837   0xffffffff80000001,                                                         \
    838   0xffffffff80000002,                                                         \
    839   0xffffffff80000003,                                                         \
    840   0xffffffffffff8000,                                                         \
    841   0xffffffffffff8001,                                                         \
    842   0xffffffffffff8002,                                                         \
    843   0xffffffffffff8003,                                                         \
    844   0xffffffffffffff80,                                                         \
    845   0xffffffffffffff81,                                                         \
    846   0xffffffffffffff82,                                                         \
    847   0xffffffffffffff83,                                                         \
    848   0xffffffffffffffc0,                                                         \
    849   0xfffffffffffffffd,                                                         \
    850   0xfffffffffffffffe,                                                         \
    851   0xffffffffffffffff
    852 
    853 // clang-format on
    854 
    855 // For most 2- and 3-op instructions, use only basic inputs. Because every
    856 // combination is tested, the length of the output trace is very sensitive to
    857 // the length of this list.
    858 static const uint64_t kInputDoubleBasic[] = {INPUT_DOUBLE_BASIC};
    859 static const uint32_t kInputFloatBasic[] = {INPUT_FLOAT_BASIC};
    860 
    861 // TODO: Define different values when the traces file is split.
    862 #define INPUT_DOUBLE_ACC_DESTINATION INPUT_DOUBLE_BASIC
    863 #define INPUT_FLOAT_ACC_DESTINATION INPUT_FLOAT_BASIC
    864 
    865 static const uint64_t kInputDoubleAccDestination[] = {
    866     INPUT_DOUBLE_ACC_DESTINATION};
    867 
    868 static const uint32_t kInputFloatAccDestination[] = {
    869     INPUT_FLOAT_ACC_DESTINATION};
    870 
    871 // For conversions, include several extra inputs.
    872 static const uint64_t kInputDoubleConversions[] = {
    873     INPUT_DOUBLE_BASIC INPUT_DOUBLE_CONVERSIONS};
    874 
    875 static const uint32_t kInputFloatConversions[] = {
    876     INPUT_FLOAT_BASIC INPUT_FLOAT_CONVERSIONS};
    877 
    878 static const uint64_t kInput64bitsFixedPointConversions[] =
    879     {INPUT_64BITS_BASIC, INPUT_64BITS_FIXEDPOINT_CONVERSIONS};
    880 
    881 static const uint32_t kInput32bitsFixedPointConversions[] =
    882     {INPUT_32BITS_BASIC, INPUT_32BITS_FIXEDPOINT_CONVERSIONS};
    883 
    884 static const uint16_t kInputFloat16Conversions[] = {
    885     INPUT_FLOAT16_BASIC INPUT_FLOAT16_CONVERSIONS};
    886 
    887 static const uint8_t kInput8bitsBasic[] = {INPUT_8BITS_BASIC};
    888 
    889 static const uint16_t kInput16bitsBasic[] = {INPUT_16BITS_BASIC};
    890 
    891 static const uint32_t kInput32bitsBasic[] = {INPUT_32BITS_BASIC};
    892 
    893 static const uint64_t kInput64bitsBasic[] = {INPUT_64BITS_BASIC};
    894 
    895 static const int kInput8bitsImmTypeWidth[] = {INPUT_8BITS_IMM_TYPEWIDTH};
    896 
    897 static const int kInput16bitsImmTypeWidth[] = {INPUT_16BITS_IMM_TYPEWIDTH};
    898 
    899 static const int kInput32bitsImmTypeWidth[] = {INPUT_32BITS_IMM_TYPEWIDTH};
    900 
    901 static const int kInput64bitsImmTypeWidth[] = {INPUT_64BITS_IMM_TYPEWIDTH};
    902 
    903 static const int kInput8bitsImmTypeWidthFromZero[] = {
    904     INPUT_8BITS_IMM_TYPEWIDTH_FROMZERO};
    905 
    906 static const int kInput16bitsImmTypeWidthFromZero[] = {
    907     INPUT_16BITS_IMM_TYPEWIDTH_FROMZERO};
    908 
    909 static const int kInput32bitsImmTypeWidthFromZero[] = {
    910     INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO};
    911 
    912 static const int kInput64bitsImmTypeWidthFromZero[] = {
    913     INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO};
    914 
    915 static const int kInput32bitsImmTypeWidthFromZeroToWidth[] = {
    916     INPUT_32BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH};
    917 
    918 static const int kInput64bitsImmTypeWidthFromZeroToWidth[] = {
    919     INPUT_64BITS_IMM_TYPEWIDTH_FROMZERO_TOWIDTH};
    920 
    921 // These immediate values are used only in 'shll{2}' tests.
    922 static const int kInput8bitsImmSHLL[] = {8};
    923 static const int kInput16bitsImmSHLL[] = {16};
    924 static const int kInput32bitsImmSHLL[] = {32};
    925 
    926 static const double kInputDoubleImmZero[] = {0.0};
    927 
    928 static const int kInput8bitsImmZero[] = {0};
    929 
    930 static const int kInput16bitsImmZero[] = {0};
    931 
    932 static const int kInput32bitsImmZero[] = {0};
    933 
    934 static const int kInput64bitsImmZero[] = {0};
    935 
    936 static const int kInput8bitsImmLaneCountFromZero[] = {
    937     INPUT_8BITS_IMM_LANECOUNT_FROMZERO};
    938 
    939 static const int kInput16bitsImmLaneCountFromZero[] = {
    940     INPUT_16BITS_IMM_LANECOUNT_FROMZERO};
    941 
    942 static const int kInput32bitsImmLaneCountFromZero[] = {
    943     INPUT_32BITS_IMM_LANECOUNT_FROMZERO};
    944 
    945 static const int kInput64bitsImmLaneCountFromZero[] = {
    946     INPUT_64BITS_IMM_LANECOUNT_FROMZERO};
    947 
    948 // TODO: Define different values when the traces file is split.
    949 #define INPUT_8BITS_ACC_DESTINATION INPUT_8BITS_BASIC
    950 #define INPUT_16BITS_ACC_DESTINATION INPUT_16BITS_BASIC
    951 #define INPUT_32BITS_ACC_DESTINATION INPUT_32BITS_BASIC
    952 #define INPUT_64BITS_ACC_DESTINATION INPUT_64BITS_BASIC
    953 
    954 static const uint8_t kInput8bitsAccDestination[] = {
    955     INPUT_8BITS_ACC_DESTINATION};
    956 
    957 static const uint16_t kInput16bitsAccDestination[] = {
    958     INPUT_16BITS_ACC_DESTINATION};
    959 
    960 static const uint32_t kInput32bitsAccDestination[] = {
    961     INPUT_32BITS_ACC_DESTINATION};
    962 
    963 static const uint64_t kInput64bitsAccDestination[] = {
    964     INPUT_64BITS_ACC_DESTINATION};
    965 
    966 static const int kInputHIndices[] = {0, 1, 2, 3, 4, 5, 6, 7};
    967 
    968 static const int kInputSIndices[] = {0, 1, 2, 3};
    969 
    970 static const int kInputDIndices[] = {0, 1};
    971