Please enter what you're looking for to continue your search
 

_mm512_madd_epi16
ADD TO COMPARE ADDED TO COMPARE

 Intel 64-bit (64 bits)/ AVX512  View official documentation
 Location: Arithmetic  >  Vector Multiply, Pairwise Add & Widen
 CPU Extensions: AVX512BW
Purpose:
Multiply packed signed 16-bit integers in "a" and "b", producing intermediate signed 32-bit integers. Horizontally add adjacent pairs of intermediate 32-bit integers, and pack the results in "dst".
Result:

__m512i

Example:
#include <immintrin.h>
#include <stdio.h>
int main() {
 __m512i a = _mm512_set_epi16(        32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,        16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1    );
 __m512i b = _mm512_set_epi16(        1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,        17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32    );
 __m512i result = _mm512_madd_epi16(a, b);
 int out[32];
 _mm512_storeu_si512((__m512i*)out, result);
 for(int i = 0; i < 32; i++)
  printf("%d\n", out[i]);

  return 0;
 }

Prototypes

Assembly Instruction:
vpmaddwd
Usage:
__m512i result = _mm512_madd_epi16( __m512i a, __m512i b )
Performance Metrics:
📊 Unlock Performance Insights

Get access to detailed performance metrics including latency, throughput, and CPU-specific benchmarks for this intrinsic.

SIMD Intrinsics Summary
SIMD Engines: 6
C Intrinsics: 10444
NEON: 4353
AVX2: 405
AVX512: 4717
SSE4.2: 598
VSX: 192
IBM-Z: 179