/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/UnitTests/FoundationTest/SimdMath/SimdVec4bTest.cpp
104 строки
4 KB
Jan Krassnigg
MSVC / Clang fixes (#1997)
21 июл 2026, 15:22
Не верифицирован
21 июл 2026, 15:22
6f3ddbe
Код
Авторство
О чём код?
#include <FoundationTest/FoundationTestPCH.h> #include <Foundation/SimdMath/SimdVec4b.h> EZ_CREATE_SIMPLE_TEST(SimdMath, SimdVec4b) { EZ_TEST_BLOCK(ezTestBlock::Enabled, "Constructor") { #if EZ_DISABLED(EZ_COMPILER_GCC) && EZ_DISABLED(EZ_COMPILE_FOR_DEBUG) // Placement new of the default constructor should not have any effect on the previous data. alignas(16) float testBlock[4] = {1, 2, 3, 4}; ezSimdVec4b* pDefCtor = ::new ((void*)&testBlock[0]) ezSimdVec4b; EZ_TEST_BOOL(testBlock[0] == 1.0f && testBlock[1] == 2.0f && testBlock[2] == 3.0f && testBlock[3] == 4.0f); #endif // Make sure the class didn't accidentally change in size. #if EZ_SIMD_IMPLEMENTATION == EZ_SIMD_IMPLEMENTATION_SSE static_assert(sizeof(ezSimdVec4b) == 16); static_assert(alignof(ezSimdVec4b) == 16); #endif ezSimdVec4b vInit1B(true); EZ_TEST_BOOL(vInit1B.x() == true && vInit1B.y() == true && vInit1B.z() == true && vInit1B.w() == true); // Make sure all components have the correct value #if EZ_SIMD_IMPLEMENTATION == EZ_SIMD_IMPLEMENTATION_SSE && EZ_ENABLED(EZ_COMPILER_MSVC_PURE) EZ_TEST_BOOL(vInit1B.m_v.m128_u32[0] == 0xFFFFFFFF && vInit1B.m_v.m128_u32[1] == 0xFFFFFFFF && vInit1B.m_v.m128_u32[2] == 0xFFFFFFFF && vInit1B.m_v.m128_u32[3] == 0xFFFFFFFF); #endif ezSimdVec4b vInit4B(false, true, false, true); EZ_TEST_BOOL(vInit4B.x() == false && vInit4B.y() == true && vInit4B.z() == false && vInit4B.w() == true); // Make sure all components have the correct value #if EZ_SIMD_IMPLEMENTATION == EZ_SIMD_IMPLEMENTATION_SSE && EZ_ENABLED(EZ_COMPILER_MSVC_PURE) EZ_TEST_BOOL( vInit4B.m_v.m128_u32[0] == 0 && vInit4B.m_v.m128_u32[1] == 0xFFFFFFFF && vInit4B.m_v.m128_u32[2] == 0 && vInit4B.m_v.m128_u32[3] == 0xFFFFFFFF); #endif ezSimdVec4b vCopy(vInit4B); EZ_TEST_BOOL(vCopy.x() == false && vCopy.y() == true && vCopy.z() == false && vCopy.w() == true); EZ_TEST_BOOL( vCopy.GetComponent<0>() == false && vCopy.GetComponent<1>() == true && vCopy.GetComponent<2>() == false && vCopy.GetComponent<3>() == true); } EZ_TEST_BLOCK(ezTestBlock::Enabled, "Swizzle") { ezSimdVec4b a(true, false, true, false); ezSimdVec4b b = a.Get<ezSwizzle::XXXX>(); EZ_TEST_BOOL(b.x() && b.y() && b.z() && b.w()); b = a.Get<ezSwizzle::YYYX>(); EZ_TEST_BOOL(!b.x() && !b.y() && !b.z() && b.w()); b = a.Get<ezSwizzle::ZZZX>(); EZ_TEST_BOOL(b.x() && b.y() && b.z() && b.w()); b = a.Get<ezSwizzle::WWWX>(); EZ_TEST_BOOL(!b.x() && !b.y() && !b.z() && b.w()); } EZ_TEST_BLOCK(ezTestBlock::Enabled, "Operators") { ezSimdVec4b a(true, false, true, false); ezSimdVec4b b(false, true, true, false); ezSimdVec4b c = a && b; EZ_TEST_BOOL(!c.x() && !c.y() && c.z() && !c.w()); c = a || b; EZ_TEST_BOOL(c.x() && c.y() && c.z() && !c.w()); c = !a; EZ_TEST_BOOL(!c.x() && c.y() && !c.z() && c.w()); EZ_TEST_BOOL(c.AnySet<2>()); EZ_TEST_BOOL(!c.AllSet<4>()); EZ_TEST_BOOL(!c.NoneSet<4>()); c = c || a; EZ_TEST_BOOL(c.AnySet<4>()); EZ_TEST_BOOL(c.AllSet<4>()); EZ_TEST_BOOL(!c.NoneSet<4>()); c = !c; EZ_TEST_BOOL(!c.AnySet<4>()); EZ_TEST_BOOL(!c.AllSet<4>()); EZ_TEST_BOOL(c.NoneSet<4>()); c = a == b; EZ_TEST_BOOL(!c.x() && !c.y() && c.z() && c.w()); c = a != b; EZ_TEST_BOOL(c.x() && c.y() && !c.z() && !c.w()); EZ_TEST_BOOL(a.AllSet<1>()); EZ_TEST_BOOL(b.NoneSet<1>()); ezSimdVec4b cmp(false, true, false, true); c = ezSimdVec4b::Select(cmp, a, b); EZ_TEST_BOOL(!c.x() && !c.y() && c.z() && !c.w()); } }