Viewing file: avx512fp16-vector-bitwise-1a.c (2.1 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-options "-Ofast -mavx512vl -mavx512fp16 -mprefer-vector-width=512" } */
#include<immintrin.h> __m128h f1 (__m128h x) { int i = 0; __m128h y; for (; i != 8; i++) y[i] = __builtin_fabsf16 (x[i]); return y; }
__m256h f2 (__m256h x) { int i = 0; __m256h y; for (; i != 16; i++) y[i] = __builtin_fabsf16 (x[i]); return y; }
__m512h f3 (__m512h x) { int i = 0; __m512h y; for (; i != 32; i++) y[i] = __builtin_fabsf16 (x[i]); return y; }
__m128h f4 (__m128h x) { return -x; }
__m256h f5 (__m256h x) { return -x; }
__m512h f6 (__m512h x) { return -x; }
__m128h f7 (__m128h x, __m128h y) { int i = 0; __m128h z; for (; i != 8; i++) z[i] = __builtin_copysignf16 (x[i], y[i]); return z; }
__m256h f8 (__m256h x, __m256h y) { int i = 0; __m256h z; for (; i != 16; i++) z[i] = __builtin_copysignf16 (x[i], y[i]); return z; }
__m512h f9 (__m512h x, __m512h y) { int i = 0; __m512h z; for (; i != 32; i++) z[i] = __builtin_copysignf16 (x[i], y[i]); return z; }
__m128h f10 (__m128h x, __m128h y) { int i = 0; __m128h z; for (; i != 8; i++) z[i] = x[i] * __builtin_copysignf16 (1, y[i]); return z; }
__m256h f11 (__m256h x, __m256h y) { int i = 0; __m256h z; for (; i != 16; i++) z[i] = x[i] * __builtin_copysignf16 (1, y[i]); return z; }
__m512h f12 (__m512h x, __m512h y) { int i = 0; __m512h z; for (; i != 32; i++) z[i] = x[i] * __builtin_copysignf16 (1, y[i]); return z; }
/* { dg-final { scan-assembler "vandps\[^\n\r\]*xmm0" } } */ /* { dg-final { scan-assembler "vandps\[^\n\r\]*ymm0" } } */ /* { dg-final { scan-assembler "vpandd\[^\n\r\]*zmm0" } } */ /* { dg-final { scan-assembler-times "vxorps\[^\n\r\]*xmm0" 1 } } */ /* { dg-final { scan-assembler-times "vxorps\[^\n\r\]*ymm0" 1 } } */ /* { dg-final { scan-assembler-times "vpxord\[^\n\r\]*zmm0" 1 } } */ /* { dg-final { scan-assembler-times "vpternlogd\[^\n\r\]*xmm\[0-9\]" 2 } } */ /* { dg-final { scan-assembler-times "vpternlogd\[^\n\r\]*ymm\[0-9\]" 2 } } */ /* { dg-final { scan-assembler-times "vpternlogd\[^\n\r\]*zmm\[0-9\]" 2 } } */
|