Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize


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.





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

© 2015 Microsoft