4 #ifndef __UTIL_MATH_FLOAT8_H__
5 #define __UTIL_MATH_FLOAT8_H__
7 #ifndef __UTIL_MATH_H__
8 # error "Do not include this file directly, include util/types.h instead."
70 #ifdef __KERNEL_AVX2__
71 return float8_t(_mm256_setzero_ps());
84 #ifdef __KERNEL_AVX2__
85 return float8_t(_mm256_add_ps(
a.m256,
b.m256));
88 a.a +
b.a,
a.b +
b.b,
a.c +
b.c,
a.d +
b.d,
a.e +
b.e,
a.f +
b.f,
a.g +
b.g,
a.h +
b.h);
104 #ifdef __KERNEL_AVX2__
105 __m256
mask = _mm256_castsi256_ps(_mm256_set1_epi32(0x80000000));
106 return float8_t(_mm256_xor_ps(
a.m256,
mask));
114 #ifdef __KERNEL_AVX2__
115 return float8_t(_mm256_sub_ps(
a.m256,
b.m256));
118 a.a -
b.a,
a.b -
b.b,
a.c -
b.c,
a.d -
b.d,
a.e -
b.e,
a.f -
b.f,
a.g -
b.g,
a.h -
b.h);
134 #ifdef __KERNEL_AVX2__
135 return float8_t(_mm256_mul_ps(
a.m256,
b.m256));
138 a.a *
b.a,
a.b *
b.b,
a.c *
b.c,
a.d *
b.d,
a.e *
b.e,
a.f *
b.f,
a.g *
b.g,
a.h *
b.h);
154 #ifdef __KERNEL_AVX2__
155 return float8_t(_mm256_div_ps(
a.m256,
b.m256));
158 a.a /
b.a,
a.b /
b.b,
a.c /
b.c,
a.d /
b.d,
a.e /
b.e,
a.f /
b.f,
a.g /
b.g,
a.h /
b.h);
199 #ifdef __KERNEL_AVX2__
200 return (_mm256_movemask_ps(_mm256_castsi256_ps(
201 _mm256_cmpeq_epi32(_mm256_castps_si256(
a.m256), _mm256_castps_si256(
b.m256)))) &
202 0b11111111) == 0b11111111;
204 return (
a.a ==
b.a &&
a.b ==
b.b &&
a.c ==
b.c &&
a.d ==
b.d &&
a.e ==
b.e &&
a.f ==
b.f &&
205 a.g ==
b.g &&
a.h ==
b.h);
211 #ifdef __KERNEL_AVX2__
212 return float8_t(_mm256_rcp_ps(
a.m256));
227 #ifdef __KERNEL_AVX2__
228 return float8_t(_mm256_sqrt_ps(
a.m256));
258 #ifdef __KERNEL_AVX2__
259 return float8_t(_mm256_min_ps(
a.m256,
b.m256));
274 #ifdef __KERNEL_AVX2__
275 return float8_t(_mm256_max_ps(
a.m256,
b.m256));
295 #ifdef __KERNEL_AVX2__
296 return float8_t(_mm256_and_ps(
a.m256, _mm256_castsi256_ps(_mm256_set1_epi32(0x7fffffff))));
311 return a +
t * (
b -
a);
333 #ifdef __KERNEL_AVX2__
334 float8_t
t(_mm256_dp_ps(
a.m256,
b.m256, 0xFF));
337 return (
a.a *
b.a) + (
a.b *
b.b) + (
a.c *
b.c) + (
a.d *
b.d) + (
a.e *
b.e) + (
a.f *
b.f) +
338 (
a.g *
b.g) + (
a.h *
b.h);
366 #ifdef __KERNEL_AVX2__
367 float8_t
b(_mm256_hadd_ps(
a.m256,
a.m256));
368 float8_t h(_mm256_hadd_ps(
b.m256,
b.m256));
371 return a.a +
a.b +
a.c +
a.d +
a.e +
a.f +
a.g +
a.h;
388 (
b.b != 0.0f) ?
a.b /
b.b : 0.0f,
389 (
b.c != 0.0f) ?
a.c /
b.c : 0.0f,
390 (
b.d != 0.0f) ?
a.d /
b.d : 0.0f,
391 (
b.e != 0.0f) ?
a.e /
b.e : 0.0f,
392 (
b.f != 0.0f) ?
a.f /
b.f : 0.0f,
393 (
b.g != 0.0f) ?
a.g /
b.g : 0.0f,
394 (
b.h != 0.0f) ?
a.h /
b.h : 0.0f);
_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
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
#define ccl_device_inline
#define CCL_NAMESPACE_END
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
ccl_device_inline float reduce_add(const float8_t a)
ccl_device_inline float8_t safe_divide(const float8_t a, const float b)
ccl_device_inline float8_t ensure_finite(float8_t v)
ccl_device_inline float8_t one_float8_t()
ccl_device_inline float8_t operator+=(float8_t a, const float8_t b)
ccl_device_inline float8_t saturate(const float8_t a)
ccl_device_inline float8_t operator*=(float8_t a, const float8_t b)
ccl_device_inline float8_t operator/(const float8_t a, const float8_t b)
ccl_device_inline float8_t log(float8_t v)
ccl_device_inline float8_t operator*(const float8_t a, const float8_t b)
ccl_device_inline bool is_zero(const float8_t a)
ccl_device_inline bool isfinite_safe(float8_t v)
ccl_device_inline float8_t sqr(const float8_t a)
ccl_device_inline float8_t max(const float8_t a, const float8_t b)
ccl_device_inline float average(const float8_t a)
ccl_device_inline bool isequal(const float8_t a, const float8_t b)
ccl_device_inline float8_t clamp(const float8_t a, const float8_t mn, const float8_t mx)
ccl_device_inline float8_t operator-=(float8_t a, const float8_t b)
ccl_device_inline float reduce_max(const float8_t a)
ccl_device_inline bool operator==(const float8_t a, const float8_t b)
ccl_device_inline float8_t fabs(const float8_t a)
ccl_device_inline float reduce_min(const float8_t a)
ccl_device_inline float8_t pow(float8_t v, float e)
ccl_device_inline float8_t mix(const float8_t a, const float8_t b, float t)
ccl_device_inline float dot(const float8_t a, const float8_t b)
ccl_device_inline float8_t min(const float8_t a, const float8_t b)
ccl_device_inline float8_t operator/=(float8_t a, float f)
ccl_device_inline float8_t zero_float8_t()
ccl_device_inline float8_t rcp(const float8_t a)
ccl_device_inline float8_t sqrt(const float8_t a)
ccl_device_inline float8_t exp(float8_t v)
CCL_NAMESPACE_BEGIN ccl_device_inline float8_t operator+(const float8_t a, const float8_t b)
ccl_device_inline float8_t operator-(const float8_t a)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
ccl_device_inline float8_t make_float8_t(float f)