1*f3782652STreehugger Robot /* 2*f3782652STreehugger Robot 3*f3782652STreehugger Robot Copyright (c) 2013 STMicroelectronics 4*f3782652STreehugger Robot Written by Christophe Lyon 5*f3782652STreehugger Robot 6*f3782652STreehugger Robot Permission is hereby granted, free of charge, to any person obtaining a copy 7*f3782652STreehugger Robot of this software and associated documentation files (the "Software"), to deal 8*f3782652STreehugger Robot in the Software without restriction, including without limitation the rights 9*f3782652STreehugger Robot to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10*f3782652STreehugger Robot copies of the Software, and to permit persons to whom the Software is 11*f3782652STreehugger Robot furnished to do so, subject to the following conditions: 12*f3782652STreehugger Robot 13*f3782652STreehugger Robot The above copyright notice and this permission notice shall be included in 14*f3782652STreehugger Robot all copies or substantial portions of the Software. 15*f3782652STreehugger Robot 16*f3782652STreehugger Robot THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17*f3782652STreehugger Robot IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18*f3782652STreehugger Robot FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19*f3782652STreehugger Robot AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20*f3782652STreehugger Robot LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21*f3782652STreehugger Robot OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22*f3782652STreehugger Robot THE SOFTWARE. 23*f3782652STreehugger Robot 24*f3782652STreehugger Robot */ 25*f3782652STreehugger Robot 26*f3782652STreehugger Robot #if defined(__arm__) || defined(__aarch64__) 27*f3782652STreehugger Robot #include <arm_neon.h> 28*f3782652STreehugger Robot #else 29*f3782652STreehugger Robot #include "stm-arm-neon.h" 30*f3782652STreehugger Robot #endif 31*f3782652STreehugger Robot #include "stm-arm-neon-ref.h" 32*f3782652STreehugger Robot 33*f3782652STreehugger Robot /* Initialization helpers; 4 slices are needed for vld2, vld3 and 34*f3782652STreehugger Robot vld4. */ 35*f3782652STreehugger Robot #define MY_INIT_TAB(T,W,N) xNAME(INIT_TAB,N)(T##W##_t) 36*f3782652STreehugger Robot #define MY_INIT_TAB2(T,W,N) xNAME(INIT_TAB2,N)(T##W##_t) 37*f3782652STreehugger Robot #define MY_INIT_TAB3(T,W,N) xNAME(INIT_TAB3,N)(T##W##_t) 38*f3782652STreehugger Robot #define MY_INIT_TAB4(T,W,N) xNAME(INIT_TAB4,N)(T##W##_t) 39*f3782652STreehugger Robot 40*f3782652STreehugger Robot /* Initialized input buffers. */ 41*f3782652STreehugger Robot #define VECT_VAR_DECL_INIT(V, T, W, N) \ 42*f3782652STreehugger Robot VECT_VAR_DECL(V,T,W,N) [] = { MY_INIT_TAB(T,W,N) }; 43*f3782652STreehugger Robot 44*f3782652STreehugger Robot /* Specialized initializer with 4 entries, as used by vldX_dup and 45*f3782652STreehugger Robot vdup tests, which iterate 4 times on input buffers. */ 46*f3782652STreehugger Robot #define VECT_VAR_DECL_INIT4(V, T, W, N) \ 47*f3782652STreehugger Robot VECT_VAR_DECL(V,T,W,N) [] = { MY_INIT_TAB(T,W,4) }; 48*f3782652STreehugger Robot 49*f3782652STreehugger Robot /* Initializers for arrays of vectors. */ 50*f3782652STreehugger Robot #define VECT_ARRAY_INIT2(V, T, W, N) \ 51*f3782652STreehugger Robot T##W##_t VECT_ARRAY_VAR(V,T,W,N,2)[] = \ 52*f3782652STreehugger Robot { MY_INIT_TAB(T,W,N) \ 53*f3782652STreehugger Robot MY_INIT_TAB2(T,W,N) }; 54*f3782652STreehugger Robot 55*f3782652STreehugger Robot #define VECT_ARRAY_INIT3(V, T, W, N) \ 56*f3782652STreehugger Robot T##W##_t VECT_ARRAY_VAR(V,T,W,N,3)[] = \ 57*f3782652STreehugger Robot { MY_INIT_TAB(T,W,N) \ 58*f3782652STreehugger Robot MY_INIT_TAB2(T,W,N) \ 59*f3782652STreehugger Robot MY_INIT_TAB3(T,W,N) }; 60*f3782652STreehugger Robot 61*f3782652STreehugger Robot #define VECT_ARRAY_INIT4(V, T, W, N) \ 62*f3782652STreehugger Robot T##W##_t VECT_ARRAY_VAR(V,T,W,N,4)[] = \ 63*f3782652STreehugger Robot { MY_INIT_TAB(T,W,N) \ 64*f3782652STreehugger Robot MY_INIT_TAB2(T,W,N) \ 65*f3782652STreehugger Robot MY_INIT_TAB3(T,W,N) \ 66*f3782652STreehugger Robot MY_INIT_TAB4(T,W,N) }; 67*f3782652STreehugger Robot 68*f3782652STreehugger Robot /* Sample initialization vectors. */ 69*f3782652STreehugger Robot #define INIT_TAB_1(T) \ 70*f3782652STreehugger Robot (T)-16, 71*f3782652STreehugger Robot #define INIT_TAB2_1(T) \ 72*f3782652STreehugger Robot (T)-15, 73*f3782652STreehugger Robot #define INIT_TAB3_1(T) \ 74*f3782652STreehugger Robot (T)-14, 75*f3782652STreehugger Robot #define INIT_TAB4_1(T) \ 76*f3782652STreehugger Robot (T)-13, 77*f3782652STreehugger Robot 78*f3782652STreehugger Robot #define INIT_TAB_2(T) \ 79*f3782652STreehugger Robot (T)-16, (T)-15, 80*f3782652STreehugger Robot #define INIT_TAB2_2(T) \ 81*f3782652STreehugger Robot (T)-14, (T)-13, 82*f3782652STreehugger Robot #define INIT_TAB3_2(T) \ 83*f3782652STreehugger Robot (T)-12, (T)-11, 84*f3782652STreehugger Robot #define INIT_TAB4_2(T) \ 85*f3782652STreehugger Robot (T)-10, (T)-9, 86*f3782652STreehugger Robot 87*f3782652STreehugger Robot /* Initializer for vld3_lane tests. */ 88*f3782652STreehugger Robot #define INIT_TAB_3(T) \ 89*f3782652STreehugger Robot (T)-16, (T)-15, (T)-14, 90*f3782652STreehugger Robot 91*f3782652STreehugger Robot #define INIT_TAB_4(T) \ 92*f3782652STreehugger Robot (T)-16, (T)-15, (T)-14, (T)-13, 93*f3782652STreehugger Robot #define INIT_TAB2_4(T) \ 94*f3782652STreehugger Robot (T)-12, (T)-11, (T)-10, (T)-9, 95*f3782652STreehugger Robot #define INIT_TAB3_4(T) \ 96*f3782652STreehugger Robot (T)-8, (T)-7, (T)-6, (T)-5, 97*f3782652STreehugger Robot #define INIT_TAB4_4(T) \ 98*f3782652STreehugger Robot (T)-4, (T)-3, (T)-2, (T)-1, 99*f3782652STreehugger Robot 100*f3782652STreehugger Robot #define INIT_TAB_8(T) \ 101*f3782652STreehugger Robot (T)-16, (T)-15, (T)-14, (T)-13, (T)-12, (T)-11, (T)-10, (T)-9, 102*f3782652STreehugger Robot #define INIT_TAB2_8(T) \ 103*f3782652STreehugger Robot (T)-8, (T)-7, (T)-6, (T)-5, (T)-4, (T)-3, (T)-2, (T)-1, 104*f3782652STreehugger Robot #define INIT_TAB3_8(T) \ 105*f3782652STreehugger Robot (T)0, (T)1, (T)2, (T)3, (T)4, (T)5, (T)6, (T)7, 106*f3782652STreehugger Robot #define INIT_TAB4_8(T) \ 107*f3782652STreehugger Robot (T)8, (T)9, (T)10, (T)11, (T)12, (T)13, (T)14, (T)15, 108*f3782652STreehugger Robot 109*f3782652STreehugger Robot #define INIT_TAB_16(T) \ 110*f3782652STreehugger Robot (T)-16, (T)-15, (T)-14, (T)-13, (T)-12, (T)-11, (T)-10, (T)-9, \ 111*f3782652STreehugger Robot (T)-8, (T)-7, (T)-6, (T)-5, (T)-4, (T)-3, (T)-2, (T)-1, 112*f3782652STreehugger Robot #define INIT_TAB2_16(T) \ 113*f3782652STreehugger Robot (T)0, (T)1, (T)2, (T)3, (T)4, (T)5, (T)6, (T)7, \ 114*f3782652STreehugger Robot (T)8, (T)9, (T)10, (T)11, (T)12, (T)13, (T)14, (T)15, 115*f3782652STreehugger Robot #define INIT_TAB3_16(T) \ 116*f3782652STreehugger Robot (T)16, (T)17, (T)18, (T)19, (T)20, (T)21, (T)22, (T)23, \ 117*f3782652STreehugger Robot (T)24, (T)25, (T)26, (T)27, (T)28, (T)29, (T)30, (T)31, 118*f3782652STreehugger Robot #define INIT_TAB4_16(T) \ 119*f3782652STreehugger Robot (T)32, (T)33, (T)34, (T)35, (T)36, (T)37, (T)38, (T)39, \ 120*f3782652STreehugger Robot (T)40, (T)41, (T)42, (T)43, (T)44, (T)45, (T)46, (T)47, 121*f3782652STreehugger Robot 122*f3782652STreehugger Robot /* Input buffers, one of each size. */ 123*f3782652STreehugger Robot /* Insert some padding to try to exhibit out of bounds accesses. */ 124*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 8, 8); 125*f3782652STreehugger Robot PAD(buffer_pad, int, 8, 8); 126*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 16, 4); 127*f3782652STreehugger Robot PAD(buffer_pad, int, 16, 4); 128*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 32, 2); 129*f3782652STreehugger Robot PAD(buffer_pad, int, 32, 2); 130*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 64, 1); 131*f3782652STreehugger Robot PAD(buffer_pad, int, 64, 1); 132*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 8, 8); 133*f3782652STreehugger Robot PAD(buffer_pad, uint, 8, 8); 134*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, poly, 8, 8); 135*f3782652STreehugger Robot PAD(buffer_pad, poly, 8, 8); 136*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, poly, 16, 4); 137*f3782652STreehugger Robot PAD(buffer_pad, poly, 16, 4); 138*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 16, 4); 139*f3782652STreehugger Robot PAD(buffer_pad, uint, 16, 4); 140*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 32, 2); 141*f3782652STreehugger Robot PAD(buffer_pad, uint, 32, 2); 142*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 64, 1); 143*f3782652STreehugger Robot PAD(buffer_pad, uint, 64, 1); 144*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, float, 32, 2); 145*f3782652STreehugger Robot PAD(buffer_pad, float, 32, 2); 146*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 147*f3782652STreehugger Robot /* We need a different initialization for ARMCC, because the compiler 148*f3782652STreehugger Robot performs the conversion to half-precision internal 149*f3782652STreehugger Robot representation. */ 150*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 151*f3782652STreehugger Robot __fp16 buffer_float16x4[4] = {-16, -15, -14, -13}; 152*f3782652STreehugger Robot #else 153*f3782652STreehugger Robot VECT_VAR_DECL(buffer, float, 16, 4) [] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 154*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */}; 155*f3782652STreehugger Robot #endif 156*f3782652STreehugger Robot PAD(buffer_pad, float, 16, 4); 157*f3782652STreehugger Robot #endif 158*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 8, 16); 159*f3782652STreehugger Robot PAD(buffer_pad, int, 8, 16); 160*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 16, 8); 161*f3782652STreehugger Robot PAD(buffer_pad, int, 16, 8); 162*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 32, 4); 163*f3782652STreehugger Robot PAD(buffer_pad, int, 32, 4); 164*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, int, 64, 2); 165*f3782652STreehugger Robot PAD(buffer_pad, int, 64, 2); 166*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 8, 16); 167*f3782652STreehugger Robot PAD(buffer_pad, uint, 8, 16); 168*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 16, 8); 169*f3782652STreehugger Robot PAD(buffer_pad, uint, 16, 8); 170*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 32, 4); 171*f3782652STreehugger Robot PAD(buffer_pad, uint, 32, 4); 172*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, uint, 64, 2); 173*f3782652STreehugger Robot PAD(buffer_pad, uint, 64, 2); 174*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, poly, 8, 16); 175*f3782652STreehugger Robot PAD(buffer_pad, poly, 8, 16); 176*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, poly, 16, 8); 177*f3782652STreehugger Robot PAD(buffer_pad, poly, 16, 8); 178*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer, float, 32, 4); 179*f3782652STreehugger Robot PAD(buffer_pad, float, 32, 4); 180*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 181*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 182*f3782652STreehugger Robot __fp16 buffer_float16x8[8] = {-16, -15, -14, -13, -12, -11, -10, -9}; 183*f3782652STreehugger Robot #else 184*f3782652STreehugger Robot VECT_VAR_DECL(buffer, float, 16, 8) [] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 185*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 186*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 187*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */}; 188*f3782652STreehugger Robot #endif 189*f3782652STreehugger Robot PAD(buffer_pad, float, 16, 8); 190*f3782652STreehugger Robot #endif 191*f3782652STreehugger Robot 192*f3782652STreehugger Robot /* The tests for vld1_dup and vdup expect at least 4 entries in the 193*f3782652STreehugger Robot input buffer, so force 1- and 2-elements initializers to have 4 194*f3782652STreehugger Robot entries. */ 195*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, int, 8, 8); 196*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 8, 8); 197*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, int, 16, 4); 198*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 16, 4); 199*f3782652STreehugger Robot VECT_VAR_DECL_INIT4(buffer_dup, int, 32, 2); 200*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 32, 2); 201*f3782652STreehugger Robot VECT_VAR_DECL_INIT4(buffer_dup, int, 64, 1); 202*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 64, 1); 203*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, uint, 8, 8); 204*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 8, 8); 205*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, uint, 16, 4); 206*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 16, 4); 207*f3782652STreehugger Robot VECT_VAR_DECL_INIT4(buffer_dup, uint, 32, 2); 208*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 32, 2); 209*f3782652STreehugger Robot VECT_VAR_DECL_INIT4(buffer_dup, uint, 64, 1); 210*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 64, 1); 211*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, poly, 8, 8); 212*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, poly, 8, 8); 213*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, poly, 16, 4); 214*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, poly, 16, 4); 215*f3782652STreehugger Robot VECT_VAR_DECL_INIT4(buffer_dup, float, 32, 2); 216*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, float, 32, 2); 217*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 218*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 219*f3782652STreehugger Robot __fp16 buffer_dup_float16x4[4] = {-16, -15, -14, -13}; 220*f3782652STreehugger Robot #else 221*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup, float, 16, 4)[] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 222*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */}; 223*f3782652STreehugger Robot #endif 224*f3782652STreehugger Robot PAD(buffer_dup_pad, float, 16, 4); 225*f3782652STreehugger Robot #endif 226*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, int, 8, 16); 227*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 8, 16); 228*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, int, 16, 8); 229*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 16, 8); 230*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, int, 32, 4); 231*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 32, 4); 232*f3782652STreehugger Robot VECT_VAR_DECL_INIT4(buffer_dup, int, 64, 2); 233*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, int, 64, 2); 234*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, uint, 8, 16); 235*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 8, 16); 236*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, uint, 16, 8); 237*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 16, 8); 238*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, uint, 32, 4); 239*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 32, 4); 240*f3782652STreehugger Robot VECT_VAR_DECL_INIT4(buffer_dup, uint, 64, 2); 241*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, uint, 64, 2); 242*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, poly, 8, 16); 243*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, poly, 8, 16); 244*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, poly, 16, 8); 245*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, poly, 16, 8); 246*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_dup, float, 32, 4); 247*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup_pad, float, 32, 4); 248*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 249*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 250*f3782652STreehugger Robot __fp16 buffer_dup_float16x8[8] = {-16, -15, -14, -13, -12, -11, -10, -9}; 251*f3782652STreehugger Robot #else 252*f3782652STreehugger Robot VECT_VAR_DECL(buffer_dup, float, 16, 8)[] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 253*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 254*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 255*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */}; 256*f3782652STreehugger Robot #endif 257*f3782652STreehugger Robot PAD(buffer_dup_pad, float, 16, 8); 258*f3782652STreehugger Robot #endif 259*f3782652STreehugger Robot 260*f3782652STreehugger Robot /* Input buffers for vld2, 1 of each size */ 261*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 8, 8); 262*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 8, 8); 263*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 16, 4); 264*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 16, 4); 265*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 32, 2); 266*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 32, 2); 267*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 64, 1); 268*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 64, 1); 269*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 8, 8); 270*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 8, 8); 271*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 16, 4); 272*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 16, 4); 273*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 32, 2); 274*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 32, 2); 275*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 64, 1); 276*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 64, 1); 277*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, poly, 8, 8); 278*f3782652STreehugger Robot PAD(buffer_vld2_pad, poly, 8, 8); 279*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 4); 280*f3782652STreehugger Robot PAD(buffer_vld2_pad, poly, 16, 4); 281*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, float, 32, 2); 282*f3782652STreehugger Robot PAD(buffer_vld2_pad, float, 32, 2); 283*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 284*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 285*f3782652STreehugger Robot __fp16 buffer_vld2_float16x4x2[4*2] = {-16, -15, -14, -13, -12, -11, -10, -9}; 286*f3782652STreehugger Robot #else 287*f3782652STreehugger Robot float16_t buffer_vld2_float16x4x2[4*2] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 288*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 289*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 290*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */}; 291*f3782652STreehugger Robot #endif 292*f3782652STreehugger Robot PAD(buffer_vld2_pad, float, 16, 4); 293*f3782652STreehugger Robot #endif 294*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 8, 16); 295*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 8, 16); 296*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 16, 8); 297*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 16, 8); 298*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 32, 4); 299*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 32, 4); 300*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, int, 64, 2); 301*f3782652STreehugger Robot PAD(buffer_vld2_pad, int, 64, 2); 302*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 8, 16); 303*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 8, 16); 304*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 16, 8); 305*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 16, 8); 306*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 32, 4); 307*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 32, 4); 308*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, uint, 64, 2); 309*f3782652STreehugger Robot PAD(buffer_vld2_pad, uint, 64, 2); 310*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, poly, 8, 16); 311*f3782652STreehugger Robot PAD(buffer_vld2_pad, poly, 8, 16); 312*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 8); 313*f3782652STreehugger Robot PAD(buffer_vld2_pad, poly, 16, 8); 314*f3782652STreehugger Robot VECT_ARRAY_INIT2(buffer_vld2, float, 32, 4); 315*f3782652STreehugger Robot PAD(buffer_vld2_pad, float, 32, 4); 316*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 317*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 318*f3782652STreehugger Robot __fp16 buffer_vld2_float16x8x2[8*2] = {-16, -15, -14, -13, -12, -11, -10, -9, 319*f3782652STreehugger Robot -8, -7, -6, -5, -4, -3, -2, -1}; 320*f3782652STreehugger Robot #else 321*f3782652STreehugger Robot float16_t buffer_vld2_float16x8x2[8*2] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 322*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 323*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 324*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */, 325*f3782652STreehugger Robot 0xc800 /* -8 */, 0xc700 /* -7 */, 326*f3782652STreehugger Robot 0xc600 /* -6 */, 0xc500 /* -5 */, 327*f3782652STreehugger Robot 0xc400 /* -4 */, 0xc200 /* -3 */, 328*f3782652STreehugger Robot 0xc000 /* -2 */, 0xbc00 /* -1 */}; 329*f3782652STreehugger Robot #endif 330*f3782652STreehugger Robot PAD(buffer_vld2_pad, float, 16, 8); 331*f3782652STreehugger Robot #endif 332*f3782652STreehugger Robot 333*f3782652STreehugger Robot /* Input buffers for vld3, 1 of each size */ 334*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 8, 8); 335*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 8, 8); 336*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 16, 4); 337*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 16, 4); 338*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 32, 2); 339*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 32, 2); 340*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 64, 1); 341*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 64, 1); 342*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 8, 8); 343*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 8, 8); 344*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 16, 4); 345*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 16, 4); 346*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 32, 2); 347*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 32, 2); 348*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 64, 1); 349*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 64, 1); 350*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, poly, 8, 8); 351*f3782652STreehugger Robot PAD(buffer_vld3_pad, poly, 8, 8); 352*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 4); 353*f3782652STreehugger Robot PAD(buffer_vld3_pad, poly, 16, 4); 354*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, float, 32, 2); 355*f3782652STreehugger Robot PAD(buffer_vld3_pad, float, 32, 2); 356*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 357*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 358*f3782652STreehugger Robot __fp16 buffer_vld3_float16x4x3[4*3] = {-16, -15, -14, -13, -12, -11, -10, -9, 359*f3782652STreehugger Robot -8, -7, -6, -5}; 360*f3782652STreehugger Robot #else 361*f3782652STreehugger Robot float16_t buffer_vld3_float16x4x3[4*3] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 362*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 363*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 364*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */, 365*f3782652STreehugger Robot 0xc800 /* -8 */, 0xc700 /* -7 */, 366*f3782652STreehugger Robot 0xc600 /* -6 */, 0xc500 /* -5 */}; 367*f3782652STreehugger Robot #endif 368*f3782652STreehugger Robot PAD(buffer_vld3_pad, float, 16, 4); 369*f3782652STreehugger Robot #endif 370*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 8, 16); 371*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 8, 16); 372*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 16, 8); 373*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 16, 8); 374*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 32, 4); 375*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 32, 4); 376*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, int, 64, 2); 377*f3782652STreehugger Robot PAD(buffer_vld3_pad, int, 64, 2); 378*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 8, 16); 379*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 8, 16); 380*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 16, 8); 381*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 16, 8); 382*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 32, 4); 383*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 32, 4); 384*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, uint, 64, 2); 385*f3782652STreehugger Robot PAD(buffer_vld3_pad, uint, 64, 2); 386*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, poly, 8, 16); 387*f3782652STreehugger Robot PAD(buffer_vld3_pad, poly, 8, 16); 388*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 8); 389*f3782652STreehugger Robot PAD(buffer_vld3_pad, poly, 16, 8); 390*f3782652STreehugger Robot VECT_ARRAY_INIT3(buffer_vld3, float, 32, 4); 391*f3782652STreehugger Robot PAD(buffer_vld3_pad, float, 32, 4); 392*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 393*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 394*f3782652STreehugger Robot __fp16 buffer_vld3_float16x8x3[8*3] = {-16, -15, -14, -13, -12, -11, -10, -9, 395*f3782652STreehugger Robot -8, -7, -6, -5, -4, -3, -2, -1, 396*f3782652STreehugger Robot 0, 1, 2, 3, 4, 5, 6, 7}; 397*f3782652STreehugger Robot #else 398*f3782652STreehugger Robot float16_t buffer_vld3_float16x8x3[8*3] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 399*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 400*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 401*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */, 402*f3782652STreehugger Robot 0xc800 /* -8 */, 0xc700 /* -7 */, 403*f3782652STreehugger Robot 0xc600 /* -6 */, 0xc500 /* -6 */, 404*f3782652STreehugger Robot 0xc400 /* -4 */, 0xc200 /* -3 */, 405*f3782652STreehugger Robot 0xc000 /* -2 */, 0xbc00 /* -1 */, 406*f3782652STreehugger Robot 0, 0x3c00 /* 1 */, 407*f3782652STreehugger Robot 0x4000 /* 2 */, 0x4200 /* 3 */, 408*f3782652STreehugger Robot 0x4400 /* 4 */, 0x4500 /* 5 */, 409*f3782652STreehugger Robot 0x4600 /* 6 */, 0x4700 /* 7 */}; 410*f3782652STreehugger Robot #endif 411*f3782652STreehugger Robot PAD(buffer_vld3_pad, float, 16, 8); 412*f3782652STreehugger Robot #endif 413*f3782652STreehugger Robot 414*f3782652STreehugger Robot /* Input buffers for vld4, 1 of each size */ 415*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 8, 8); 416*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 8, 8); 417*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 16, 4); 418*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 16, 4); 419*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 32, 2); 420*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 32, 2); 421*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 64, 1); 422*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 64, 1); 423*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 8, 8); 424*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 8, 8); 425*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 16, 4); 426*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 16, 4); 427*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 32, 2); 428*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 32, 2); 429*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 64, 1); 430*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 64, 1); 431*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, poly, 8, 8); 432*f3782652STreehugger Robot PAD(buffer_vld4_pad, poly, 8, 8); 433*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 4); 434*f3782652STreehugger Robot PAD(buffer_vld4_pad, poly, 16, 4); 435*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, float, 32, 2); 436*f3782652STreehugger Robot PAD(buffer_vld4_pad, float, 32, 2); 437*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 438*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 439*f3782652STreehugger Robot __fp16 buffer_vld4_float16x4x4[4*4] = {-16, -15, -14, -13, -12, -11, -10, -9, 440*f3782652STreehugger Robot -8, -7, -6, -5, -4, -3, -2, -1}; 441*f3782652STreehugger Robot #else 442*f3782652STreehugger Robot float16_t buffer_vld4_float16x4x4[4*4] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 443*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 444*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 445*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */, 446*f3782652STreehugger Robot 0xc800 /* -8 */, 0xc700 /* -7 */, 447*f3782652STreehugger Robot 0xc600 /* -6 */, 0xc500 /* -5 */, 448*f3782652STreehugger Robot 0xc400 /* -4 */, 0xc200 /* -3 */, 449*f3782652STreehugger Robot 0xc000 /* -2 */, 0xbc00 /* -1 */}; 450*f3782652STreehugger Robot #endif 451*f3782652STreehugger Robot PAD(buffer_vld4_pad, float, 16, 4); 452*f3782652STreehugger Robot #endif 453*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 8, 16); 454*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 8, 16); 455*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 16, 8); 456*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 16, 8); 457*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 32, 4); 458*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 32, 4); 459*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, int, 64, 2); 460*f3782652STreehugger Robot PAD(buffer_vld4_pad, int, 64, 2); 461*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 8, 16); 462*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 8, 16); 463*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 16, 8); 464*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 16, 8); 465*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 32, 4); 466*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 32, 4); 467*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, uint, 64, 2); 468*f3782652STreehugger Robot PAD(buffer_vld4_pad, uint, 64, 2); 469*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, poly, 8, 16); 470*f3782652STreehugger Robot PAD(buffer_vld4_pad, poly, 8, 16); 471*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 8); 472*f3782652STreehugger Robot PAD(buffer_vld4_pad, poly, 16, 8); 473*f3782652STreehugger Robot VECT_ARRAY_INIT4(buffer_vld4, float, 32, 4); 474*f3782652STreehugger Robot PAD(buffer_vld4_pad, float, 32, 4); 475*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 476*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 477*f3782652STreehugger Robot __fp16 buffer_vld4_float16x8x4[8*4] = {-16, -15, -14, -13, -12, -11, -10, -9, 478*f3782652STreehugger Robot -8, -7, -6, -5, -4, -3, -2, -1, 479*f3782652STreehugger Robot 0, 1, 2, 3, 4, 5, 6, 7, 480*f3782652STreehugger Robot 8, 9, 10, 11, 12, 13, 14, 15}; 481*f3782652STreehugger Robot #else 482*f3782652STreehugger Robot float16_t buffer_vld4_float16x8x4[8*4] = {0xcc00 /* -16 */, 0xcb80 /* -15 */, 483*f3782652STreehugger Robot 0xcb00 /* -14 */, 0xca80 /* -13 */, 484*f3782652STreehugger Robot 0xca00 /* -12 */, 0xc980 /* -11 */, 485*f3782652STreehugger Robot 0xc900 /* -10 */, 0xc880 /* -9 */, 486*f3782652STreehugger Robot 0xc800 /* -8 */, 0xc700 /* -7 */, 487*f3782652STreehugger Robot 0xc600 /* -6 */, 0xc500 /* -6 */, 488*f3782652STreehugger Robot 0xc400 /* -4 */, 0xc200 /* -3 */, 489*f3782652STreehugger Robot 0xc000 /* -2 */, 0xbc00 /* -1 */, 490*f3782652STreehugger Robot 0, 0x3c00 /* 1 */, 491*f3782652STreehugger Robot 0x4000 /* 2 */, 0x4200 /* 3 */, 492*f3782652STreehugger Robot 0x4400 /* 4 */, 0x4500 /* 5 */, 493*f3782652STreehugger Robot 0x4600 /* 6 */, 0x4700 /* 7 */, 494*f3782652STreehugger Robot 0x4800 /* 8 */, 0x4880 /* 9 */, 495*f3782652STreehugger Robot 0x4900 /* 10 */, 0x4980 /* 11 */, 496*f3782652STreehugger Robot 0x4a00 /* 12 */, 0x4a80 /* 13 */, 497*f3782652STreehugger Robot 0x4b00 /* 14 */, 0x04b80 /* 15 */}; 498*f3782652STreehugger Robot #endif 499*f3782652STreehugger Robot PAD(buffer_vld4_pad, float, 16, 8); 500*f3782652STreehugger Robot #endif 501*f3782652STreehugger Robot 502*f3782652STreehugger Robot /* Input buffers for vld2_lane */ 503*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 8, 2); 504*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 16, 2); 505*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 32, 2); 506*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 64, 2); 507*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 8, 2); 508*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 16, 2); 509*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 32, 2); 510*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 64, 2); 511*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 8, 2); 512*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 16, 2); 513*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld2_lane, float, 32, 2); 514*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 515*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 516*f3782652STreehugger Robot __fp16 buffer_vld2_lane_float16x2[2] = {-16, -15}; 517*f3782652STreehugger Robot #else 518*f3782652STreehugger Robot VECT_VAR_DECL(buffer_vld2_lane, float, 16, 2) [] = {0xcc00 /* -16 */, 519*f3782652STreehugger Robot 0xcb80 /* -15 */}; 520*f3782652STreehugger Robot #endif 521*f3782652STreehugger Robot #endif 522*f3782652STreehugger Robot 523*f3782652STreehugger Robot /* Input buffers for vld3_lane */ 524*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 8, 3); 525*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 16, 3); 526*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 32, 3); 527*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 64, 3); 528*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 8, 3); 529*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 16, 3); 530*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 32, 3); 531*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 64, 3); 532*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 8, 3); 533*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 16, 3); 534*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld3_lane, float, 32, 3); 535*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 536*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 537*f3782652STreehugger Robot __fp16 buffer_vld3_lane_float16x3[3] = {-16, -15, -14}; 538*f3782652STreehugger Robot #else 539*f3782652STreehugger Robot VECT_VAR_DECL(buffer_vld3_lane, float, 16, 3) [] = {0xcc00 /* -16 */, 540*f3782652STreehugger Robot 0xcb80 /* -15 */, 541*f3782652STreehugger Robot 0xcb00 /* -14 */}; 542*f3782652STreehugger Robot #endif 543*f3782652STreehugger Robot #endif 544*f3782652STreehugger Robot 545*f3782652STreehugger Robot /* Input buffers for vld4_lane */ 546*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 8, 4); 547*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 16, 4); 548*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 32, 4); 549*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 64, 4); 550*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 8, 4); 551*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 16, 4); 552*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 32, 4); 553*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 64, 4); 554*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 8, 4); 555*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 16, 4); 556*f3782652STreehugger Robot VECT_VAR_DECL_INIT(buffer_vld4_lane, float, 32, 4); 557*f3782652STreehugger Robot #if defined(__ARM_FP16_FORMAT_IEEE) && ( ((__ARM_FP & 0x2) != 0) || ((__ARM_NEON_FP16_INTRINSICS & 1) != 0) ) 558*f3782652STreehugger Robot #ifdef __ARMCC_VERSION 559*f3782652STreehugger Robot __fp16 buffer_vld4_lane_float16x4[4] = {-16, -15, -14, -13}; 560*f3782652STreehugger Robot #else 561*f3782652STreehugger Robot VECT_VAR_DECL(buffer_vld4_lane, float, 16, 4) [] = {0xcc00 /* -16 */, 562*f3782652STreehugger Robot 0xcb80 /* -15 */, 563*f3782652STreehugger Robot 0xcb00 /* -14 */, 564*f3782652STreehugger Robot 0xca80 /* -13 */}; 565*f3782652STreehugger Robot #endif 566*f3782652STreehugger Robot #endif 567