/* Copyright (C) 2024 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
. */
#if !defined _IMMINTRIN_H_INCLUDED
#error "Never use directly; include instead."
#endif
#ifndef _AVX10_2_512MEDIAINTRIN_H_INCLUDED
#define _AVX10_2_512MEDIAINTRIN_H_INCLUDED
#if !defined(__AVX10_2_512__)
#pragma GCC push_options
#pragma GCC target("avx10.2-512")
#define __DISABLE_AVX10_2_512__
#endif /* __AVX10_2_512__ */
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpbssd_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbssd512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpbssd_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbssd_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpbssd_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbssd_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpbssds_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbssds512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpbssds_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbssds_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpbssds_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbssds_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpbsud_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbsud512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpbsud_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbsud_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpbsud_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbsud_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpbsuds_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbsuds512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpbsuds_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbsuds_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpbsuds_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbsuds_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpbuud_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbuud512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpbuud_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbuud_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpbuud_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbuud_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpbuuds_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbuuds512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpbuuds_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbuuds_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpbuuds_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpbuuds_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpwsud_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwsud512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpwsud_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwsud_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpwsud_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwsud_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpwsuds_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwsuds512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpwsuds_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwsuds_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpwsuds_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwsuds_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpwusd_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwusd512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpwusd_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwusd_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpwusd_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwusd_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpwusds_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwusds512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpwusds_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwusds_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpwusds_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwusds_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpwuud_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwuud512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpwuud_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwuud_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpwuud_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwuud_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpwuuds_epi32 (__m512i __W, __m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwuuds512 ((__v16si) __W, (__v16si) __A, (__v16si) __B);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpwuuds_epi32 (__m512i __W, __mmask16 __U,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwuuds_v16si_mask ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpwuuds_epi32 (__mmask16 __U, __m512i __W,
__m512i __A, __m512i __B)
{
return (__m512i)
__builtin_ia32_vpdpwuuds_v16si_maskz ((__v16si) __W,
(__v16si) __A,
(__v16si) __B,
(__mmask16) __U);
}
extern __inline __m512
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_dpph_ps (__m512 __W, __m512h __A, __m512h __B)
{
return (__m512)
__builtin_ia32_vdpphps512_mask ((__v16sf) __W,
(__v16sf) __A,
(__v16sf) __B,
(__mmask16) -1);
}
extern __inline __m512
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_dpph_ps (__m512 __W, __mmask16 __U, __m512h __A,
__m512h __B)
{
return (__m512)
__builtin_ia32_vdpphps512_mask ((__v16sf) __W,
(__v16sf) __A,
(__v16sf) __B,
(__mmask16) __U);
}
extern __inline __m512
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_dpph_ps (__mmask16 __U, __m512 __W, __m512h __A,
__m512h __B)
{
return (__m512)
__builtin_ia32_vdpphps512_maskz ((__v16sf) __W,
(__v16sf) __A,
(__v16sf) __B,
(__mmask16) __U);
}
#ifdef __OPTIMIZE__
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mpsadbw_epu8 (__m512i __X, __m512i __Y, const int __M)
{
return (__m512i) __builtin_ia32_mpsadbw512 ((__v64qi) __X,
(__v64qi) __Y,
__M);
}
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_mpsadbw_epu8 (__m512i __W, __mmask32 __U, __m512i __X,
__m512i __Y, const int __M)
{
return (__m512i) __builtin_ia32_mpsadbw512_mask ((__v64qi) __X,
(__v64qi) __Y,
__M,
(__v32hi) __W,
__U);
}
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_mpsadbw_epu8 (__mmask32 __U, __m512i __X,
__m512i __Y, const int __M)
{
return (__m512i) __builtin_ia32_mpsadbw512_mask ((__v64qi) __X,
(__v64qi) __Y,
__M,
(__v32hi) _mm512_setzero_epi32 (),
__U);
}
#else
#define _mm512_mpsadbw_epu8(X, Y, M) \
(__m512i) __builtin_ia32_mpsadbw512 ((__v64qi)(__m512i)(X), \
(__v64qi)(__m512i)(Y), (int)(M))
#define _mm512_mask_mpsadbw_epu8(W, U, X, Y, M) \
(__m512i) __builtin_ia32_mpsadbw512_mask ((__v64qi)(__m512i)(X), \
(__v64qi)(__m512i)(Y), \
(int)(M), \
(__v32hi)(__m512i)(W), \
(__mmask32)(U))
#define _mm512_maskz_mpsadbw_epu8(U, X, Y, M) \
(__m512i) __builtin_ia32_mpsadbw512_mask ((__v64qi)(__m512i)(X), \
(__v64qi)(__m512i)(Y), \
(int)(M), \
(__v32hi) _mm512_setzero_epi32 (), \
(__mmask32)(U))
#endif
#ifdef __DISABLE_AVX10_2_512__
#undef __DISABLE_AVX10_2_512__
#pragma GCC pop_options
#endif /* __DISABLE_AVX10_2_512__ */
#endif /* __AVX10_2_512MEDIAINTRIN_H_INCLUDED */