Export (0) Print
Expand All
Expand Minimize

__m64_shladd

Microsoft Specific

Emits the IPF Shift Left and Add (shladd) instruction.

__m64 __m64_shladd( 
   __m64 a, 
   const int nBit, 
   __m64 b 
);

[in] a

An __m64 union containing a 64-bit integer.

[in] nBit

The number of bits shifted left. Valid values are 1, 2, 3, or 4.

[in] b

An __m64 union containing a 64-bit integer.

The result of the left shift of a by nBit bytes, followed by addition of b.

Intrinsic

Architecture

__m64_shladd

IPF

Header file <intrin.h>

The result computed and returned is a * 2^nBit + b.

// shladd.cpp
// processor: IPF
#include <stdio.h>
#include <intrin.h>

#pragma intrinsic(__m64_shladd)

void print(__int64 a, int nBit, __int64 b, __int64 c)
{
    printf_s("__m64_shladd(%I64d, %d, %I64d) returns %I64d\n",
             a, nBit, b, c);
}

int main()
{
    __m64 m, n, result;
    m.m64_i64 = 15;  
    n.m64_i64 = 7; 
    result = __m64_shladd(m, 1, n);
    print(m.m64_i64, 1, n.m64_i64, result.m64_i64);

    result = __m64_shladd(m, 2, n);
    print(m.m64_i64, 2, n.m64_i64, result.m64_i64);

    result = __m64_shladd(m, 3, n);
    print(m.m64_i64, 3, n.m64_i64, result.m64_i64);

    result = __m64_shladd(m, 4, n);
    print(m.m64_i64, 4, n.m64_i64, result.m64_i64);

}
__m64_shladd(15, 1, 7) returns 37
__m64_shladd(15, 2, 7) returns 67
__m64_shladd(15, 3, 7) returns 127
__m64_shladd(15, 4, 7) returns 247

Community Additions

ADD
Show:
© 2014 Microsoft