brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.7 KiB · fdb57c7 Raw
315 lines · c
1/*===---- avx10_2_512niintrin.h - AVX10.2-512 new instruction intrinsics ---===2 *3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4 * See https://llvm.org/LICENSE.txt for license information.5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6 *7 *===-----------------------------------------------------------------------===8 */9#ifndef __IMMINTRIN_H10#error                                                                         \11    "Never use <avx10_2_512niintrin.h> directly; include <immintrin.h> instead."12#endif13 14#ifdef __SSE2__15 16#ifndef __AVX10_2_512NIINTRIN_H17#define __AVX10_2_512NIINTRIN_H18 19#define __DEFAULT_FN_ATTRS                                                     \20  __attribute__((__always_inline__, __nodebug__, __target__("avx10.2"),        \21                 __min_vector_width__(512)))22 23/* VNNI FP16 */24static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_dpph_ps(__m512 __W,25                                                           __m512h __A,26                                                           __m512h __B) {27  return (__m512)__builtin_ia32_vdpphps512((__v16sf)__W, (__v32hf)__A,28                                           (__v32hf)__B);29}30 31static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_mask_dpph_ps(__m512 __W,32                                                                __mmask16 __U,33                                                                __m512h __A,34                                                                __m512h __B) {35  return (__m512)__builtin_ia32_selectps_512(36      (__mmask16)__U, (__v16sf)_mm512_dpph_ps(__W, __A, __B), (__v16sf)__W);37}38 39static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_maskz_dpph_ps(__mmask16 __U,40                                                                 __m512 __W,41                                                                 __m512h __A,42                                                                 __m512h __B) {43  return (__m512)__builtin_ia32_selectps_512(44      (__mmask16)__U, (__v16sf)_mm512_dpph_ps(__W, __A, __B),45      (__v16sf)_mm512_setzero_ps());46}47 48/* VMPSADBW */49#define _mm512_mpsadbw_epu8(A, B, imm)                                         \50  ((__m512i)__builtin_ia32_mpsadbw512((__v64qi)(__m512i)(A),                   \51                                      (__v64qi)(__m512i)(B), (int)(imm)))52 53#define _mm512_mask_mpsadbw_epu8(W, U, A, B, imm)                              \54  ((__m512i)__builtin_ia32_selectw_512(                                        \55      (__mmask32)(U), (__v32hi)_mm512_mpsadbw_epu8((A), (B), (imm)),           \56      (__v32hi)(__m512i)(W)))57 58#define _mm512_maskz_mpsadbw_epu8(U, A, B, imm)                                \59  ((__m512i)__builtin_ia32_selectw_512(                                        \60      (__mmask32)(U), (__v32hi)_mm512_mpsadbw_epu8((A), (B), (imm)),           \61      (__v32hi)_mm512_setzero_si512()))62 63/* VNNI INT8 */64static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbssd_epi32(__m512i __W,65                                                                 __m512i __A,66                                                                 __m512i __B) {67  return (__m512i)__builtin_ia32_vpdpbssd512((__v16si)__W, (__v64qi)__A,68                                             (__v64qi)__B);69}70 71static __inline__ __m512i __DEFAULT_FN_ATTRS72_mm512_mask_dpbssd_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {73  return (__m512i)__builtin_ia32_selectd_512(74      __U, (__v16si)_mm512_dpbssd_epi32(__W, __A, __B), (__v16si)__W);75}76 77static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbssd_epi32(78    __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {79  return (__m512i)__builtin_ia32_selectd_512(80      __U, (__v16si)_mm512_dpbssd_epi32(__W, __A, __B),81      (__v16si)_mm512_setzero_si512());82}83 84static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbssds_epi32(__m512i __W,85                                                                  __m512i __A,86                                                                  __m512i __B) {87  return (__m512i)__builtin_ia32_vpdpbssds512((__v16si)__W, (__v64qi)__A,88                                              (__v64qi)__B);89}90 91static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbssds_epi32(92    __m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {93  return (__m512i)__builtin_ia32_selectd_512(94      __U, (__v16si)_mm512_dpbssds_epi32(__W, __A, __B), (__v16si)__W);95}96 97static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbssds_epi32(98    __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {99  return (__m512i)__builtin_ia32_selectd_512(100      __U, (__v16si)_mm512_dpbssds_epi32(__W, __A, __B),101      (__v16si)_mm512_setzero_si512());102}103 104static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbsud_epi32(__m512i __W,105                                                                 __m512i __A,106                                                                 __m512i __B) {107  return (__m512i)__builtin_ia32_vpdpbsud512((__v16si)__W, (__v64qi)__A,108                                             (__v64qu)__B);109}110 111static __inline__ __m512i __DEFAULT_FN_ATTRS112_mm512_mask_dpbsud_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {113  return (__m512i)__builtin_ia32_selectd_512(114      __U, (__v16si)_mm512_dpbsud_epi32(__W, __A, __B), (__v16si)__W);115}116 117static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbsud_epi32(118    __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {119  return (__m512i)__builtin_ia32_selectd_512(120      __U, (__v16si)_mm512_dpbsud_epi32(__W, __A, __B),121      (__v16si)_mm512_setzero_si512());122}123 124static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbsuds_epi32(__m512i __W,125                                                                  __m512i __A,126                                                                  __m512i __B) {127  return (__m512i)__builtin_ia32_vpdpbsuds512((__v16si)__W, (__v64qi)__A,128                                              (__v64qu)__B);129}130 131static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbsuds_epi32(132    __m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {133  return (__m512i)__builtin_ia32_selectd_512(134      __U, (__v16si)_mm512_dpbsuds_epi32(__W, __A, __B), (__v16si)__W);135}136 137static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbsuds_epi32(138    __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {139  return (__m512i)__builtin_ia32_selectd_512(140      __U, (__v16si)_mm512_dpbsuds_epi32(__W, __A, __B),141      (__v16si)_mm512_setzero_si512());142}143 144static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbuud_epi32(__m512i __W,145                                                                 __m512i __A,146                                                                 __m512i __B) {147  return (__m512i)__builtin_ia32_vpdpbuud512((__v16si)__W, (__v64qu)__A,148                                             (__v64qu)__B);149}150 151static __inline__ __m512i __DEFAULT_FN_ATTRS152_mm512_mask_dpbuud_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {153  return (__m512i)__builtin_ia32_selectd_512(154      __U, (__v16si)_mm512_dpbuud_epi32(__W, __A, __B), (__v16si)__W);155}156 157static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbuud_epi32(158    __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {159  return (__m512i)__builtin_ia32_selectd_512(160      __U, (__v16si)_mm512_dpbuud_epi32(__W, __A, __B),161      (__v16si)_mm512_setzero_si512());162}163 164static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbuuds_epi32(__m512i __W,165                                                                  __m512i __A,166                                                                  __m512i __B) {167  return (__m512i)__builtin_ia32_vpdpbuuds512((__v16si)__W, (__v64qu)__A,168                                              (__v64qu)__B);169}170 171static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbuuds_epi32(172    __m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {173  return (__m512i)__builtin_ia32_selectd_512(174      __U, (__v16si)_mm512_dpbuuds_epi32(__W, __A, __B), (__v16si)__W);175}176 177static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbuuds_epi32(178    __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {179  return (__m512i)__builtin_ia32_selectd_512(180      __U, (__v16si)_mm512_dpbuuds_epi32(__W, __A, __B),181      (__v16si)_mm512_setzero_si512());182}183 184/* VNNI INT16 */185static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwsud_epi32(__m512i __A,186                                                                 __m512i __B,187                                                                 __m512i __C) {188  return (__m512i)__builtin_ia32_vpdpwsud512((__v16si)__A, (__v16si)__B,189                                             (__v16si)__C);190}191 192static __inline__ __m512i __DEFAULT_FN_ATTRS193_mm512_mask_dpwsud_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {194  return (__m512i)__builtin_ia32_selectd_512(195      (__mmask16)__U, (__v16si)_mm512_dpwsud_epi32(__A, __B, __C),196      (__v16si)__A);197}198 199static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwsud_epi32(200    __mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {201  return (__m512i)__builtin_ia32_selectd_512(202      (__mmask16)__U, (__v16si)_mm512_dpwsud_epi32(__A, __B, __C),203      (__v16si)_mm512_setzero_si512());204}205 206static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwsuds_epi32(__m512i __A,207                                                                  __m512i __B,208                                                                  __m512i __C) {209  return (__m512i)__builtin_ia32_vpdpwsuds512((__v16si)__A, (__v16si)__B,210                                              (__v16si)__C);211}212 213static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwsuds_epi32(214    __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {215  return (__m512i)__builtin_ia32_selectd_512(216      (__mmask16)__U, (__v16si)_mm512_dpwsuds_epi32(__A, __B, __C),217      (__v16si)__A);218}219 220static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwsuds_epi32(221    __mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {222  return (__m512i)__builtin_ia32_selectd_512(223      (__mmask16)__U, (__v16si)_mm512_dpwsuds_epi32(__A, __B, __C),224      (__v16si)_mm512_setzero_si512());225}226 227static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwusd_epi32(__m512i __A,228                                                                 __m512i __B,229                                                                 __m512i __C) {230  return (__m512i)__builtin_ia32_vpdpwusd512((__v16si)__A, (__v16si)__B,231                                             (__v16si)__C);232}233 234static __inline__ __m512i __DEFAULT_FN_ATTRS235_mm512_mask_dpwusd_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {236  return (__m512i)__builtin_ia32_selectd_512(237      (__mmask16)__U, (__v16si)_mm512_dpwusd_epi32(__A, __B, __C),238      (__v16si)__A);239}240 241static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwusd_epi32(242    __mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {243  return (__m512i)__builtin_ia32_selectd_512(244      (__mmask16)__U, (__v16si)_mm512_dpwusd_epi32(__A, __B, __C),245      (__v16si)_mm512_setzero_si512());246}247 248static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwusds_epi32(__m512i __A,249                                                                  __m512i __B,250                                                                  __m512i __C) {251  return (__m512i)__builtin_ia32_vpdpwusds512((__v16si)__A, (__v16si)__B,252                                              (__v16si)__C);253}254 255static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwusds_epi32(256    __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {257  return (__m512i)__builtin_ia32_selectd_512(258      (__mmask16)__U, (__v16si)_mm512_dpwusds_epi32(__A, __B, __C),259      (__v16si)__A);260}261 262static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwusds_epi32(263    __mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {264  return (__m512i)__builtin_ia32_selectd_512(265      (__mmask16)__U, (__v16si)_mm512_dpwusds_epi32(__A, __B, __C),266      (__v16si)_mm512_setzero_si512());267}268 269static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwuud_epi32(__m512i __A,270                                                                 __m512i __B,271                                                                 __m512i __C) {272  return (__m512i)__builtin_ia32_vpdpwuud512((__v16si)__A, (__v16si)__B,273                                             (__v16si)__C);274}275 276static __inline__ __m512i __DEFAULT_FN_ATTRS277_mm512_mask_dpwuud_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {278  return (__m512i)__builtin_ia32_selectd_512(279      (__mmask16)__U, (__v16si)_mm512_dpwuud_epi32(__A, __B, __C),280      (__v16si)__A);281}282 283static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwuud_epi32(284    __mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {285  return (__m512i)__builtin_ia32_selectd_512(286      (__mmask16)__U, (__v16si)_mm512_dpwuud_epi32(__A, __B, __C),287      (__v16si)_mm512_setzero_si512());288}289 290static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwuuds_epi32(__m512i __A,291                                                                  __m512i __B,292                                                                  __m512i __C) {293  return (__m512i)__builtin_ia32_vpdpwuuds512((__v16si)__A, (__v16si)__B,294                                              (__v16si)__C);295}296 297static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwuuds_epi32(298    __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {299  return (__m512i)__builtin_ia32_selectd_512(300      (__mmask16)__U, (__v16si)_mm512_dpwuuds_epi32(__A, __B, __C),301      (__v16si)__A);302}303 304static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwuuds_epi32(305    __mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {306  return (__m512i)__builtin_ia32_selectd_512(307      (__mmask16)__U, (__v16si)_mm512_dpwuuds_epi32(__A, __B, __C),308      (__v16si)_mm512_setzero_si512());309}310 311#undef __DEFAULT_FN_ATTRS312 313#endif /* __SSE2__ */314#endif /* __AVX10_2_512NIINTRIN_H */315