Files
UnrealEngine/Engine/Source/ThirdParty/Intel/ISPC/ispc-1.24.0/tests/short-vec-int-logical.ispc
2025-05-18 13:04:45 +08:00

51 lines
2.2 KiB
Plaintext

#include "../test_static.isph"
typedef int<3> int3;
// a[] = { 1, 2, 3, ... };
task void f_f(uniform float RET[], uniform float a[]) {
RET[programIndex] = 0;
int int_var = a[programIndex];
int3 int_vec1 = {int_var - 1, int_var - 2, int_var - 3};
int3 int_vec2 = {int_var - 2, int_var - 2, int_var - 3};
int3 int_vec = int_vec1 || int_vec2;
// Check result of Logical OR when both operands are short vectors.
if ((int_vec.x != ((int_var - 1) || (int_var - 2))) || (int_vec.y != ((int_var - 2) || (int_var - 2))) ||
(int_vec.z != ((int_var - 3) || (int_var - 3))))
RET[programIndex] = -1;
int_vec = (int_var - 1) || int_vec1;
// Check result of Logical OR when 2nd operand is a short vector.
if ((int_vec.x != ((int_var - 1) || (int_var - 1))) || (int_vec.y != ((int_var - 2) || (int_var - 1))) ||
(int_vec.z != ((int_var - 3) || (int_var - 1))))
RET[programIndex] = -2;
int_vec = int_vec1 || (int_var - 1);
// Check result of Logical OR when 1st operand is a short vector.
if ((int_vec.x != ((int_var - 1) || (int_var - 1))) || (int_vec.y != ((int_var - 2) || (int_var - 1))) ||
(int_vec.z != ((int_var - 3) || (int_var - 1))))
RET[programIndex] = -3;
int_vec = int_vec1 && int_vec2;
// Check result of Logical AND when both operands are short vectors.
if ((int_vec.x != ((int_var - 1) && (int_var - 2))) || (int_vec.y != ((int_var - 2) && (int_var - 2))) ||
(int_vec.z != ((int_var - 3) && (int_var - 3))))
RET[programIndex] = -4;
int_vec = (int_var - 1) && int_vec1;
// Check result of Logical AND when 2nd operand is a short vector.
if ((int_vec.x != ((int_var - 1) && (int_var - 1))) || (int_vec.y != ((int_var - 2) && (int_var - 1))) ||
(int_vec.z != ((int_var - 3) && (int_var - 1))))
RET[programIndex] = -5;
int_vec = int_vec1 && (int_var - 1);
// Check result of Logical AND when 1st operand is a short vector.
if ((int_vec.x != ((int_var - 1) && (int_var - 1))) || (int_vec.y != ((int_var - 2) && (int_var - 1))) ||
(int_vec.z != ((int_var - 3) && (int_var - 1))))
RET[programIndex] = -6;
}
task void result(uniform float ret[]) { ret[programIndex] = 0; }