7BVec16::BVec16(
uint8 inB0,
uint8 inB1,
uint8 inB2,
uint8 inB3,
uint8 inB4,
uint8 inB5,
uint8 inB6,
uint8 inB7,
uint8 inB8,
uint8 inB9,
uint8 inB10,
uint8 inB11,
uint8 inB12,
uint8 inB13,
uint8 inB14,
uint8 inB15)
9#if defined(JPH_USE_SSE)
10 mValue = _mm_set_epi8(
char(inB15),
char(inB14),
char(inB13),
char(inB12),
char(inB11),
char(inB10),
char(inB9),
char(inB8),
char(inB7),
char(inB6),
char(inB5),
char(inB4),
char(inB3),
char(inB2),
char(inB1),
char(inB0));
11#elif defined(JPH_USE_NEON)
14 mValue = vcombine_u8(v1, v2);
48#if defined(JPH_USE_SSE)
49 return _mm_setzero_si128();
50#elif defined(JPH_USE_NEON)
59#if defined(JPH_USE_SSE)
60 return _mm_set1_epi8(
char(inV));
61#elif defined(JPH_USE_NEON)
62 return vdupq_n_u8(inV);
74#if defined(JPH_USE_SSE)
75 return _mm_loadu_si128(
reinterpret_cast<const __m128i *
>(inV));
76#elif defined(JPH_USE_NEON)
79 return BVec16(inV[0], inV[1], inV[2], inV[3], inV[4], inV[5], inV[6], inV[7], inV[8], inV[9], inV[10], inV[11], inV[12], inV[13], inV[14], inV[15]);
85#if defined(JPH_USE_SSE)
87#elif defined(JPH_USE_NEON)
95 r &= 0x8080808080808080UL;
104#if defined(JPH_USE_SSE)
106#elif defined(JPH_USE_NEON)
115#if defined(JPH_USE_SSE)
117#elif defined(JPH_USE_NEON)
126#if defined(JPH_USE_SSE)
128#elif defined(JPH_USE_NEON)
138#if defined(JPH_USE_SSE)
140#elif defined(JPH_USE_NEON)
141 return vmvnq_u8(inV1.
mValue);
149#if defined(JPH_USE_SSE)
150 return _mm_movemask_epi8(
mValue);
153 for (
int i = 0; i < 16; ++i)
154 result |=
int(
mU8[i] >> 7) << i;
161#if defined(JPH_USE_SSE)
162 return _mm_movemask_epi8(
mValue) != 0;
164 return ((
mU64[0] |
mU64[1]) & 0x8080808080808080UL) != 0;
170#if defined(JPH_USE_SSE)
171 return _mm_movemask_epi8(
mValue) == 0b1111111111111111;
173 return ((
mU64[0] &
mU64[1]) & 0x8080808080808080UL) == 0x8080808080808080UL;
std::uint8_t uint8
Definition Core.h:454
std::uint64_t uint64
Definition Core.h:457
#define JPH_NAMESPACE_END
Definition Core.h:379
#define JPH_NAMESPACE_BEGIN
Definition Core.h:373
A vector consisting of 16 bytes.
Definition BVec16.h:11
static JPH_INLINE BVec16 sZero()
Vector with all zeros.
Definition BVec16.inl:46
static JPH_INLINE BVec16 sEquals(BVec16Arg inV1, BVec16Arg inV2)
Equals (component wise), highest bit of each component that is set is considered true.
Definition BVec16.inl:83
uint8 mU8[16]
Definition BVec16.h:90
BVec16()=default
Constructor.
uint64 mU64[2]
Definition BVec16.h:91
JPH_INLINE int GetTrues() const
Store if mU8[0] is true in bit 0, mU8[1] in bit 1, etc. (true is when highest bit of component is set...
Definition BVec16.inl:147
static JPH_INLINE BVec16 sNot(BVec16Arg inV1)
Logical not (component wise)
Definition BVec16.inl:136
static JPH_INLINE BVec16 sXor(BVec16Arg inV1, BVec16Arg inV2)
Logical xor (component wise)
Definition BVec16.inl:113
JPH_INLINE bool operator==(BVec16Arg inV2) const
Comparison.
Definition BVec16.inl:41
static JPH_INLINE BVec16 sReplicate(uint8 inV)
Replicate int inV across all components.
Definition BVec16.inl:57
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition BVec16.inl:168
static JPH_INLINE BVec16 sOr(BVec16Arg inV1, BVec16Arg inV2)
Logical or (component wise)
Definition BVec16.inl:102
JPH_INLINE bool TestAnyTrue() const
Test if any of the components are true (true is when highest bit of component is set)
Definition BVec16.inl:159
Type mValue
Definition BVec16.h:89
static JPH_INLINE BVec16 sAnd(BVec16Arg inV1, BVec16Arg inV2)
Logical and (component wise)
Definition BVec16.inl:124
static JPH_INLINE BVec16 sLoadByte16(const uint8 *inV)
Load 16 bytes from memory.
Definition BVec16.inl:72