34 lines
924 B
Plaintext
34 lines
924 B
Plaintext
// RUN: %{ispc} --target=avx512skx-x16 --nowrap --x86-asm-syntax=intel --emit-asm -o - %s 2>&1 | FileCheck %s
|
|
|
|
// REQUIRES: X86_ENABLED
|
|
|
|
// CHECK-NOT: vmovapd ymm{{.*}}
|
|
// CHECK: vmovupd ymm{{.*}}
|
|
|
|
typedef double FReal;
|
|
|
|
#define REAL_BITS doublebits
|
|
#define DOUBLE_NAN 0xFFFFFFFFFFFFFFFF
|
|
#define NAN DOUBLE_NAN
|
|
|
|
struct FVector4 {
|
|
double V[4];
|
|
};
|
|
|
|
static inline uniform FVector4 VectorCompareGE1(const uniform FVector4 &A, const uniform FVector4 &B) {
|
|
varying FReal Result;
|
|
|
|
foreach (i = 0 ... 4) {
|
|
Result = A.V[i] >= B.V[i] ? REAL_BITS(NAN) : REAL_BITS(0);
|
|
}
|
|
|
|
return *((uniform FVector4 * uniform) & Result);
|
|
}
|
|
|
|
export void CompareGE1(uniform FVector4 Result[], const uniform FVector4 Src0[], const uniform FVector4 Src1[],
|
|
const uniform int NumCompares) {
|
|
for (uniform int i = 0; i < NumCompares; i++) {
|
|
Result[i] = VectorCompareGE1(Src0[i], Src1[i]);
|
|
}
|
|
}
|