LMMS
Loading...
Searching...
No Matches
juce_neon_SIMDNativeOps.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28namespace dsp
29{
30
31#ifndef DOXYGEN
32
33JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wignored-attributes")
34
35#ifdef _MSC_VER
36 #define DECLARE_NEON_SIMD_CONST(type, name) \
37 static __declspec(align(16)) const type name [16 / sizeof (type)]
38
39 #define DEFINE_NEON_SIMD_CONST(type, class_type, name) \
40 __declspec(align(16)) const type SIMDNativeOps<class_type>:: name [16 / sizeof (type)]
41
42#else
43 #define DECLARE_NEON_SIMD_CONST(type, name) \
44 static const type name [16 / sizeof (type)] __attribute__((aligned(16)))
45
46 #define DEFINE_NEON_SIMD_CONST(type, class_type, name) \
47 const type SIMDNativeOps<class_type>:: name [16 / sizeof (type)] __attribute__((aligned(16)))
48
49#endif
50
51template <typename type>
52struct SIMDNativeOps;
53
54//==============================================================================
59template <>
60struct SIMDNativeOps<uint32_t>
61{
62 //==============================================================================
63 using vSIMDType = uint32x4_t;
65
66 //==============================================================================
68
69 //==============================================================================
70 static forcedinline vSIMDType expand (uint32_t s) noexcept { return vdupq_n_u32 (s); }
71 static forcedinline vSIMDType load (const uint32_t* a) noexcept { return vld1q_u32 (a); }
72 static forcedinline void store (vSIMDType value, uint32_t* a) noexcept { vst1q_u32 (a, value); }
73 static forcedinline uint32_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
74 static forcedinline vSIMDType set (vSIMDType v, size_t i, uint32_t s) noexcept { v[i] = s; return v; }
75 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_u32 (a, b); }
76 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_u32 (a, b); }
77 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return vmulq_u32 (a, b); }
78 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_u32 (a, b); }
79 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_u32 (a, b); }
80 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_u32 (a, b); }
81 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_u32 (b, a); }
82 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_u32 ((uint32_t*) kAllBitsSet)); }
83 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return vminq_u32 (a, b); }
84 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return vmaxq_u32 (a, b); }
85 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vceqq_u32 (a, b); }
86 static forcedinline bool allEqual (vSIMDType a, vSIMDType b) noexcept { return (sum (notEqual (a, b)) == 0); }
87 static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept { return bit_not (equal (a, b)); }
88 static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgtq_u32 (a, b); }
89 static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgeq_u32 (a, b); }
90 static forcedinline vSIMDType multiplyAdd (vSIMDType a, vSIMDType b, vSIMDType c) noexcept { return vmlaq_u32 (a, b, c); }
91 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
92
94 {
95 auto rr = vadd_u32 (vget_high_u32 (a), vget_low_u32 (a));
96 return vget_lane_u32 (vpadd_u32 (rr, rr), 0);
97 }
98};
99
100//==============================================================================
105template <>
106struct SIMDNativeOps<int32_t>
107{
108 //==============================================================================
109 using vSIMDType = int32x4_t;
111
112 //==============================================================================
114
115 //==============================================================================
116 static forcedinline vSIMDType expand (int32_t s) noexcept { return vdupq_n_s32 (s); }
117 static forcedinline vSIMDType load (const int32_t* a) noexcept { return vld1q_s32 (a); }
118 static forcedinline void store (vSIMDType value, int32_t* a) noexcept { vst1q_s32 (a, value); }
119 static forcedinline int32_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
120 static forcedinline vSIMDType set (vSIMDType v, size_t i, int32_t s) noexcept { v[i] = s; return v; }
121 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_s32 (a, b); }
122 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_s32 (a, b); }
123 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return vmulq_s32 (a, b); }
124 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_s32 (a, b); }
125 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_s32 (a, b); }
126 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_s32 (a, b); }
127 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_s32 (b, a); }
128 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_s32 ((int32_t*) kAllBitsSet)); }
129 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return vminq_s32 (a, b); }
130 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return vmaxq_s32 (a, b); }
131 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vceqq_s32 (a, b); }
132 static forcedinline bool allEqual (vSIMDType a, vSIMDType b) noexcept { return (sum (notEqual (a, b)) == 0); }
133 static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept { return bit_not (equal (a, b)); }
134 static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgtq_s32 (a, b); }
135 static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgeq_s32 (a, b); }
136 static forcedinline vSIMDType multiplyAdd (vSIMDType a, vSIMDType b, vSIMDType c) noexcept { return vmlaq_s32 (a, b, c); }
137 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
138
140 {
141 auto rr = vadd_s32 (vget_high_s32 (a), vget_low_s32 (a));
142 rr = vpadd_s32 (rr, rr);
143 return vget_lane_s32 (rr, 0);
144 }
145};
146
147//==============================================================================
152template <>
153struct SIMDNativeOps<int8_t>
154{
155 //==============================================================================
156 using vSIMDType = int8x16_t;
158
159 //==============================================================================
161
162 //==============================================================================
163 static forcedinline vSIMDType expand (int8_t s) noexcept { return vdupq_n_s8 (s); }
164 static forcedinline vSIMDType load (const int8_t* a) noexcept { return vld1q_s8 (a); }
165 static forcedinline void store (vSIMDType value, int8_t* a) noexcept { vst1q_s8 (a, value); }
166 static forcedinline int8_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
167 static forcedinline vSIMDType set (vSIMDType v, size_t i, int8_t s) noexcept { v[i] = s; return v; }
168 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_s8 (a, b); }
169 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_s8 (a, b); }
170 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return vmulq_s8 (a, b); }
171 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_s8 (a, b); }
172 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_s8 (a, b); }
173 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_s8 (a, b); }
174 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_s8 (b, a); }
175 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_s8 ((int8_t*) kAllBitsSet)); }
176 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return vminq_s8 (a, b); }
177 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return vmaxq_s8 (a, b); }
178 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vceqq_s8 (a, b); }
179 static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept { return bit_not (equal (a, b)); }
180 static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgtq_s8 (a, b); }
181 static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgeq_s8 (a, b); }
183 static forcedinline vSIMDType multiplyAdd (vSIMDType a, vSIMDType b, vSIMDType c) noexcept { return vmlaq_s8 (a, b, c); }
184 static forcedinline int8_t sum (vSIMDType a) noexcept { return fb::sum (a); }
185 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
186};
187
188//==============================================================================
193template <>
194struct SIMDNativeOps<uint8_t>
195{
196 //==============================================================================
197 using vSIMDType = uint8x16_t;
199
200 //==============================================================================
202
203 //==============================================================================
204 static forcedinline vSIMDType expand (uint8_t s) noexcept { return vdupq_n_u8 (s); }
205 static forcedinline vSIMDType load (const uint8_t* a) noexcept { return vld1q_u8 (a); }
206 static forcedinline void store (vSIMDType value, uint8_t* a) noexcept { vst1q_u8 (a, value); }
207 static forcedinline uint8_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
208 static forcedinline vSIMDType set (vSIMDType v, size_t i, uint8_t s) noexcept { v[i] = s; return v; }
209 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_u8 (a, b); }
210 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_u8 (a, b); }
211 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return vmulq_u8 (a, b); }
212 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_u8 (a, b); }
213 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_u8 (a, b); }
214 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_u8 (a, b); }
215 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_u8 (b, a); }
216 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_u8 ((uint8_t*) kAllBitsSet)); }
217 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return vminq_u8 (a, b); }
218 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return vmaxq_u8 (a, b); }
219 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vceqq_u8 (a, b); }
220 static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept { return bit_not (equal (a, b)); }
221 static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgtq_u8 (a, b); }
222 static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgeq_u8 (a, b); }
224 static forcedinline vSIMDType multiplyAdd (vSIMDType a, vSIMDType b, vSIMDType c) noexcept { return vmlaq_u8 (a, b, c); }
225 static forcedinline uint8_t sum (vSIMDType a) noexcept { return fb::sum (a); }
226 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
227};
228
229//==============================================================================
234template <>
235struct SIMDNativeOps<int16_t>
236{
237 //==============================================================================
238 using vSIMDType = int16x8_t;
240
241 //==============================================================================
243
244 //==============================================================================
245 static forcedinline vSIMDType expand (int16_t s) noexcept { return vdupq_n_s16 (s); }
246 static forcedinline vSIMDType load (const int16_t* a) noexcept { return vld1q_s16 (a); }
247 static forcedinline void store (vSIMDType value, int16_t* a) noexcept { vst1q_s16 (a, value); }
248 static forcedinline int16_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
249 static forcedinline vSIMDType set (vSIMDType v, size_t i, int16_t s) noexcept { v[i] = s; return v; }
250 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_s16 (a, b); }
251 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_s16 (a, b); }
252 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return vmulq_s16 (a, b); }
253 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_s16 (a, b); }
254 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_s16 (a, b); }
255 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_s16 (a, b); }
256 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_s16 (b, a); }
257 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_s16 ((int16_t*) kAllBitsSet)); }
258 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return vminq_s16 (a, b); }
259 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return vmaxq_s16 (a, b); }
260 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vceqq_s16 (a, b); }
261 static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept { return bit_not (equal (a, b)); }
262 static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgtq_s16 (a, b); }
263 static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgeq_s16 (a, b); }
265 static forcedinline vSIMDType multiplyAdd (vSIMDType a, vSIMDType b, vSIMDType c) noexcept { return vmlaq_s16 (a, b, c); }
266 static forcedinline int16_t sum (vSIMDType a) noexcept { return fb::sum (a); }
267 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
268};
269
270
271//==============================================================================
276template <>
277struct SIMDNativeOps<uint16_t>
278{
279 //==============================================================================
280 using vSIMDType = uint16x8_t;
282
283 //==============================================================================
285
286 //==============================================================================
287 static forcedinline vSIMDType expand (uint16_t s) noexcept { return vdupq_n_u16 (s); }
288 static forcedinline vSIMDType load (const uint16_t* a) noexcept { return vld1q_u16 (a); }
289 static forcedinline void store (vSIMDType value, uint16_t* a) noexcept { vst1q_u16 (a, value); }
290 static forcedinline uint16_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
291 static forcedinline vSIMDType set (vSIMDType v, size_t i, uint16_t s) noexcept { v[i] = s; return v; }
292 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_u16 (a, b); }
293 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_u16 (a, b); }
294 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return vmulq_u16 (a, b); }
295 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_u16 (a, b); }
296 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_u16 (a, b); }
297 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_u16 (a, b); }
298 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_u16 (b, a); }
299 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_u16 ((uint16_t*) kAllBitsSet)); }
300 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return vminq_u16 (a, b); }
301 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return vmaxq_u16 (a, b); }
302 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vceqq_u16 (a, b); }
303 static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept { return bit_not (equal (a, b)); }
304 static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgtq_u16 (a, b); }
305 static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgeq_u16 (a, b); }
307 static forcedinline vSIMDType multiplyAdd (vSIMDType a, vSIMDType b, vSIMDType c) noexcept { return vmlaq_u16 (a, b, c); }
308 static forcedinline uint16_t sum (vSIMDType a) noexcept { return fb::sum (a); }
309 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
310};
311
312//==============================================================================
317template <>
318struct SIMDNativeOps<int64_t>
319{
320 //==============================================================================
321 using vSIMDType = int64x2_t;
323
324 //==============================================================================
325 DECLARE_NEON_SIMD_CONST (int64_t, kAllBitsSet);
326
327 //==============================================================================
328 static forcedinline vSIMDType expand (int64_t s) noexcept { return vdupq_n_s64 (s); }
329 static forcedinline vSIMDType load (const int64_t* a) noexcept { return vld1q_s64 (a); }
330 static forcedinline void store (vSIMDType value, int64_t* a) noexcept { vst1q_s64 (a, value); }
331 static forcedinline int64_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
332 static forcedinline vSIMDType set (vSIMDType v, size_t i, int64_t s) noexcept { v[i] = s; return v; }
333 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_s64 (a, b); }
334 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_s64 (a, b); }
335 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return fb::mul (a, b); }
336 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_s64 (a, b); }
337 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_s64 (a, b); }
338 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_s64 (a, b); }
339 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_s64 (b, a); }
340 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_s64 ((int64_t*) kAllBitsSet)); }
341 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return fb::min (a, b); }
342 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return fb::max (a, b); }
343 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return fb::equal (a, b); }
349 static forcedinline int64_t sum (vSIMDType a) noexcept { return fb::sum (a); }
350 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
351};
352
353
354//==============================================================================
359template <>
360struct SIMDNativeOps<uint64_t>
361{
362 //==============================================================================
363 using vSIMDType = uint64x2_t;
365
366 //==============================================================================
367 DECLARE_NEON_SIMD_CONST (uint64_t, kAllBitsSet);
368
369 //==============================================================================
370 static forcedinline vSIMDType expand (uint64_t s) noexcept { return vdupq_n_u64 (s); }
371 static forcedinline vSIMDType load (const uint64_t* a) noexcept { return vld1q_u64 (a); }
372 static forcedinline void store (vSIMDType value, uint64_t* a) noexcept { vst1q_u64 (a, value); }
373 static forcedinline uint64_t get (vSIMDType v, size_t i) noexcept { return v[i]; }
374 static forcedinline vSIMDType set (vSIMDType v, size_t i, uint64_t s) noexcept { v[i] = s; return v; }
375 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_u64 (a, b); }
376 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_u64 (a, b); }
377 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return fb::mul (a, b); }
378 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return vandq_u64 (a, b); }
379 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return vorrq_u64 (a, b); }
380 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return veorq_u64 (a, b); }
381 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return vbicq_u64 (b, a); }
382 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_u64 ((uint64_t*) kAllBitsSet)); }
383 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return fb::min (a, b); }
384 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return fb::max (a, b); }
385 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return fb::equal (a, b); }
391 static forcedinline uint64_t sum (vSIMDType a) noexcept { return fb::sum (a); }
392 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return a; }
393};
394
395 //==============================================================================
400template <>
401struct SIMDNativeOps<float>
402{
403 //==============================================================================
404 using vSIMDType = float32x4_t;
405 using vMaskType = uint32x4_t;
407
408 //==============================================================================
412
413 //==============================================================================
414 static forcedinline vSIMDType expand (float s) noexcept { return vdupq_n_f32 (s); }
415 static forcedinline vSIMDType load (const float* a) noexcept { return vld1q_f32 (a); }
416 static forcedinline float get (vSIMDType v, size_t i) noexcept { return v[i]; }
417 static forcedinline vSIMDType set (vSIMDType v, size_t i, float s) noexcept { v[i] = s; return v; }
418 static forcedinline void store (vSIMDType value, float* a) noexcept { vst1q_f32 (a, value); }
419 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return vaddq_f32 (a, b); }
420 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return vsubq_f32 (a, b); }
421 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return vmulq_f32 (a, b); }
422 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vandq_u32 ((vMaskType) a, (vMaskType) b); }
423 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vorrq_u32 ((vMaskType) a, (vMaskType) b); }
424 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) veorq_u32 ((vMaskType) a, (vMaskType) b); }
425 static forcedinline vSIMDType bit_notand (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vbicq_u32 ((vMaskType) b, (vMaskType) a); }
426 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return bit_notand (a, vld1q_f32 ((float*) kAllBitsSet)); }
427 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return vminq_f32 (a, b); }
428 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return vmaxq_f32 (a, b); }
429 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vceqq_f32 (a, b); }
430 static forcedinline vSIMDType notEqual (vSIMDType a, vSIMDType b) noexcept { return bit_not (equal (a, b)); }
431 static forcedinline vSIMDType greaterThan (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgtq_f32 (a, b); }
432 static forcedinline vSIMDType greaterThanOrEqual (vSIMDType a, vSIMDType b) noexcept { return (vSIMDType) vcgeq_f32 (a, b); }
434 static forcedinline vSIMDType multiplyAdd (vSIMDType a, vSIMDType b, vSIMDType c) noexcept { return vmlaq_f32 (a, b, c); }
438 static forcedinline vSIMDType oddevensum (vSIMDType a) noexcept { return add (fb::shuffle<(2 << 0) | (3 << 2) | (0 << 4) | (1 << 6)> (a), a); }
439 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return vcvtq_f32_s32 (vcvtq_s32_f32 (a)); }
440
441 //==============================================================================
443 {
444 vSIMDType rr_ir = mul (a, dupeven (b));
445 vSIMDType ii_ri = mul (swapevenodd (a), dupodd (b));
446 return add (rr_ir, bit_xor (ii_ri, vld1q_f32 ((float*) kEvenHighBit)));
447 }
448
449 static forcedinline float sum (vSIMDType a) noexcept
450 {
451 auto rr = vadd_f32 (vget_high_f32 (a), vget_low_f32 (a));
452 return vget_lane_f32 (vpadd_f32 (rr, rr), 0);
453 }
454};
455
456//==============================================================================
462template <>
463struct SIMDNativeOps<double>
464{
465 //==============================================================================
466 using vSIMDType = struct { double v[2]; };
468
469 static forcedinline vSIMDType expand (double s) noexcept { return {{s, s}}; }
470 static forcedinline vSIMDType load (const double* a) noexcept { return {{a[0], a[1]}}; }
471 static forcedinline void store (vSIMDType v, double* a) noexcept { a[0] = v.v[0]; a[1] = v.v[1]; }
472 static forcedinline double get (vSIMDType v, size_t i) noexcept { return v.v[i]; }
473 static forcedinline vSIMDType set (vSIMDType v, size_t i, double s) noexcept { v.v[i] = s; return v; }
474 static forcedinline vSIMDType add (vSIMDType a, vSIMDType b) noexcept { return {{a.v[0] + b.v[0], a.v[1] + b.v[1]}}; }
475 static forcedinline vSIMDType sub (vSIMDType a, vSIMDType b) noexcept { return {{a.v[0] - b.v[0], a.v[1] - b.v[1]}}; }
476 static forcedinline vSIMDType mul (vSIMDType a, vSIMDType b) noexcept { return {{a.v[0] * b.v[0], a.v[1] * b.v[1]}}; }
477 static forcedinline vSIMDType bit_and (vSIMDType a, vSIMDType b) noexcept { return fb::bit_and (a, b); }
478 static forcedinline vSIMDType bit_or (vSIMDType a, vSIMDType b) noexcept { return fb::bit_or (a, b); }
479 static forcedinline vSIMDType bit_xor (vSIMDType a, vSIMDType b) noexcept { return fb::bit_xor (a, b); }
481 static forcedinline vSIMDType bit_not (vSIMDType a) noexcept { return fb::bit_not (a); }
482 static forcedinline vSIMDType min (vSIMDType a, vSIMDType b) noexcept { return fb::min (a, b); }
483 static forcedinline vSIMDType max (vSIMDType a, vSIMDType b) noexcept { return fb::max (a, b); }
484 static forcedinline vSIMDType equal (vSIMDType a, vSIMDType b) noexcept { return fb::equal (a, b); }
488 static forcedinline bool allEqual (vSIMDType a, vSIMDType b) noexcept { return fb::allEqual (a, b); }
491 static forcedinline double sum (vSIMDType a) noexcept { return fb::sum (a); }
492 static forcedinline vSIMDType oddevensum (vSIMDType a) noexcept { return a; }
493 static forcedinline vSIMDType truncate (vSIMDType a) noexcept { return fb::truncate (a); }
494};
495
496#endif
497
499
500} // namespace dsp
501} // namespace juce
uint8_t a
Definition Spc_Cpu.h:141
unsigned v[N_MAX]
Definition inflate.c:1584
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
static PuglViewHint int value
Definition pugl.h:1708
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define forcedinline
unsigned short uint16_t
Definition mid.cpp:99
int int32_t
Definition mid.cpp:97
unsigned int uint32_t
Definition mid.cpp:100
short int16_t
Definition mid.cpp:96
unsigned char uint8_t
Definition mid.cpp:98
signed char int8_t
Definition mid.cpp:95
Definition juce_AudioBlock.h:29
Definition carla_juce.cpp:31
Definition juce_fallback_SIMDNativeOps.h:60
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:80
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:85
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:76
static forcedinline bool allEqual(vSIMDType av, vSIMDType bv) noexcept
Definition juce_fallback_SIMDNativeOps.h:143
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:78
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:83
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:77
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:84
static forcedinline int8_t sum(vSIMDType av) noexcept
Definition juce_fallback_SIMDNativeOps.h:111
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:74
static forcedinline vSIMDType multiplyAdd(vSIMDType av, vSIMDType bv, vSIMDType cv) noexcept
Definition juce_fallback_SIMDNativeOps.h:132
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:81
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:75
static forcedinline vSIMDType bit_not(vSIMDType av) noexcept
Definition juce_fallback_SIMDNativeOps.h:101
static forcedinline vSIMDType shuffle(vSIMDType av) noexcept
Definition juce_fallback_SIMDNativeOps.h:251
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_fallback_SIMDNativeOps.h:82
static forcedinline vSIMDType truncate(vSIMDType av) noexcept
Definition juce_fallback_SIMDNativeOps.h:122
static forcedinline vSIMDType cmplxmul(vSIMDType av, vSIMDType bv) noexcept
Definition juce_fallback_SIMDNativeOps.h:155
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:482
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:475
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:481
static forcedinline vSIMDType cmplxmul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:490
SIMDFallbackOps< double, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:467
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:478
static forcedinline vSIMDType expand(double s) noexcept
Definition juce_neon_SIMDNativeOps.h:469
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:486
static forcedinline double sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:491
__m256d vSIMDType
Definition juce_avx_SIMDNativeOps.h:142
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:483
static forcedinline double get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:472
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:489
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:487
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:480
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:479
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:493
static forcedinline vSIMDType set(vSIMDType v, size_t i, double s) noexcept
Definition juce_neon_SIMDNativeOps.h:473
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:474
static forcedinline vSIMDType load(const double *a) noexcept
Definition juce_neon_SIMDNativeOps.h:470
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:488
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:476
static forcedinline vSIMDType oddevensum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:492
static forcedinline void store(vSIMDType v, double *a) noexcept
Definition juce_neon_SIMDNativeOps.h:471
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:477
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:485
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:484
static forcedinline void store(vSIMDType value, float *a) noexcept
Definition juce_neon_SIMDNativeOps.h:418
DECLARE_NEON_SIMD_CONST(int32_t, kAllBitsSet)
static forcedinline vSIMDType dupodd(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:436
static forcedinline __m256 JUCE_VECTOR_CALLTYPE swapevenodd(__m256 a) noexcept
Definition juce_avx_SIMDNativeOps.h:92
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:421
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:420
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:419
static forcedinline __m256 JUCE_VECTOR_CALLTYPE bit_not(__m256 a) noexcept
Definition juce_avx_SIMDNativeOps.h:82
static forcedinline __m256 JUCE_VECTOR_CALLTYPE equal(__m256 a, __m256 b) noexcept
Definition juce_avx_SIMDNativeOps.h:85
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:428
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:434
static forcedinline vSIMDType swapevenodd(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:437
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:431
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:430
static forcedinline vSIMDType cmplxmul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:442
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:429
static forcedinline __m256 JUCE_VECTOR_CALLTYPE dupeven(__m256 a) noexcept
Definition juce_avx_SIMDNativeOps.h:90
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:426
static forcedinline vSIMDType set(vSIMDType v, size_t i, float s) noexcept
Definition juce_neon_SIMDNativeOps.h:417
__m256 vSIMDType
Definition juce_avx_SIMDNativeOps.h:62
static forcedinline float get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:416
DECLARE_NEON_SIMD_CONST(int32_t, kEvenHighBit)
static forcedinline __m256 JUCE_VECTOR_CALLTYPE notEqual(__m256 a, __m256 b) noexcept
Definition juce_avx_SIMDNativeOps.h:86
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:425
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:423
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:433
static forcedinline vSIMDType dupeven(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:435
static forcedinline vSIMDType oddevensum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:438
static forcedinline __m256 JUCE_VECTOR_CALLTYPE mul(__m256 a, __m256 b) noexcept
Definition juce_avx_SIMDNativeOps.h:77
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:427
uint32x4_t vMaskType
Definition juce_neon_SIMDNativeOps.h:405
static forcedinline vSIMDType expand(float s) noexcept
Definition juce_neon_SIMDNativeOps.h:414
static forcedinline __m256 JUCE_VECTOR_CALLTYPE add(__m256 a, __m256 b) noexcept
Definition juce_avx_SIMDNativeOps.h:75
static forcedinline vSIMDType load(const float *a) noexcept
Definition juce_neon_SIMDNativeOps.h:415
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:424
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:432
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:439
static forcedinline __m256 JUCE_VECTOR_CALLTYPE bit_xor(__m256 a, __m256 b) noexcept
Definition juce_avx_SIMDNativeOps.h:80
SIMDFallbackOps< float, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:406
static forcedinline __m256 JUCE_VECTOR_CALLTYPE dupodd(__m256 a) noexcept
Definition juce_avx_SIMDNativeOps.h:91
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:422
static forcedinline __m256 JUCE_VECTOR_CALLTYPE bit_notand(__m256 a, __m256 b) noexcept
Definition juce_avx_SIMDNativeOps.h:81
static forcedinline float sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:449
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:256
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:267
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:254
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:265
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:251
static forcedinline int16_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:266
SIMDFallbackOps< int16_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:239
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:252
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:257
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:255
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:258
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:359
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:382
DECLARE_NEON_SIMD_CONST(int16_t, kAllBitsSet)
static forcedinline vSIMDType expand(int16_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:245
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:262
static forcedinline void store(vSIMDType value, int16_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:247
static forcedinline int16_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:248
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:259
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:261
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:250
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:264
static forcedinline vSIMDType set(vSIMDType v, size_t i, int16_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:249
static forcedinline __m256i JUCE_VECTOR_CALLTYPE equal(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:378
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:253
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:260
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:263
static forcedinline __m256i JUCE_VECTOR_CALLTYPE bit_not(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:375
static forcedinline vSIMDType load(const int16_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:246
static forcedinline __m256i JUCE_VECTOR_CALLTYPE equal(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:493
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:134
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:130
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:121
static forcedinline int32_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:119
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:497
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:474
SIMDFallbackOps< int32_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:110
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:127
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:126
static forcedinline void store(vSIMDType value, int32_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:118
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:123
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:131
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:133
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:132
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:136
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:128
static forcedinline vSIMDType set(vSIMDType v, size_t i, int32_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:120
DECLARE_NEON_SIMD_CONST(int32_t, kAllBitsSet)
static forcedinline vSIMDType load(const int32_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:117
static forcedinline int32_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:139
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:135
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:125
static forcedinline __m256i JUCE_VECTOR_CALLTYPE bit_not(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:490
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:137
static forcedinline vSIMDType expand(int32_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:116
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:129
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:122
static forcedinline int32_t JUCE_VECTOR_CALLTYPE sum(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:504
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:124
static forcedinline vSIMDType expand(int64_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:328
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:337
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:333
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:334
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:348
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:335
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:342
SIMDFallbackOps< int64_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:322
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:606
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:345
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:339
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:347
static forcedinline vSIMDType load(const int64_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:329
DECLARE_NEON_SIMD_CONST(int64_t, kAllBitsSet)
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:336
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:340
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:343
static forcedinline void store(vSIMDType value, int64_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:330
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:585
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:341
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:346
static forcedinline int64_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:331
static forcedinline vSIMDType set(vSIMDType v, size_t i, int64_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:332
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:344
static forcedinline int64_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:349
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:338
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:350
static forcedinline int8_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:166
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:177
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:171
DECLARE_NEON_SIMD_CONST(int8_t, kAllBitsSet)
static forcedinline vSIMDType expand(int8_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:163
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:174
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:173
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:185
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:180
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:231
static forcedinline vSIMDType set(vSIMDType v, size_t i, int8_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:167
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:179
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:176
static forcedinline vSIMDType load(const int8_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:164
static forcedinline __m256i JUCE_VECTOR_CALLTYPE equal(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:226
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:175
SIMDFallbackOps< int8_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:157
static forcedinline void store(vSIMDType value, int8_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:165
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:168
static forcedinline int8_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:184
static forcedinline __m256i JUCE_VECTOR_CALLTYPE bit_not(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:223
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:209
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:172
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:170
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:182
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:178
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:181
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:169
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:183
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:304
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:295
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:440
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:294
static forcedinline uint16_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:290
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:292
static forcedinline __m256i JUCE_VECTOR_CALLTYPE equal(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:436
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:309
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:296
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:301
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:302
SIMDFallbackOps< uint16_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:281
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:415
static forcedinline vSIMDType load(const uint16_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:288
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:300
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:293
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:297
DECLARE_NEON_SIMD_CONST(uint16_t, kAllBitsSet)
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:299
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:303
static forcedinline uint16_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:308
static forcedinline void store(vSIMDType value, uint16_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:289
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:298
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:307
static forcedinline vSIMDType set(vSIMDType v, size_t i, uint16_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:291
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:306
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:305
static forcedinline vSIMDType expand(uint16_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:287
static forcedinline __m256i JUCE_VECTOR_CALLTYPE bit_not(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:433
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:88
static forcedinline vSIMDType set(vSIMDType v, size_t i, uint32_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:74
static forcedinline vSIMDType expand(uint32_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:70
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:82
static forcedinline uint32_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:73
static forcedinline uint32_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:93
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:81
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:87
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:553
static forcedinline vSIMDType load(const uint32_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:71
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:86
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:77
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:76
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:85
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:91
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:83
static forcedinline __m256i JUCE_VECTOR_CALLTYPE bit_not(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:546
SIMDFallbackOps< uint32_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:64
static forcedinline uint32_t JUCE_VECTOR_CALLTYPE sum(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:560
static forcedinline __m256i JUCE_VECTOR_CALLTYPE equal(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:549
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:84
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:90
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:80
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:75
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:89
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:79
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:528
static forcedinline void store(vSIMDType value, uint32_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:72
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:78
DECLARE_NEON_SIMD_CONST(uint32_t, kAllBitsSet)
static forcedinline uint64_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:373
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:380
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:388
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:377
static forcedinline uint64_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:391
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:375
SIMDFallbackOps< uint64_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:364
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:386
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:384
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:382
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:390
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:381
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:378
static forcedinline vSIMDType load(const uint64_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:371
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:647
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:624
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:379
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:376
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:387
static forcedinline vSIMDType expand(uint64_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:370
static forcedinline vSIMDType set(vSIMDType v, size_t i, uint64_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:374
static forcedinline void store(vSIMDType value, uint64_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:372
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:385
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:389
DECLARE_NEON_SIMD_CONST(uint64_t, kAllBitsSet)
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:392
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:383
static forcedinline vSIMDType sub(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:210
static forcedinline vSIMDType multiplyAdd(vSIMDType a, vSIMDType b, vSIMDType c) noexcept
Definition juce_neon_SIMDNativeOps.h:224
static forcedinline vSIMDType truncate(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:226
static forcedinline void store(vSIMDType value, uint8_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:206
static forcedinline vSIMDType min(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:217
static forcedinline vSIMDType max(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:218
static forcedinline vSIMDType mul(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:211
static forcedinline vSIMDType add(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:209
static forcedinline uint8_t get(vSIMDType v, size_t i) noexcept
Definition juce_neon_SIMDNativeOps.h:207
__m256i vSIMDType
Definition juce_avx_SIMDNativeOps.h:283
static forcedinline vSIMDType equal(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:219
static forcedinline __m256i JUCE_VECTOR_CALLTYPE bit_not(__m256i a) noexcept
Definition juce_avx_SIMDNativeOps.h:299
static forcedinline uint8_t sum(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:225
static forcedinline vSIMDType greaterThan(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:221
static forcedinline vSIMDType bit_xor(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:214
static forcedinline vSIMDType bit_or(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:213
static forcedinline vSIMDType expand(uint8_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:204
static forcedinline vSIMDType notEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:220
static forcedinline __m256i JUCE_VECTOR_CALLTYPE equal(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:302
SIMDFallbackOps< uint8_t, vSIMDType > fb
Definition juce_neon_SIMDNativeOps.h:198
static forcedinline vSIMDType load(const uint8_t *a) noexcept
Definition juce_neon_SIMDNativeOps.h:205
static forcedinline vSIMDType set(vSIMDType v, size_t i, uint8_t s) noexcept
Definition juce_neon_SIMDNativeOps.h:208
static forcedinline vSIMDType bit_not(vSIMDType a) noexcept
Definition juce_neon_SIMDNativeOps.h:216
static forcedinline __m256i JUCE_VECTOR_CALLTYPE notEqual(__m256i a, __m256i b) noexcept
Definition juce_avx_SIMDNativeOps.h:307
static forcedinline vSIMDType bit_and(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:212
static forcedinline bool allEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:223
static forcedinline vSIMDType greaterThanOrEqual(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:222
static forcedinline vSIMDType bit_notand(vSIMDType a, vSIMDType b) noexcept
Definition juce_neon_SIMDNativeOps.h:215
DECLARE_NEON_SIMD_CONST(uint8_t, kAllBitsSet)
Definition juce_avx_SIMDNativeOps.h:52
return c
Definition crypt.c:175
b
Definition crypt.c:628