Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /*===------------- avx512ifmaintrin.h - IFMA intrinsics ------------------=== |
---|---|
2 | * |
3 | * |
4 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
5 | * See https://llvm.org/LICENSE.txt for license information. |
6 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
7 | * |
8 | *===-----------------------------------------------------------------------=== |
9 | */ |
10 | #ifndef __IMMINTRIN_H |
11 | #error "Never use <avx512ifmaintrin.h> directly; include <immintrin.h> instead." |
12 | #endif |
13 | |
14 | #ifndef __IFMAINTRIN_H |
15 | #define __IFMAINTRIN_H |
16 | |
17 | /* Define the default attributes for the functions in this file. */ |
18 | #define __DEFAULT_FN_ATTRS \ |
19 | __attribute__((__always_inline__, __nodebug__, \ |
20 | __target__("avx512ifma,evex512"), __min_vector_width__(512))) |
21 | |
22 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
23 | _mm512_madd52hi_epu64 (__m512i __X, __m512i __Y, __m512i __Z) |
24 | { |
25 | return (__m512i)__builtin_ia32_vpmadd52huq512((__v8di) __X, (__v8di) __Y, |
26 | (__v8di) __Z); |
27 | } |
28 | |
29 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
30 | _mm512_mask_madd52hi_epu64 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) |
31 | { |
32 | return (__m512i)__builtin_ia32_selectq_512(__M, |
33 | (__v8di)_mm512_madd52hi_epu64(__W, __X, __Y), |
34 | (__v8di)__W); |
35 | } |
36 | |
37 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
38 | _mm512_maskz_madd52hi_epu64 (__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z) |
39 | { |
40 | return (__m512i)__builtin_ia32_selectq_512(__M, |
41 | (__v8di)_mm512_madd52hi_epu64(__X, __Y, __Z), |
42 | (__v8di)_mm512_setzero_si512()); |
43 | } |
44 | |
45 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
46 | _mm512_madd52lo_epu64 (__m512i __X, __m512i __Y, __m512i __Z) |
47 | { |
48 | return (__m512i)__builtin_ia32_vpmadd52luq512((__v8di) __X, (__v8di) __Y, |
49 | (__v8di) __Z); |
50 | } |
51 | |
52 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
53 | _mm512_mask_madd52lo_epu64 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) |
54 | { |
55 | return (__m512i)__builtin_ia32_selectq_512(__M, |
56 | (__v8di)_mm512_madd52lo_epu64(__W, __X, __Y), |
57 | (__v8di)__W); |
58 | } |
59 | |
60 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
61 | _mm512_maskz_madd52lo_epu64 (__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z) |
62 | { |
63 | return (__m512i)__builtin_ia32_selectq_512(__M, |
64 | (__v8di)_mm512_madd52lo_epu64(__X, __Y, __Z), |
65 | (__v8di)_mm512_setzero_si512()); |
66 | } |
67 | |
68 | #undef __DEFAULT_FN_ATTRS |
69 | |
70 | #endif |
71 |
Warning: This file is not a C or C++ file. It does not have highlighting.