clang 19.0.0git
Macros | Functions
avxvnniint8intrin.h File Reference

Go to the source code of this file.

Macros

#define __DEFAULT_FN_ATTRS256
 
#define __DEFAULT_FN_ATTRS128
 

Functions

static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssd_epi32 (__m128i __W, __m128i __A, __m128i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbssd_epi32 (__m256i __W, __m256i __A, __m256i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssds_epi32 (__m128i __W, __m128i __A, __m128i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbssds_epi32 (__m256i __W, __m256i __A, __m256i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsud_epi32 (__m128i __W, __m128i __A, __m128i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbsud_epi32 (__m256i __W, __m256i __A, __m256i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsuds_epi32 (__m128i __W, __m128i __A, __m128i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbsuds_epi32 (__m256i __W, __m256i __A, __m256i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuud_epi32 (__m128i __W, __m128i __A, __m128i __B)
 Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbuud_epi32 (__m256i __W, __m256i __A, __m256i __B)
 Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuuds_epi32 (__m128i __W, __m128i __A, __m128i __B)
 Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbuuds_epi32 (__m256i __W, __m256i __A, __m256i __B)
 Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.
 

Macro Definition Documentation

◆ __DEFAULT_FN_ATTRS128

#define __DEFAULT_FN_ATTRS128
Value:
__attribute__((__always_inline__, __nodebug__, __target__("avxvnniint8"), \
__min_vector_width__(128)))
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.

Definition at line 21 of file avxvnniint8intrin.h.

◆ __DEFAULT_FN_ATTRS256

#define __DEFAULT_FN_ATTRS256
Value:
__attribute__((__always_inline__, __nodebug__, __target__("avxvnniint8"), \
__min_vector_width__(256)))

Definition at line 18 of file avxvnniint8intrin.h.

Function Documentation

◆ _mm256_dpbssd_epi32()

static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbssd_epi32 ( __m256i  __W,
__m256i  __A,
__m256i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W, and store the packed 32-bit results in dst.

_mm256_dpbssd_epi32(__m256i __W, __m256i __A, __m256i __B);
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbssd_epi32(__m256i __W, __m256i __A, __m256i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit i...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 256-bit vector of [32 x char].
__BA 256-bit vector of [32 x char].
Returns
A 256-bit vector of [8 x int].
FOR j := 0 to 7
tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
ENDFOR
dst[MAX:256] := 0

Definition at line 93 of file avxvnniint8intrin.h.

◆ _mm256_dpbssds_epi32()

static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbssds_epi32 ( __m256i  __W,
__m256i  __A,
__m256i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W with signed saturation, and store the packed 32-bit results in dst.

_mm256_dpbssds_epi32(__m256i __W, __m256i __A, __m256i __B);
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbssds_epi32(__m256i __W, __m256i __A, __m256i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit i...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 256-bit vector of [32 x char].
__BA 256-bit vector of [32 x char].
Returns
A 256-bit vector of [8 x int].
FOR j := 0 to 7
tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
ENDFOR
dst[MAX:256] := 0

Definition at line 168 of file avxvnniint8intrin.h.

◆ _mm256_dpbsud_epi32()

static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbsud_epi32 ( __m256i  __W,
__m256i  __A,
__m256i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W, and store the packed 32-bit results in dst.

_mm256_dpbsud_epi32(__m256i __W, __m256i __A, __m256i __B);
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbsud_epi32(__m256i __W, __m256i __A, __m256i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 256-bit vector of [32 x char].
__BA 256-bit vector of [32 x unsigned char].
Returns
A 256-bit vector of [8 x int].
FOR j := 0 to 7
tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
ENDFOR
dst[MAX:256] := 0

Definition at line 241 of file avxvnniint8intrin.h.

◆ _mm256_dpbsuds_epi32()

static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbsuds_epi32 ( __m256i  __W,
__m256i  __A,
__m256i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W with signed saturation, and store the packed 32-bit results in dst.

_mm256_dpbsuds_epi32(__m256i __W, __m256i __A, __m256i __B);
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbsuds_epi32(__m256i __W, __m256i __A, __m256i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 256-bit vector of [32 x char].
__BA 256-bit vector of [32 x unsigned char].
Returns
A 256-bit vector of [8 x int].
FOR j := 0 to 7
tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
ENDFOR
dst[MAX:256] := 0

Definition at line 316 of file avxvnniint8intrin.h.

◆ _mm256_dpbuud_epi32()

static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbuud_epi32 ( __m256i  __W,
__m256i  __A,
__m256i  __B 
)
static

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W, and store the packed 32-bit results in dst.

_mm256_dpbuud_epi32(__m256i __W, __m256i __A, __m256i __B);
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbuud_epi32(__m256i __W, __m256i __A, __m256i __B)
Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-b...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 256-bit vector of [32 x unsigned char].
__BA 256-bit vector of [32 x unsigned char].
Returns
A 256-bit vector of [8 x int].
FOR j := 0 to 7
tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
ENDFOR
dst[MAX:256] := 0

Definition at line 389 of file avxvnniint8intrin.h.

◆ _mm256_dpbuuds_epi32()

static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbuuds_epi32 ( __m256i  __W,
__m256i  __A,
__m256i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W with signed saturation, and store the packed 32-bit results in dst.

_mm256_dpbuuds_epi32(__m256i __W, __m256i __A, __m256i __B);
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_dpbuuds_epi32(__m256i __W, __m256i __A, __m256i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit...

This intrinsic corresponds to the VPDPBUUDS instruction.

Parameters
__AA 256-bit vector of [32 x unsigned char].
__BA 256-bit vector of [32 x unsigned char].
Returns
A 256-bit vector of [8 x int].
FOR j := 0 to 7
tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
ENDFOR
dst[MAX:256] := 0

Definition at line 464 of file avxvnniint8intrin.h.

◆ _mm_dpbssd_epi32()

static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssd_epi32 ( __m128i  __W,
__m128i  __A,
__m128i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W, and store the packed 32-bit results in dst.

_mm_dpbssd_epi32(__m128i __W, __m128i __A, __m128i __B);
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssd_epi32(__m128i __W, __m128i __A, __m128i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit i...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 128-bit vector of [16 x char].
__BA 128-bit vector of [16 x char].
Returns
A 128-bit vector of [4 x int].
FOR j := 0 to 3
tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
ENDFOR
dst[MAX:128] := 0

Definition at line 55 of file avxvnniint8intrin.h.

◆ _mm_dpbssds_epi32()

static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssds_epi32 ( __m128i  __W,
__m128i  __A,
__m128i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W with signed saturation, and store the packed 32-bit results in dst.

_mm_dpbssds_epi32( __m128i __W, __m128i __A, __m128i __B);
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssds_epi32(__m128i __W, __m128i __A, __m128i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding signed 8-bit i...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 128-bit vector of [16 x char].
__BA 128-bit vector of [16 x char].
Returns
A 128-bit vector of [4 x int].
FOR j := 0 to 3
tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
ENDFOR
dst[MAX:128] := 0

Definition at line 129 of file avxvnniint8intrin.h.

◆ _mm_dpbsud_epi32()

static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsud_epi32 ( __m128i  __W,
__m128i  __A,
__m128i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W, and store the packed 32-bit results in dst.

_mm_dpbsud_epi32(__m128i __W, __m128i __A, __m128i __B);
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsud_epi32(__m128i __W, __m128i __A, __m128i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 128-bit vector of [16 x char].
__BA 128-bit vector of [16 x unsigned char].
Returns
A 128-bit vector of [4 x int].
FOR j := 0 to 3
tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
ENDFOR
dst[MAX:128] := 0

Definition at line 203 of file avxvnniint8intrin.h.

◆ _mm_dpbsuds_epi32()

static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsuds_epi32 ( __m128i  __W,
__m128i  __A,
__m128i  __B 
)
static

Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W with signed saturation, and store the packed 32-bit results in dst.

_mm_dpbsuds_epi32( __m128i __W, __m128i __A, __m128i __B);
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsuds_epi32(__m128i __W, __m128i __A, __m128i __B)
Multiply groups of 4 adjacent pairs of signed 8-bit integers in __A with corresponding unsigned 8-bit...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 128-bit vector of [16 x char].
__BA 128-bit vector of [16 x unsigned char].
Returns
A 128-bit vector of [4 x int].
FOR j := 0 to 3
tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
ENDFOR
dst[MAX:128] := 0

Definition at line 277 of file avxvnniint8intrin.h.

◆ _mm_dpbuud_epi32()

static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuud_epi32 ( __m128i  __W,
__m128i  __A,
__m128i  __B 
)
static

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W, and store the packed 32-bit results in dst.

_mm_dpbuud_epi32(__m128i __W, __m128i __A, __m128i __B);
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuud_epi32(__m128i __W, __m128i __A, __m128i __B)
Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-b...

This intrinsic corresponds to the VPDPBSSD instruction.

Parameters
__AA 128-bit vector of [16 x unsigned char].
__BA 128-bit vector of [16 x unsigned char].
Returns
A 128-bit vector of [4 x int].
FOR j := 0 to 3
tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
ENDFOR
dst[MAX:128] := 0

Definition at line 351 of file avxvnniint8intrin.h.

◆ _mm_dpbuuds_epi32()

static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuuds_epi32 ( __m128i  __W,
__m128i  __A,
__m128i  __B 
)
static

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-bit integers in __B, producing 4 intermediate signed 16-bit results.

Sum these 4 results with the corresponding 32-bit integer in __W with signed saturation, and store the packed 32-bit results in dst.

_mm_dpbuuds_epi32( __m128i __W, __m128i __A, __m128i __B);
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuuds_epi32(__m128i __W, __m128i __A, __m128i __B)
Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in __A with corresponding unsigned 8-b...

This intrinsic corresponds to the VPDPBUUDS instruction.

Parameters
__AA 128-bit vector of [16 x unsigned char].
__BA 128-bit vector of [16 x unsigned char].
Returns
A 128-bit vector of [4 x int].
FOR j := 0 to 3
tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
ENDFOR
dst[MAX:128] := 0

Definition at line 425 of file avxvnniint8intrin.h.