Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Specific
Emits the Supplemental Streaming SIMD Extensions 3 (SSSE3) instruction palignr. This instruction extracts a 64-bit byte aligned value from the concatenation of the input parameters.
__m64 _mm_alignr_pi8(
__m64 a,
__m64 b,
const int ralign
);
Parameters
[in] a
A 64-bit parameter that contains eight 8-bit integers.[in] b
A 64-bit parameter that contains eight 8-bit integers.[in] ralign
An integer constant that specifies how many bytes to shift the interim result to the right.
Return value
r := (CONCAT(a, b) >> (ralign * 8)) & 0xffffffff
Requirements
Intrinsic |
Architecture |
---|---|
_mm_alignr_pi8 |
x86, x64 |
Header file <tmmintrin.h>
Remarks
r is the 64-bit result value.
CONCAT(a, b) is the 128-bit unsigned intermediate value that is formed by concatenating parameters a and b. The result value is the rightmost 64 bits after shifting this intermediate result right by ralign bytes.
If ralign > 16, the result value is zero.
Before using this intrinsic, software must ensure that the processor supports the instruction.
Example
// _mm_alignr_pi8
#include <stdio.h>
#include <tmmintrin.h>
int main () {
__m64 a, b;
a.m64_u32[1] = 0x01234567;
a.m64_u32[0] = 0x89ABCDEF;
b.m64_u32[1] = 0xFFDDEECC;
b.m64_u32[0] = 0xBBAA9988;
// A right align value of four should remove the lowest 4 bytes of "b"
__m64 res = _mm_alignr_pi8( a, b, 4 );
printf_s("Original a: 0x%016I64x\nOriginal b: 0x%016I64x\n",
a.m64_u64, b.m64_u64);
printf_s("Result res: 0x%016I64x\n",
res.m64_u64);
_mm_empty();
return 0;
}
Original a: 0x0123456789abcdef Original b: 0xffddeeccbbaa9988 Result res: 0x89abcdefffddeecc