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