Blender  V3.3
avxf.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2016 Intel Corporation */
3 
4 #ifndef __UTIL_AVXF_H__
5 #define __UTIL_AVXF_H__
6 
8 
9 struct avxb;
10 
11 struct avxf {
12  typedef avxf Float;
13 
14  enum { size = 8 }; /* Number of SIMD elements. */
15 
16  union {
17  __m256 m256;
18  float f[8];
19  int i[8];
20  };
21 
23  {
24  }
25  __forceinline avxf(const avxf &other)
26  {
27  m256 = other.m256;
28  }
30  {
31  m256 = other.m256;
32  return *this;
33  }
34 
35  __forceinline avxf(const __m256 a) : m256(a)
36  {
37  }
38  __forceinline avxf(const __m256i a) : m256(_mm256_castsi256_ps(a))
39  {
40  }
41 
42  __forceinline operator const __m256 &() const
43  {
44  return m256;
45  }
46  __forceinline operator __m256 &()
47  {
48  return m256;
49  }
50 
51  __forceinline avxf(float a) : m256(_mm256_set1_ps(a))
52  {
53  }
54 
55  __forceinline avxf(float high32x4, float low32x4)
56  : m256(_mm256_set_ps(
57  high32x4, high32x4, high32x4, high32x4, low32x4, low32x4, low32x4, low32x4))
58  {
59  }
60 
61  __forceinline avxf(float a3, float a2, float a1, float a0)
62  : m256(_mm256_set_ps(a3, a2, a1, a0, a3, a2, a1, a0))
63  {
64  }
65 
67  float a7, float a6, float a5, float a4, float a3, float a2, float a1, float a0)
68  : m256(_mm256_set_ps(a7, a6, a5, a4, a3, a2, a1, a0))
69  {
70  }
71 
72  __forceinline avxf(float3 a) : m256(_mm256_set_ps(a.w, a.z, a.y, a.x, a.w, a.z, a.y, a.x))
73  {
74  }
75 
76  __forceinline avxf(int a3, int a2, int a1, int a0)
77  {
78  const __m256i foo = _mm256_set_epi32(a3, a2, a1, a0, a3, a2, a1, a0);
79  m256 = _mm256_castsi256_ps(foo);
80  }
81 
82  __forceinline avxf(int a7, int a6, int a5, int a4, int a3, int a2, int a1, int a0)
83  {
84  const __m256i foo = _mm256_set_epi32(a7, a6, a5, a4, a3, a2, a1, a0);
85  m256 = _mm256_castsi256_ps(foo);
86  }
87 
88  __forceinline avxf(__m128 a, __m128 b)
89  {
90  const __m256 foo = _mm256_castps128_ps256(a);
91  m256 = _mm256_insertf128_ps(foo, b, 1);
92  }
93 
94  __forceinline const float &operator[](const size_t i) const
95  {
96  assert(i < 8);
97  return f[i];
98  }
99  __forceinline float &operator[](const size_t i)
100  {
101  assert(i < 8);
102  return f[i];
103  }
104 };
105 
106 __forceinline avxf cross(const avxf &a, const avxf &b)
107 {
108  avxf r(0.0,
109  a[4] * b[5] - a[5] * b[4],
110  a[6] * b[4] - a[4] * b[6],
111  a[5] * b[6] - a[6] * b[5],
112  0.0,
113  a[0] * b[1] - a[1] * b[0],
114  a[2] * b[0] - a[0] * b[2],
115  a[1] * b[2] - a[2] * b[1]);
116  return r;
117 }
118 
119 __forceinline void dot3(const avxf &a, const avxf &b, float &den, float &den2)
120 {
121  const avxf t = _mm256_mul_ps(a.m256, b.m256);
122  den = ((float *)&t)[0] + ((float *)&t)[1] + ((float *)&t)[2];
123  den2 = ((float *)&t)[4] + ((float *)&t)[5] + ((float *)&t)[6];
124 }
125 
129 
130 __forceinline const avxf cast(const __m256i &a)
131 {
132  return _mm256_castsi256_ps(a);
133 }
134 
136 {
137  return _mm256_sqrt_ps(a.m256);
138 }
139 
143 
144 __forceinline const avxf operator+(const avxf &a, const avxf &b)
145 {
146  return _mm256_add_ps(a.m256, b.m256);
147 }
148 __forceinline const avxf operator+(const avxf &a, const float &b)
149 {
150  return a + avxf(b);
151 }
152 __forceinline const avxf operator+(const float &a, const avxf &b)
153 {
154  return avxf(a) + b;
155 }
156 
157 __forceinline const avxf operator-(const avxf &a, const avxf &b)
158 {
159  return _mm256_sub_ps(a.m256, b.m256);
160 }
161 __forceinline const avxf operator-(const avxf &a, const float &b)
162 {
163  return a - avxf(b);
164 }
165 __forceinline const avxf operator-(const float &a, const avxf &b)
166 {
167  return avxf(a) - b;
168 }
169 
170 __forceinline const avxf operator*(const avxf &a, const avxf &b)
171 {
172  return _mm256_mul_ps(a.m256, b.m256);
173 }
174 __forceinline const avxf operator*(const avxf &a, const float &b)
175 {
176  return a * avxf(b);
177 }
178 __forceinline const avxf operator*(const float &a, const avxf &b)
179 {
180  return avxf(a) * b;
181 }
182 
183 __forceinline const avxf operator/(const avxf &a, const avxf &b)
184 {
185  return _mm256_div_ps(a.m256, b.m256);
186 }
187 __forceinline const avxf operator/(const avxf &a, const float &b)
188 {
189  return a / avxf(b);
190 }
191 __forceinline const avxf operator/(const float &a, const avxf &b)
192 {
193  return avxf(a) / b;
194 }
195 
196 __forceinline const avxf operator|(const avxf &a, const avxf &b)
197 {
198  return _mm256_or_ps(a.m256, b.m256);
199 }
200 
201 __forceinline const avxf operator^(const avxf &a, const avxf &b)
202 {
203  return _mm256_xor_ps(a.m256, b.m256);
204 }
205 
206 __forceinline const avxf operator&(const avxf &a, const avxf &b)
207 {
208  return _mm256_and_ps(a.m256, b.m256);
209 }
210 
211 __forceinline const avxf max(const avxf &a, const avxf &b)
212 {
213  return _mm256_max_ps(a.m256, b.m256);
214 }
215 __forceinline const avxf min(const avxf &a, const avxf &b)
216 {
217  return _mm256_min_ps(a.m256, b.m256);
218 }
219 
223 
224 __forceinline const avxf shuffle(const avxf &a, const __m256i &shuf)
225 {
226  return _mm256_permutevar_ps(a, shuf);
227 }
228 
229 template<int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7>
231 {
232  return _mm256_permutevar_ps(a, _mm256_set_epi32(i7, i6, i5, i4, i3, i2, i1, i0));
233 }
234 
235 template<size_t i0, size_t i1, size_t i2, size_t i3>
236 __forceinline const avxf shuffle(const avxf &a, const avxf &b)
237 {
238  return _mm256_shuffle_ps(a, b, _MM_SHUFFLE(i3, i2, i1, i0));
239 }
240 template<size_t i0, size_t i1, size_t i2, size_t i3>
242 {
243  return shuffle<i0, i1, i2, i3>(a, a);
244 }
245 template<size_t i0> __forceinline const avxf shuffle(const avxf &a, const avxf &b)
246 {
247  return shuffle<i0, i0, i0, i0>(a, b);
248 }
249 template<size_t i0> __forceinline const avxf shuffle(const avxf &a)
250 {
251  return shuffle<i0>(a, a);
252 }
253 
254 template<size_t i> __forceinline float extract(const avxf &a)
255 {
256  __m256 b = shuffle<i, i, i, i>(a).m256;
257  return _mm256_cvtss_f32(b);
258 }
259 template<> __forceinline float extract<0>(const avxf &a)
260 {
261  return _mm256_cvtss_f32(a.m256);
262 }
263 
264 __forceinline ssef low(const avxf &a)
265 {
266  return _mm256_extractf128_ps(a.m256, 0);
267 }
268 __forceinline ssef high(const avxf &a)
269 {
270  return _mm256_extractf128_ps(a.m256, 1);
271 }
272 
273 template<int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7>
275 {
276 #ifdef __KERNEL_AVX2__
277  return _mm256_permutevar8x32_ps(a, _mm256_set_epi32(i7, i6, i5, i4, i3, i2, i1, i0));
278 #else
279  float temp[8];
280  _mm256_storeu_ps((float *)&temp, a);
281  return avxf(temp[i7], temp[i6], temp[i5], temp[i4], temp[i3], temp[i2], temp[i1], temp[i0]);
282 #endif
283 }
284 
285 template<int S0, int S1, int S2, int S3, int S4, int S5, int S6, int S7>
287 {
288  return a ^ avxf(S7 << 31, S6 << 31, S5 << 31, S4 << 31, S3 << 31, S2 << 31, S1 << 31, S0 << 31);
289 }
290 
291 template<size_t S0, size_t S1, size_t S2, size_t S3, size_t S4, size_t S5, size_t S6, size_t S7>
292 ccl_device_inline const avxf blend(const avxf &a, const avxf &b)
293 {
294  return _mm256_blend_ps(
295  a, b, S7 << 0 | S6 << 1 | S5 << 2 | S4 << 3 | S3 << 4 | S2 << 5 | S1 << 6 | S0 << 7);
296 }
297 
298 template<size_t S0, size_t S1, size_t S2, size_t S3>
299 ccl_device_inline const avxf blend(const avxf &a, const avxf &b)
300 {
301  return blend<S0, S1, S2, S3, S0, S1, S2, S3>(a, b);
302 }
303 
304 //#if defined(__KERNEL_SSE41__)
305 __forceinline avxf maxi(const avxf &a, const avxf &b)
306 {
307  const avxf ci = _mm256_max_ps(a, b);
308  return ci;
309 }
310 
311 __forceinline avxf mini(const avxf &a, const avxf &b)
312 {
313  const avxf ci = _mm256_min_ps(a, b);
314  return ci;
315 }
316 //#endif
317 
321 __forceinline const avxf madd(const avxf &a, const avxf &b, const avxf &c)
322 {
323 #ifdef __KERNEL_AVX2__
324  return _mm256_fmadd_ps(a, b, c);
325 #else
326  return c + (a * b);
327 #endif
328 }
329 
330 __forceinline const avxf nmadd(const avxf &a, const avxf &b, const avxf &c)
331 {
332 #ifdef __KERNEL_AVX2__
333  return _mm256_fnmadd_ps(a, b, c);
334 #else
335  return c - (a * b);
336 #endif
337 }
338 __forceinline const avxf msub(const avxf &a, const avxf &b, const avxf &c)
339 {
340 #ifdef __KERNEL_AVX2__
341  return _mm256_fmsub_ps(a, b, c);
342 #else
343  return (a * b) - c;
344 #endif
345 }
346 
350 __forceinline const avxb operator<=(const avxf &a, const avxf &b)
351 {
352  return _mm256_cmp_ps(a.m256, b.m256, _CMP_LE_OS);
353 }
354 
355 __forceinline const avxf select(const avxb &m, const avxf &t, const avxf &f)
356 {
357  return _mm256_blendv_ps(f, t, m);
358 }
359 
363 
364 __forceinline avxf mix(const avxf &a, const avxf &b, const avxf &t)
365 {
366  return madd(t, b, (avxf(1.0f) - t) * a);
367 }
368 
369 #ifndef _mm256_set_m128
370 # define _mm256_set_m128(/* __m128 */ hi, /* __m128 */ lo) \
371  _mm256_insertf128_ps(_mm256_castps128_ps256(lo), (hi), 0x1)
372 #endif
373 
374 #define _mm256_loadu2_m128(/* float const* */ hiaddr, /* float const* */ loaddr) \
375  _mm256_set_m128(_mm_loadu_ps(hiaddr), _mm_loadu_ps(loaddr))
376 
378 
379 #endif
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint i1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
__forceinline avxf maxi(const avxf &a, const avxf &b)
Definition: avxf.h:305
__forceinline avxf cross(const avxf &a, const avxf &b)
Definition: avxf.h:106
__forceinline const avxf operator-(const avxf &a, const avxf &b)
Definition: avxf.h:157
__forceinline const avxf operator^(const avxf &a, const avxf &b)
Definition: avxf.h:201
__forceinline avxf mini(const avxf &a, const avxf &b)
Definition: avxf.h:311
__forceinline const avxf operator&(const avxf &a, const avxf &b)
Definition: avxf.h:206
__forceinline const avxf madd(const avxf &a, const avxf &b, const avxf &c)
Ternary Operators.
Definition: avxf.h:321
__forceinline ssef low(const avxf &a)
Definition: avxf.h:264
__forceinline const avxf shuffle(const avxf &a, const __m256i &shuf)
Movement/Shifting/Shuffling Functions.
Definition: avxf.h:224
__forceinline ssef high(const avxf &a)
Definition: avxf.h:268
__forceinline const avxf operator|(const avxf &a, const avxf &b)
Definition: avxf.h:196
__forceinline const avxf operator+(const avxf &a, const avxf &b)
Binary Operators.
Definition: avxf.h:144
__forceinline const avxf min(const avxf &a, const avxf &b)
Definition: avxf.h:215
__forceinline const avxf operator*(const avxf &a, const avxf &b)
Definition: avxf.h:170
__forceinline const avxf msub(const avxf &a, const avxf &b, const avxf &c)
Definition: avxf.h:338
__forceinline const avxf select(const avxb &m, const avxf &t, const avxf &f)
Definition: avxf.h:355
__forceinline const avxf cast(const __m256i &a)
Unary Operators.
Definition: avxf.h:130
__forceinline const avxf max(const avxf &a, const avxf &b)
Definition: avxf.h:211
__forceinline float extract(const avxf &a)
Definition: avxf.h:254
__forceinline const avxb operator<=(const avxf &a, const avxf &b)
Comparison Operators + Select.
Definition: avxf.h:350
ccl_device_inline const avxf set_sign_bit(const avxf &a)
Definition: avxf.h:286
ccl_device_inline const avxf blend(const avxf &a, const avxf &b)
Definition: avxf.h:292
__forceinline const avxf nmadd(const avxf &a, const avxf &b, const avxf &c)
Definition: avxf.h:330
__forceinline float extract< 0 >(const avxf &a)
Definition: avxf.h:259
__forceinline avxf mix(const avxf &a, const avxf &b, const avxf &t)
Common Functions.
Definition: avxf.h:364
__forceinline void dot3(const avxf &a, const avxf &b, float &den, float &den2)
Definition: avxf.h:119
__forceinline const avxf permute(const avxf &a)
Definition: avxf.h:274
__forceinline const avxf mm256_sqrt(const avxf &a)
Definition: avxf.h:135
__forceinline const avxf operator/(const avxf &a, const avxf &b)
Definition: avxf.h:183
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
#define ccl_device_inline
Definition: cuda/compat.h:34
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
static unsigned c
Definition: RandGen.cpp:83
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
#define __forceinline
Definition: avxb.h:13
Definition: avxf.h:11
@ size
Definition: avxf.h:14
__forceinline avxf(float high32x4, float low32x4)
Definition: avxf.h:55
__forceinline avxf(const avxf &other)
Definition: avxf.h:25
__forceinline avxf(float a7, float a6, float a5, float a4, float a3, float a2, float a1, float a0)
Definition: avxf.h:66
__forceinline avxf & operator=(const avxf &other)
Definition: avxf.h:29
avxf Float
Definition: avxf.h:12
__forceinline avxf(int a7, int a6, int a5, int a4, int a3, int a2, int a1, int a0)
Definition: avxf.h:82
__forceinline avxf(float a)
Definition: avxf.h:51
__forceinline avxf(__m128 a, __m128 b)
Definition: avxf.h:88
__forceinline const float & operator[](const size_t i) const
Definition: avxf.h:94
__m256 m256
Definition: avxf.h:17
float f[8]
Definition: avxf.h:18
__forceinline avxf()
Definition: avxf.h:22
__forceinline avxf(const __m256 a)
Definition: avxf.h:35
__forceinline avxf(int a3, int a2, int a1, int a0)
Definition: avxf.h:76
__forceinline avxf(const __m256i a)
Definition: avxf.h:38
__forceinline float & operator[](const size_t i)
Definition: avxf.h:99
int i[8]
Definition: avxf.h:19
__forceinline avxf(float a3, float a2, float a1, float a0)
Definition: avxf.h:61
__forceinline avxf(float3 a)
Definition: avxf.h:72