Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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 __attribute__((__always_inline__, __nodebug__, __target__("avx512ifma"), __min_vector_width__(512)))
  19.  
  20. static __inline__ __m512i __DEFAULT_FN_ATTRS
  21. _mm512_madd52hi_epu64 (__m512i __X, __m512i __Y, __m512i __Z)
  22. {
  23.   return (__m512i)__builtin_ia32_vpmadd52huq512((__v8di) __X, (__v8di) __Y,
  24.                                                 (__v8di) __Z);
  25. }
  26.  
  27. static __inline__ __m512i __DEFAULT_FN_ATTRS
  28. _mm512_mask_madd52hi_epu64 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
  29. {
  30.   return (__m512i)__builtin_ia32_selectq_512(__M,
  31.                                    (__v8di)_mm512_madd52hi_epu64(__W, __X, __Y),
  32.                                    (__v8di)__W);
  33. }
  34.  
  35. static __inline__ __m512i __DEFAULT_FN_ATTRS
  36. _mm512_maskz_madd52hi_epu64 (__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z)
  37. {
  38.   return (__m512i)__builtin_ia32_selectq_512(__M,
  39.                                    (__v8di)_mm512_madd52hi_epu64(__X, __Y, __Z),
  40.                                    (__v8di)_mm512_setzero_si512());
  41. }
  42.  
  43. static __inline__ __m512i __DEFAULT_FN_ATTRS
  44. _mm512_madd52lo_epu64 (__m512i __X, __m512i __Y, __m512i __Z)
  45. {
  46.   return (__m512i)__builtin_ia32_vpmadd52luq512((__v8di) __X, (__v8di) __Y,
  47.                                                 (__v8di) __Z);
  48. }
  49.  
  50. static __inline__ __m512i __DEFAULT_FN_ATTRS
  51. _mm512_mask_madd52lo_epu64 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
  52. {
  53.   return (__m512i)__builtin_ia32_selectq_512(__M,
  54.                                    (__v8di)_mm512_madd52lo_epu64(__W, __X, __Y),
  55.                                    (__v8di)__W);
  56. }
  57.  
  58. static __inline__ __m512i __DEFAULT_FN_ATTRS
  59. _mm512_maskz_madd52lo_epu64 (__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z)
  60. {
  61.   return (__m512i)__builtin_ia32_selectq_512(__M,
  62.                                    (__v8di)_mm512_madd52lo_epu64(__X, __Y, __Z),
  63.                                    (__v8di)_mm512_setzero_si512());
  64. }
  65.  
  66. #undef __DEFAULT_FN_ATTRS
  67.  
  68. #endif
  69.