This documentation is archived and is not being maintained.

_mm_maccs_epi32

Visual Studio 2010

Visual Studio 2010 SP1 is required.

Microsoft Specific

Generates the XOP instruction vpmacssdd to perform a saturating integer multiply-add of its sources.

__m128i _mm_maccs_epi32 (
   __m128i src1,
   __m128i src2,
   __m128i src3
); 

[in] src1

A 128-bit parameter that contains four 32-bit signed integers.

[in] src2

A 128-bit parameter that contains four 32-bit signed integers.

[in] src3

A 128-bit parameter that contains four 32-bit signed integers.

A 128-bit result r that contains four 32-bit signed integers.

r[i] := src1[i] * src2[i] + src3[i];

Intrinsic

Architecture

_mm_maccs_epi32

XOP

Header file <intrin.h>

Each 32-bit signed integer value in src1 is multiplied by the corresponding 32-bit signed integer value in src2. The 64-bit signed integer product is added to the corresponding 32-bit signed integer value in src3, and the signed 32-bit integer result is stored as the corresponding value in the destination.

If the result of the addition to the 64-bit product is greater than 2147483647 (0x7FFFFFFF) or less than -2147483648 (0x80000000), the multiply-add saturates by setting the result value to 2147483647 or -2147483648, respectively.

The vpmacssdd instruction is part of the XOP family of instructions. Before you use this intrinsic, you must ensure that the processor supports this instruction. . To determine hardware support for this instruction, call the __cpuid intrinsic with InfoType = 0x80000001 and check bit 11 of CPUInfo[2] (ECX). This bit is 1 when the instruction is supported, and 0 otherwise.

#include <stdio.h>
#include <intrin.h>
int main()
{
    __m128i a, b, c, d;
    int i;
    for (i = 0; i < 4; i++) {
        a.m128i_i32[i] = 30000;
        b.m128i_i32[i] = 16000*(i-2);
        c.m128i_i32[i] = 1300000000*i - 2000000000;
    }
    d = _mm_maccs_epi32(a, b, c);
    for (i = 0; i < 4; i++) printf_s(" %d", d.m128i_i32[i]);
    printf_s("\n");
}
-2147483648 -1180000000 600000000 2147483647
Show: