xref: /aosp_15_r20/external/arm-neon-tests/compute_ref_data.c (revision f37826520a923688f9e110915f3811e385d8b6d1)
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