Plasma Engine  2.0
Loading...
Searching...
No Matches
SimdVec4b.h
1#pragma once
2
3#include <Foundation/SimdMath/SimdSwizzle.h>
4#include <Foundation/SimdMath/SimdTypes.h>
5
6class PL_FOUNDATION_DLL plSimdVec4b
7{
8public:
9 PL_DECLARE_POD_TYPE();
10
11 plSimdVec4b(); // [tested]
12 plSimdVec4b(bool b); // [tested]
13 plSimdVec4b(bool x, bool y, bool z, bool w); // [tested]
14 plSimdVec4b(plInternal::QuadBool b); // [tested]
15
16public:
17 template <int N>
18 bool GetComponent() const; // [tested]
19
20 bool x() const; // [tested]
21 bool y() const; // [tested]
22 bool z() const; // [tested]
23 bool w() const; // [tested]
24
25 template <plSwizzle::Enum s>
26 plSimdVec4b Get() const; // [tested]
27
28public:
29 plSimdVec4b operator&&(const plSimdVec4b& rhs) const; // [tested]
30 plSimdVec4b operator||(const plSimdVec4b& rhs) const; // [tested]
31 plSimdVec4b operator!() const; // [tested]
32
33 plSimdVec4b operator==(const plSimdVec4b& rhs) const; // [tested]
34 plSimdVec4b operator!=(const plSimdVec4b& rhs) const; // [tested]
35
36 template <int N = 4>
37 bool AllSet() const; // [tested]
38
39 template <int N = 4>
40 bool AnySet() const; // [tested]
41
42 template <int N = 4>
43 bool NoneSet() const; // [tested]
44
45 static plSimdVec4b Select(const plSimdVec4b& vCmp, const plSimdVec4b& vTrue, const plSimdVec4b& vFalse); // [tested]
46
47public:
49};
50
51#if PL_SIMD_IMPLEMENTATION == PL_SIMD_IMPLEMENTATION_SSE
52# include <Foundation/SimdMath/Implementation/SSE/SSEVec4b_inl.h>
53#elif PL_SIMD_IMPLEMENTATION == PL_SIMD_IMPLEMENTATION_FPU
54# include <Foundation/SimdMath/Implementation/FPU/FPUVec4b_inl.h>
55#elif PL_SIMD_IMPLEMENTATION == PL_SIMD_IMPLEMENTATION_NEON
56# include <Foundation/SimdMath/Implementation/NEON/NEONVec4b_inl.h>
57#else
58# error "Unknown SIMD implementation."
59#endif
Definition SimdVec4b.h:7
A 4-component vector class.
Definition Vec4.h:9