18 static const int SimdAlignment = 16;
73 template<
int TNumLanes>
76 alignas(SimdAlignment)
float V[TNumLanes];
80 reinterpret_cast<uint32*
>(
V)[LaneIndex] =
B ? 0xFFFFFFFF : 0;
86 return (
reinterpret_cast<const uint32*
>(
V)[LaneIndex] != 0);
97 template<
typename T,
int TNumLanes>
115 for (
int32 LaneIndex = 0; LaneIndex < TNumLanes; ++LaneIndex)
125 template<
int TNumLanes>
128 alignas(SimdAlignment)
int32 V[TNumLanes];
152 for (
int32 LaneIndex = 1; LaneIndex < TNumLanes; ++LaneIndex)
154 MaxValue = FMath::Max(MaxValue,
V[LaneIndex]);
166 template<
int TNumLanes>
169 alignas(SimdAlignment)
float V[TNumLanes];
202 template<
int TNumLanes>
205 static_assert(TNumLanes == 4,
"Other sizes not yet supported");
207 alignas(SimdAlignment)
float VX[TNumLanes];
208 alignas(SimdAlignment)
float VY[TNumLanes];
209 alignas(SimdAlignment)
float VZ[TNumLanes];
229 return FVec3f(
VX[LaneIndex],
VY[LaneIndex],
VZ[LaneIndex]);
240 for (
int32 LaneIndex = 0; LaneIndex < TNumLanes; ++LaneIndex)
Definition SkeletalMeshComponent.h:307
TVector< FRealSingle, 3 > FVec3f
Definition Core.h:27
Definition OverriddenPropertySet.cpp:45
Definition SimdTypes.h:127
FORCEINLINE void SetValues(const int32 I)
Definition SimdTypes.h:144
int32 V[TNumLanes]
Definition SimdTypes.h:128
FORCEINLINE int32 GetValue(const int32 LaneIndex) const
Definition SimdTypes.h:139
static TSimdInt32< TNumLanes > Make(const int32 I)
FORCEINLINE TSimdInt32()
Definition SimdTypes.h:130
static TSimdInt32< TNumLanes > Zero()
FORCEINLINE int32 GetMaxValue() const
Definition SimdTypes.h:149
FORCEINLINE void SetValue(const int32 LaneIndex, const int32 I)
Definition SimdTypes.h:134
Definition SimdTypes.h:168
FORCEINLINE float GetValue(const int32 LaneIndex) const
Definition SimdTypes.h:180
static TSimdRealf Make(const float F)
FORCEINLINE void SetValue(const int32 LaneIndex, const float F)
Definition SimdTypes.h:175
float V[TNumLanes]
Definition SimdTypes.h:169
FORCEINLINE void SetValues(const float F)
Definition SimdTypes.h:185
FORCEINLINE TSimdRealf()
Definition SimdTypes.h:171
Definition SimdTypes.h:75
static TSimdSelector< TNumLanes > True()
static TSimdSelector< TNumLanes > False()
FORCEINLINE void SetValue(const int LaneIndex, bool B)
Definition SimdTypes.h:78
float V[TNumLanes]
Definition SimdTypes.h:76
FORCEINLINE bool GetValue(const int LaneIndex) const
Definition SimdTypes.h:83
Definition SimdTypes.h:99
FORCEINLINE void SetValue(const int32 LaneIndex, const ValueType F)
Definition SimdTypes.h:103
T ValueType
Definition SimdTypes.h:100
FORCEINLINE ValueType GetValue(const int32 LaneIndex) const
Definition SimdTypes.h:108
FORCEINLINE void SetValues(const ValueType F)
Definition SimdTypes.h:113
ValueType V[TNumLanes]
Definition SimdTypes.h:101
Definition SimdTypes.h:204
float VZ[TNumLanes]
Definition SimdTypes.h:209
FORCEINLINE TSimdVec3f(const FVec3f &V)
Definition SimdTypes.h:215
FORCEINLINE void SetValues(const FVec3f &V)
Definition SimdTypes.h:232
float VX[TNumLanes]
Definition SimdTypes.h:207
float VY[TNumLanes]
Definition SimdTypes.h:208
FORCEINLINE void SetValue(const int32 LaneIndex, const FVec3f &V)
Definition SimdTypes.h:220
static FORCEINLINE TSimdVec3f Make(const FVec3f &V0, const FVec3f &V1, const FVec3f &V2, const FVec3f &V3)
Definition SimdTypes.h:247
FORCEINLINE TSimdVec3f()
Definition SimdTypes.h:211
FORCEINLINE FVec3f GetValue(const int32 LaneIndex) const
Definition SimdTypes.h:227
static FORCEINLINE TSimdVec3f Make(const FVec3f &V)
Definition SimdTypes.h:237
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62