blob: de100b52d16117360417f6a85ed11a3b6260b8fe [file] [log] [blame]
/*
* Test absolute value intrinsics.
* Here we check for _mm512_abs_ps and _mm512_abs_pd intrinsics.
*/
#include "m512_test_util.h"
#include <stdio.h>
V512 f32;
V512 f64;
void NOINLINE init() {
volatile int i;
for (i = 0; i < 16; i++) {
f32.f32[i] = (i & 1) ? i : -i;
}
for (i = 0; i < 8; i++) {
f64.f64[i] = (i & 1) ? -i : i;
}
}
void NOINLINE do_abs_ps() {
V512 res;
V512 expected;
volatile int i;
res.zmm = _mm512_abs_ps(f32.zmm);
for (i = 0; i < 16; i++) {
expected.s32[i] = f32.s32[i] & 0x7fffffff;
}
check_equal_nd(&res, &expected, 16, "_mm512_abs_ps", __LINE__);
}
void NOINLINE do_abs_pd() {
V512 res;
V512 expected;
volatile int i;
res.zmmd = _mm512_abs_pd(f64.zmmd);
for (i = 0; i < 8; i++) {
expected.s64[i] = f64.s64[i] & 0x7fffffffffffffff;
}
check_equal_nd(&res, &expected, 16, "_mm512_abs_pd", __LINE__);
}
int main(int argc, char *argv[]) {
init();
do_abs_ps();
do_abs_pd();
if (n_errs != 0) {
printf("FAILED\n");
return 1;
}
printf("PASSED\n");
return 0;
}