Unpack Operators

I364vec2 unpack_high(I64vec2 A, I64vec2 B)

Is64vec2 unpack_high(Is64vec2 A, Is64vec2 B)

Iu64vec2 unpack_high(Iu64vec2 A, Iu64vec2 B)

Interleave the 64-bit value from the high half of A with the 64-bit value from the high half of B.

R0 = A1;

R1 = B1;

Corresponding intrinsic: _mm_unpackhi_epi64

 

I32vec4 unpack_high(I32vec4 A, I32vec4 B)

Is32vec4 unpack_high(Is32vec4 A, Is32vec4 B)

Iu32vec4 unpack_high(Iu32vec4 A, Iu32vec4 B)

Interleave the two 32-bit values from the high half of A with the two 32-bit values from the high half of B .

R0 = A1;

R1 = B1;

R2 = A2;

R3 = B2;

Corresponding intrinsic: _mm_unpackhi_epi32

 

I32vec2 unpack_high(I32vec2 A, I32vec2 B)

Is32vec2 unpack_high(Is32vec2 A, Is32vec2 B)

Iu32vec2 unpack_high(Iu32vec2 A, Iu32vec2 B)

Interleave the 32-bit value from the high half of A with the 32-bit value from the high half of B.

R0 = A1;

R1 = B1;

Corresponding intrinsic: _mm_unpackhi_pi32

 

I16vec8 unpack_high(I16vec8 A, I16vec8 B)

Is16vec8 unpack_high(Is16vec8 A, Is16vec8 B)

Iu16vec8 unpack_high(Iu16vec8 A, Iu16vec8 B)

Interleave the four 16-bit values from the high half of A with the two 16-bit values from the high half of B.

R0 = A2;

R1 = B2;R2 = A3;

R3 = B3;

Corresponding intrinsic: _mm_unpackhi_epi16

 

I16vec4 unpack_high(I16vec4 A, I16vec4 B)

Is16vec4 unpack_high(Is16vec4 A, Is16vec4 B)

Iu16vec4 unpack_high(Iu16vec4 A, Iu16vec4 B)

Interleave the two 16-bit values from the high half of A with the two 16-bit values from the high half of B.

R0 = A2;R1 = B2;

R2 = A3;R3 = B3;

Corresponding intrinsic: _mm_unpackhi_pi16

 

I8vec8 unpack_high(I8vec8 A, I8vec8 B)

Is8vec8 unpack_high(Is8vec8 A, I8vec8 B)

Iu8vec8 unpack_high(Iu8vec8 A, I8vec8 B)

Interleave the four 8-bit values from the high half of A with the four 8-bit values from the high half of B.

R0 = A4;

R1 = B4;

R2 = A5;

R3 = B5;

R4 = A6;

R5 = B6;

R6 = A7;

R7 = B7;

Corresponding intrinsic: _mm_unpackhi_pi8

 

I8vec16 unpack_high(I8vec16 A, I8vec16 B)

Is8vec16 unpack_high(Is8vec16 A, I8vec16 B)

Iu8vec16 unpack_high(Iu8vec16 A, I8vec16 B)

Interleave the sixteen 8-bit values from the high half of A with the four 8-bit values from the high half of B.

R0 = A8;

R1 = B8;

R2 = A9;

R3 = B9;

R4 = A10;

R5 = B10;

R6 = A11;

R7 = B11;

R8 = A12;

R8 = B12;

R2 = A13;

R3 = B13;

R4 = A14;

R5 = B14;

R6 = A15;

R7 = B15;

Corresponding intrinsic: _mm_unpackhi_epi16

Interleave the 32-bit value from the low half of A with the 32-bit value from the low half of B.

R0 = A0;

R1 = B0;

Corresponding intrinsic: _mm_unpacklo_epi32

 

I64vec2 unpack_low(I64vec2 A, I64vec2 B);

Is64vec2 unpack_low(Is64vec2 A, Is64vec2 B);

Iu64vec2 unpack_low(Iu64vec2 A, Iu64vec2 B);

Interleave the 64-bit value from the low half of A with the 64-bit values from the low half of B.

R0 = A0;

R1 = B0;

R2 = A1;

R3 = B1;

Corresponding intrinsic: _mm_unpacklo_epi32

 

I32vec4 unpack_low(I32vec4 A, I32vec4 B);

Is32vec4 unpack_low(Is32vec4 A, Is32vec4 B);

Iu32vec4 unpack_low(Iu32vec4 A, Iu32vec4 B);

Interleave the two 32-bit values from the low half of A with the two 32-bit values from the low half of B.

R0 = A0;R1 = B0;

R2 = A1;R3 = B1;

Corresponding intrinsic: _mm_unpacklo_epi32

 

I32vec2 unpack_low(I32vec2 A, I32vec2 B);

Is32vec2 unpack_low(Is32vec2 A, Is32vec2 B);

Iu32vec2 unpack_low(Iu32vec2 A, Iu32vec2 B);

Interleave the 32-bit value from the low half of A with the 32-bit value from the low half of B.

R0 = A0;

R1 = B0;

Corresponding intrinsic: _mm_unpacklo_pi32

 

I16vec8 unpack_low(I16vec8 A, I16vec8 B);

Is16vec8 unpack_low(Is16vec8 A, Is16vec8 B);

Iu16vec8 unpack_low(Iu16vec8 A, Iu16vec8 B);

Interleave the two 16-bit values from the low half of A with the two 16-bit values from the low half of B.

R0 = A0;

R1 = B0;

R2 = A1;

R3 = B1;

R4 = A2;

R5 = B2;

R6 = A3;

R7 = B3;

Corresponding intrinsic: _mm_unpacklo_epi16

 

I16vec4 unpack_low(I16vec4 A, I16vec4 B);

Is16vec4 unpack_low(Is16vec4 A, Is16vec4 B);

Iu16vec4 unpack_low(Iu16vec4 A, Iu16vec4 B);

Interleave the two 16-bit values from the low half of A with the two 16-bit values from the low half of B.

R0 = A0;

R1 = B0;

R2 = A1;

R3 = B1;

Corresponding intrinsic: _mm_unpacklo_pi16

 

I8vec16 unpack_low(I8vec16 A, I8vec16 B);

Is8vec16 unpack_low(Is8vec16 A, Is8vec16 B);

Iu8vec16 unpack_low(Iu8vec16 A, Iu8vec16 B);

Interleave the four 8-bit values from the high low of A with the four 8-bit values from the low half of B.

R0 = A0;

R1 = B0;

R2 = A1;

R3 = B1;

R4 = A2;

R5 = B2;

R6 = A3;

R7 = B3;

R8 = A4;

R9 = B4;

R10 = A5;

R11 = B5;

R12 = A6;

R13 = B6;

R14 = A7;

R15 = B7;

Corresponding intrinsic: _mm_unpacklo_epi8

 

I8vec8 unpack_low(I8vec8 A, I8vec8 B);

Is8vec8 unpack_low(Is8vec8 A, Is8vec8 B);

Iu8vec8 unpack_low(Iu8vec8 A, Iu8vec8 B);

Interleave the four 8-bit values from the high low of A with the four 8-bit values from the low half of B.

R0 = A0;

R1 = B0;

R2 = A1;

R3 = B1;

R4 = A2;

R5 = B2;

R6 = A3;

R7 = B3;

Corresponding intrinsic: _mm_unpacklo_pi8