18 #ifndef __UTIL_SSEF_H__
19 #define __UTIL_SSEF_H__
25 #ifdef __KERNEL_SSE2__
75 __forceinline ssef(
float a,
float b,
float c,
float d) : m128(_mm_setr_ps(
a, b,
c, d))
87 # if defined(__KERNEL_AVX__)
90 return _mm_broadcast_ss((
float *)
a);
95 return _mm_set1_ps(*(
float *)
a);
121 return _mm_castsi128_ps(
a);
129 return _mm_xor_ps(
a.m128, _mm_castsi128_ps(_mm_set1_epi32(0x80000000)));
133 return _mm_and_ps(
a.m128, _mm_castsi128_ps(_mm_set1_epi32(0x7fffffff)));
135 # if defined(__KERNEL_SSE41__)
138 return _mm_blendv_ps(ssef(1.0f), -ssef(1.0f), _mm_cmplt_ps(
a, ssef(0.0f)));
143 return _mm_and_ps(
a.m128, _mm_castsi128_ps(_mm_set1_epi32(0x80000000)));
148 const ssef
r = _mm_rcp_ps(
a.m128);
149 return _mm_sub_ps(_mm_add_ps(
r,
r), _mm_mul_ps(_mm_mul_ps(
r,
r),
a));
153 return _mm_mul_ps(
a,
a);
157 return _mm_sqrt_ps(
a.m128);
161 const ssef
r = _mm_rsqrt_ps(
a.m128);
163 _mm_mul_ps(_mm_set_ps(1.5f, 1.5f, 1.5f, 1.5f),
r),
164 _mm_mul_ps(_mm_mul_ps(_mm_mul_ps(
a, _mm_set_ps(-0.5f, -0.5f, -0.5f, -0.5f)),
r),
174 return _mm_add_ps(
a.m128, b.m128);
187 return _mm_sub_ps(
a.m128, b.m128);
200 return _mm_mul_ps(
a.m128, b.m128);
213 return _mm_div_ps(
a.m128, b.m128);
226 return _mm_xor_ps(
a.m128, b.m128);
230 return _mm_xor_ps(
a.m128, _mm_castsi128_ps(b.m128));
235 return _mm_and_ps(
a.m128, b.m128);
239 return _mm_and_ps(
a.m128, _mm_castsi128_ps(b.m128));
244 return _mm_or_ps(
a.m128, b.m128);
248 return _mm_or_ps(
a.m128, _mm_castsi128_ps(b.m128));
253 return _mm_andnot_ps(
a.m128, b.m128);
258 return _mm_min_ps(
a.m128, b.m128);
262 return _mm_min_ps(
a.m128, ssef(b));
266 return _mm_min_ps(ssef(
a), b.m128);
271 return _mm_max_ps(
a.m128, b.m128);
275 return _mm_max_ps(
a.m128, ssef(b));
279 return _mm_max_ps(ssef(
a), b.m128);
282 # if defined(__KERNEL_SSE41__)
285 const ssei ai = _mm_castps_si128(
a);
286 const ssei bi = _mm_castps_si128(b);
287 const ssei ci = _mm_min_epi32(ai, bi);
288 return _mm_castsi128_ps(ci);
292 # if defined(__KERNEL_SSE41__)
295 const ssei ai = _mm_castps_si128(
a);
296 const ssei bi = _mm_castps_si128(b);
297 const ssei ci = _mm_max_epi32(ai, bi);
298 return _mm_castsi128_ps(ci);
308 # if defined(__KERNEL_NEON__)
309 return vfmaq_f32(
c,
a, b);
310 # elif defined(__KERNEL_AVX2__)
311 return _mm_fmadd_ps(
a, b,
c);
318 # if defined(__KERNEL_NEON__)
319 return vfmaq_f32(vnegq_f32(
c),
a, b);
320 # elif defined(__KERNEL_AVX2__)
321 return _mm_fmsub_ps(
a, b,
c);
328 # if defined(__KERNEL_NEON__)
329 return vfmsq_f32(
c,
a, b);
330 # elif defined(__KERNEL_AVX2__)
331 return _mm_fnmadd_ps(
a, b,
c);
336 __forceinline const ssef nmsub(
const ssef &
a,
const ssef &b,
const ssef &
c)
338 # if defined(__KERNEL_NEON__)
339 return vfmsq_f32(vnegq_f32(
c),
a, b);
340 # elif defined(__KERNEL_AVX2__)
341 return _mm_fnmsub_ps(
a, b,
c);
393 return _mm_cmpeq_ps(
a.m128, b.m128);
406 return _mm_cmpneq_ps(
a.m128, b.m128);
419 return _mm_cmplt_ps(
a.m128, b.m128);
432 return _mm_cmpnlt_ps(
a.m128, b.m128);
445 return _mm_cmpnle_ps(
a.m128, b.m128);
458 return _mm_cmple_ps(
a.m128, b.m128);
471 # ifdef __KERNEL_SSE41__
472 return _mm_blendv_ps(f,
t, m);
474 return _mm_or_ps(_mm_and_ps(m,
t), _mm_andnot_ps(m, f));
480 # ifdef __KERNEL_SSE41__
481 return _mm_blendv_ps(f,
t, m);
483 return _mm_or_ps(_mm_and_ps(m,
t), _mm_andnot_ps(m, f));
489 # if defined(__KERNEL_SSE41__) && \
490 ((!defined(__clang__) && !defined(_MSC_VER)) || defined(__INTEL_COMPILER))
491 return _mm_blend_ps(f,
t,
mask);
501 # if defined(__KERNEL_SSE41__)
504 # ifdef __KERNEL_NEON__
505 return vrndnq_f32(
a);
507 return _mm_round_ps(
a, _MM_FROUND_TO_NEAREST_INT);
512 # ifdef __KERNEL_NEON__
513 return vrndmq_f32(
a);
515 return _mm_round_ps(
a, _MM_FROUND_TO_NEG_INF);
520 # ifdef __KERNEL_NEON__
521 return vrndpq_f32(
a);
523 return _mm_round_ps(
a, _MM_FROUND_TO_POS_INF);
528 # ifdef __KERNEL_NEON__
531 return _mm_round_ps(
a, _MM_FROUND_TO_ZERO);
536 # ifdef __KERNEL_NEON__
537 return vrndnq_f32(
a);
539 return _mm_round_ps(
a, _MM_FROUND_TO_NEG_INF);
544 # ifdef __KERNEL_NEON__
545 return vrndpq_f32(
a);
547 return _mm_round_ps(
a, _MM_FROUND_TO_POS_INF);
554 return _mm_cvttps_epi32(
a.m128);
564 return truncatei(
a) +
cast((
a < 0.0f).m128);
579 return madd(
t, b, (ssef(1.0f) -
t) *
a);
588 return _mm_unpacklo_ps(
a.m128, b.m128);
592 return _mm_unpackhi_ps(
a.m128, b.m128);
595 template<
size_t i0,
size_t i1,
size_t i2,
size_t i3>
598 # ifdef __KERNEL_NEON__
599 return shuffle_neon<ssef, i0, i1, i2, i3>(b.m128);
601 return _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(b), _MM_SHUFFLE(i3, i2,
i1, i0)));
607 return _mm_movelh_ps(
a,
a);
610 template<>
__forceinline const ssef shuffle<2, 3, 2, 3>(
const ssef &
a)
612 return _mm_movehl_ps(
a,
a);
615 template<
size_t i0,
size_t i1,
size_t i2,
size_t i3>
618 # ifdef __KERNEL_NEON__
619 return shuffle_neon<float32x4_t, i0, i1, i2, i3>(
a, b);
621 return _mm_shuffle_ps(
a, b, _MM_SHUFFLE(i3, i2,
i1, i0));
627 # ifdef __KERNEL_NEON__
628 return shuffle<float32x4_t, i0, i0, i0, i0>(
a, b);
630 return _mm_shuffle_ps(
a, b, _MM_SHUFFLE(i0, i0, i0, i0));
634 # ifndef __KERNEL_NEON__
637 return _mm_movelh_ps(
a, b);
640 template<>
__forceinline const ssef shuffle<2, 3, 2, 3>(
const ssef &
a,
const ssef &b)
642 return _mm_movehl_ps(b,
a);
646 # if defined(__KERNEL_SSSE3__)
647 __forceinline const ssef shuffle8(
const ssef &
a,
const ssei &shuf)
649 return _mm_castsi128_ps(_mm_shuffle_epi8(_mm_castps_si128(
a), shuf));
653 # if defined(__KERNEL_SSE3__)
656 return _mm_moveldup_ps(b);
660 return _mm_movehdup_ps(b);
666 return shuffle<i0, i0, i0, i0>(b);
669 # if defined(__KERNEL_AVX__)
672 return _mm_permutevar_ps(
a, shuf);
678 return _mm_cvtss_f32(shuffle<i, i, i, i>(
a));
682 return _mm_cvtss_f32(
a);
685 # if defined(__KERNEL_SSE41__)
686 template<
size_t dst,
size_t src,
size_t clr>
689 # ifdef __KERNEL_NEON__
697 return _mm_insert_ps(
a, b, (dst << 4) | (src << 6) | clr);
702 return insert<dst, src, 0>(
a, b);
706 return insert<dst, 0>(
a, _mm_set_ss(b));
741 const ssef &r0,
const ssef &r1,
const ssef &r2,
const ssef &r3, ssef &c0, ssef &c1, ssef &c2)
758 # ifdef __KERNEL_NEON__
759 return vdupq_n_f32(vminvq_f32(
v));
761 ssef h =
min(shuffle<1, 0, 3, 2>(
v),
v);
762 return min(shuffle<2, 3, 0, 1>(h), h);
767 # ifdef __KERNEL_NEON__
768 return vdupq_n_f32(vmaxvq_f32(
v));
770 ssef h =
max(shuffle<1, 0, 3, 2>(
v),
v);
771 return max(shuffle<2, 3, 0, 1>(h), h);
776 # ifdef __KERNEL_NEON__
777 return vdupq_n_f32(vaddvq_f32(
v));
779 ssef h = shuffle<1, 0, 3, 2>(
v) +
v;
780 return shuffle<2, 3, 0, 1>(h) + h;
786 # ifdef __KERNEL_NEON__
787 return vminvq_f32(
v);
794 # ifdef __KERNEL_NEON__
795 return vmaxvq_f32(
v);
802 # ifdef __KERNEL_NEON__
803 return vaddvq_f32(
v);
820 const ssef
a =
select(valid,
v, ssef(pos_inf));
825 const ssef
a =
select(valid,
v, ssef(neg_inf));
831 return _mm_movemask_ps(
a);
840 # ifdef __KERNEL_WITH_SSE_ALIGN__
841 return _mm_load_ps(&
a.x);
843 return _mm_loadu_ps(&
a.x);
849 # ifdef __KERNEL_WITH_SSE_ALIGN__
850 return _mm_load_ps(&
a.x);
852 return _mm_loadu_ps(&
a.x);
858 return _mm_load_ps((
float *)
a);
863 return _mm_set_ss(
a);
868 _mm_store_ps((
float *)
ptr,
v);
873 return _mm_loadu_ps((
float *)
a);
878 _mm_storeu_ps((
float *)
ptr,
v);
883 # if defined(__KERNEL_AVX__)
884 _mm_maskstore_ps((
float *)
ptr, (__m128i)
mask, f);
892 # if defined(__KERNEL_SSE41__)
893 return _mm_castsi128_ps(_mm_stream_load_si128((__m128i *)
ptr));
895 return _mm_load_ps((
float *)
ptr);
901 # if defined(__KERNEL_SSE41__)
902 _mm_stream_ps((
float *)
ptr,
v);
904 _mm_store_ps((
float *)
ptr,
v);
921 const ssef b0 = shuffle<1, 2, 0, 3>(b);
922 const ssef a1 = shuffle<1, 2, 0, 3>(
a);
924 return msub(a0, b0, a1 * b1);
929 return shuffle<1, 2, 0, 3>(cross_zxy(
a, b));
934 # ifdef __KERNEL_SSE41__
935 return _mm_dp_ps(
a.m128, b.m128, 0x7f);
938 return ssef(((
float *)&
t)[0] + ((
float *)&
t)[1] + ((
float *)&
t)[2]);
945 # ifndef __KERNEL_SSE41__
946 float4 &
t = (float4 &)
a;
947 return (
X ?
t.x *
t.x : 0.0f) + (
Y ?
t.y *
t.y : 0.0f) + (
Z ?
t.z *
t.z : 0.0f) +
948 (W ?
t.w *
t.w : 0.0f);
951 ssef(_mm_dp_ps(
a.m128,
a.m128, (
X << 4) | (
Y << 5) | (
Z << 6) | (W << 7) | 0xf)));
957 # ifdef __KERNEL_SSE41__
958 return extract<0>(ssef(_mm_dp_ps(
a.m128, b.m128, 0x7f)));
961 return ((
float *)&
t)[0] + ((
float *)&
t)[1] + ((
float *)&
t)[2];
967 return dot3_splat(
a,
a);
982 # ifdef __KERNEL_SSSE3__
985 typedef ssei shuffle_swap_t;
989 return _mm_set_epi8(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
994 return _mm_set_epi8(7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8);
999 return cast(_mm_shuffle_epi8(
cast(
a), shuf));
1005 typedef int shuffle_swap_t;
1021 return shuffle<1, 0, 3, 2>(
a);
1023 return shuffle<3, 2, 1, 0>(
a);
1028 # if defined(__KERNEL_SSE41__) && !defined(__KERNEL_NEON__)
1031 const shuffle_swap_t &shuf_identity,
1032 const shuffle_swap_t &shuf_swap,
1035 shuffle_swap_t shufflexyz[3])
1037 const __m128 idirsplat_raw[] = {_mm_set_ps1(idir.
x), _mm_set_ps1(idir.
y), _mm_set_ps1(idir.
z)};
1038 idirsplat[0] = _mm_xor_ps(idirsplat_raw[0], pn);
1039 idirsplat[1] = _mm_xor_ps(idirsplat_raw[1], pn);
1040 idirsplat[2] = _mm_xor_ps(idirsplat_raw[2], pn);
1042 const ssef signmask =
cast(ssei(0x80000000));
1043 const ssef shuf_identity_f =
cast(shuf_identity);
1044 const ssef shuf_swap_f =
cast(shuf_swap);
1046 shufflexyz[0] = _mm_castps_si128(
1047 _mm_blendv_ps(shuf_identity_f, shuf_swap_f, _mm_and_ps(idirsplat_raw[0], signmask)));
1048 shufflexyz[1] = _mm_castps_si128(
1049 _mm_blendv_ps(shuf_identity_f, shuf_swap_f, _mm_and_ps(idirsplat_raw[1], signmask)));
1050 shufflexyz[2] = _mm_castps_si128(
1051 _mm_blendv_ps(shuf_identity_f, shuf_swap_f, _mm_and_ps(idirsplat_raw[2], signmask)));
1057 const shuffle_swap_t &shuf_identity,
1058 const shuffle_swap_t &shuf_swap,
1061 shuffle_swap_t shufflexyz[3])
1063 idirsplat[0] = ssef(idir.
x) ^ pn;
1064 idirsplat[1] = ssef(idir.
y) ^ pn;
1065 idirsplat[2] = ssef(idir.
z) ^ pn;
1067 shufflexyz[0] = (idir.
x >= 0) ? shuf_identity : shuf_swap;
1068 shufflexyz[1] = (idir.
y >= 0) ? shuf_identity : shuf_swap;
1069 shufflexyz[2] = (idir.
z >= 0) ? shuf_identity : shuf_swap;
1076 ssei
a = _mm_srli_epi32(in, 16);
1077 ssei b = _mm_and_si128(in, _mm_set1_epi32(0x0000ffff));
1078 ssei
c = _mm_or_si128(
a, _mm_set1_epi32(0x53000000));
1079 ssef d = _mm_cvtepi32_ps(b);
1080 ssef
e = _mm_sub_ps(_mm_castsi128_ps(
c), _mm_castsi128_ps(_mm_set1_epi32(0x53000000)));
1081 return _mm_add_ps(
e, d);
1084 template<
size_t S1,
size_t S2,
size_t S3,
size_t S4>
1087 return cast(
cast(
a) ^ ssei(S1 << 31, S2 << 31, S3 << 31, S4 << 31));
1097 "%s: %.8f %.8f %.8f %.8f\n",
label, (
double)
a[0], (
double)
a[1], (
double)
a[2], (
double)
a[3]);
void BLI_kdtree_nd_() insert(KDTree *tree, int index, const float co[KD_DIMS]) ATTR_NONNULL(1
_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 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
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner Anti Mix RGB Hue Separate TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC Boolean Random Float
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
btGeneric6DofConstraint & operator=(btGeneric6DofConstraint &other)
btMatrix3x3 transpose() const
Return the transpose of the matrix.
SIMD_FORCE_INLINE btVector3 & operator[](int i)
Get a mutable reference to a row of the matrix as a vector.
__forceinline float extract(const int4 &b)
bool operator==(const GeometrySet &UNUSED(a), const GeometrySet &UNUSED(b))
static void shuffle(float2 points[], int size, int rng_seed)
#define ccl_device_inline
#define CCL_NAMESPACE_END
Matrix< T, M, N > operator-(const Matrix< T, M, N > &m1, const Matrix< T, M, N > &m2)
Matrix< T, M, N > operator/(const Matrix< T, M, N > &m1, const typename Matrix< T, M, N >::value_type lambda)
Vec< T, N > operator*(const typename Vec< T, N >::value_type r, const Vec< T, N > &v)
GPUState operator^(const GPUState &a, const GPUState &b)
constexpr bool operator!=(StringRef a, StringRef b)
constexpr bool operator>=(StringRef a, StringRef b)
constexpr bool operator<(StringRef a, StringRef b)
constexpr bool operator<=(StringRef a, StringRef b)
constexpr bool operator>(StringRef a, StringRef b)
std::string operator+(StringRef a, StringRef b)
__forceinline uint32_t movemask(const avxb &a)
__forceinline const avxb operator&(const avxb &a, const avxb &b)
Binary Operators.
__forceinline const avxb unpacklo(const avxb &a, const avxb &b)
Movement/Shifting/Shuffling Functions.
__forceinline const avxb operator|(const avxb &a, const avxb &b)
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
__forceinline const avxb unpackhi(const avxb &a, const avxb &b)
__forceinline avxf maxi(const avxf &a, const avxf &b)
__forceinline avxf cross(const avxf &a, const avxf &b)
__forceinline avxf mini(const avxf &a, const avxf &b)
__forceinline const avxf madd(const avxf &a, const avxf &b, const avxf &c)
Ternary Operators.
__forceinline const avxf msub(const avxf &a, const avxf &b, const avxf &c)
ccl_device_inline const avxf set_sign_bit(const avxf &a)
__forceinline const avxf nmadd(const avxf &a, const avxf &b, const avxf &c)
__forceinline float extract< 0 >(const avxf &a)
__forceinline const avxi shuffle< 0, 0, 2, 2 >(const avxi &b)
__forceinline avxi & operator-=(avxi &a, const avxi &b)
__forceinline const avxi shuffle< 0, 1, 0, 1 >(const avxi &b)
__forceinline int reduce_max(const avxi &v)
__forceinline uint32_t select_max(const avxi &v)
__forceinline const avxi vreduce_add(const avxi &v)
__forceinline const avxi abs(const avxi &a)
__forceinline int reduce_min(const avxi &v)
__forceinline const avxi shuffle< 1, 1, 3, 3 >(const avxi &b)
__forceinline const avxi vreduce_min(const avxi &v)
__forceinline const avxi broadcast(const int *ptr)
__forceinline avxi & operator+=(avxi &a, const avxi &b)
Assignment Operators.
__forceinline const avxi vreduce_max(const avxi &v)
__forceinline int reduce_add(const avxi &v)
__forceinline uint32_t select_min(const avxi &v)
__forceinline avxi & operator*=(avxi &a, const avxi &b)
ccl_device_inline float sqr(float a)
ccl_device_inline float floorfrac(float x, int *i)
ccl_device_inline float dot(const float2 &a, const float2 &b)
ccl_device_inline float2 operator/=(float2 &a, const float2 &b)
ccl_device_inline float2 floor(const float2 &a)
ccl_device_inline float3 ceil(const float3 &a)
ccl_device_inline float len_squared(const float3 a)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
CCL_NAMESPACE_BEGIN __forceinline uint32_t __bsf(const uint32_t x)
ccl_device_inline size_t round_down(size_t x, size_t multiple)
ccl_device_inline size_t round_up(size_t x, size_t multiple)