3PL_ALWAYS_INLINE plSimdVec4b::plSimdVec4b() {}
5PL_ALWAYS_INLINE plSimdVec4b::plSimdVec4b(
bool b)
7 m_v.x = b ? 0xFFFFFFFF : 0;
8 m_v.y = b ? 0xFFFFFFFF : 0;
9 m_v.z = b ? 0xFFFFFFFF : 0;
10 m_v.w = b ? 0xFFFFFFFF : 0;
13PL_ALWAYS_INLINE plSimdVec4b::plSimdVec4b(
bool x,
bool y,
bool z,
bool w)
15 m_v.x = x ? 0xFFFFFFFF : 0;
16 m_v.y = y ? 0xFFFFFFFF : 0;
17 m_v.z = z ? 0xFFFFFFFF : 0;
18 m_v.w = w ? 0xFFFFFFFF : 0;
27PL_ALWAYS_INLINE
bool plSimdVec4b::GetComponent()
const
29 return (&m_v.x)[N] != 0;
32PL_ALWAYS_INLINE
bool plSimdVec4b::x()
const
37PL_ALWAYS_INLINE
bool plSimdVec4b::y()
const
42PL_ALWAYS_INLINE
bool plSimdVec4b::z()
const
47PL_ALWAYS_INLINE
bool plSimdVec4b::w()
const
52template <plSwizzle::Enum s>
53PL_ALWAYS_INLINE
plSimdVec4b plSimdVec4b::Get()
const
57 const plUInt32* v = &m_v.x;
58 result.m_v.x = v[(s & 0x3000) >> 12];
59 result.m_v.y = v[(s & 0x0300) >> 8];
60 result.m_v.z = v[(s & 0x0030) >> 4];
61 result.m_v.w = v[(s & 0x0003)];
69 result.m_v.x = m_v.x & rhs.m_v.x;
70 result.m_v.y = m_v.y & rhs.m_v.y;
71 result.m_v.z = m_v.z & rhs.m_v.z;
72 result.m_v.w = m_v.w & rhs.m_v.w;
80 result.m_v.x = m_v.x | rhs.m_v.x;
81 result.m_v.y = m_v.y | rhs.m_v.y;
82 result.m_v.z = m_v.z | rhs.m_v.z;
83 result.m_v.w = m_v.w | rhs.m_v.w;
88PL_ALWAYS_INLINE
plSimdVec4b plSimdVec4b::operator!()
const
91 result.m_v.x = m_v.x ^ 0xFFFFFFFF;
92 result.m_v.y = m_v.y ^ 0xFFFFFFFF;
93 result.m_v.z = m_v.z ^ 0xFFFFFFFF;
94 result.m_v.w = m_v.w ^ 0xFFFFFFFF;
101 return !(*
this != rhs);
107 result.m_v.x = m_v.x ^ rhs.m_v.x;
108 result.m_v.y = m_v.y ^ rhs.m_v.y;
109 result.m_v.z = m_v.z ^ rhs.m_v.z;
110 result.m_v.w = m_v.w ^ rhs.m_v.w;
116PL_ALWAYS_INLINE
bool plSimdVec4b::AllSet()
const
118 for (
int i = 0; i < N; ++i)
128PL_ALWAYS_INLINE
bool plSimdVec4b::AnySet()
const
130 for (
int i = 0; i < N; ++i)
140PL_ALWAYS_INLINE
bool plSimdVec4b::NoneSet()
const
149 result.m_v.x = (cmp.m_v.x != 0) ? ifTrue.m_v.x : ifFalse.m_v.x;
150 result.m_v.y = (cmp.m_v.y != 0) ? ifTrue.m_v.y : ifFalse.m_v.y;
151 result.m_v.z = (cmp.m_v.z != 0) ? ifTrue.m_v.z : ifFalse.m_v.z;
152 result.m_v.w = (cmp.m_v.w != 0) ? ifTrue.m_v.w : ifFalse.m_v.w;
A 4-component vector class.
Definition Vec4.h:9