#ifndef VECTOR_LOGIC
#define VECTOR_LOGIC

#if defined(SHADER_API_GAMECORE)
#define USE_HLSL2021_VECTOR_LOGIC_INTRINSICS
#endif

#if defined(USE_HLSL2021_VECTOR_LOGIC_INTRINSICS)

#define VECTOR_LOGIC_AND(x, y) and(x, y)
#define VECTOR_LOGIC_OR(x, y) or(x, y)
#define VECTOR_LOGIC_SELECT(condition, trueValue, falseValue) select((condition), (trueValue), (falseValue))

#else

#define VECTOR_LOGIC_AND(x, y) ((x) && (y))
#define VECTOR_LOGIC_OR(x, y) ((x) || (y))
#define VECTOR_LOGIC_SELECT(condition, trueValue, falseValue) ((condition) ? (trueValue) : (falseValue))

#endif
#undef USE_HLSL2021_VECTOR_LOGIC_INTRINSICS

#endif