# Unpack Operators

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

`I64vec2 unpack_high(I64vec2 A, I64vec2 B);`

`Is64vec2 unpack_high(Is64vec2 A, Is64vec2 B);`

`Iu64vec2 unpack_high(Iu64vec2 A, Iu64vec2 B);`

`R0 = A1;`
`R1 = B1;`

Corresponding intrinsic: _mm_unpackhi_epi64

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

`I32vec4 unpack_high(I32vec4 A, I32vec4 B);`

`Is32vec4 unpack_high(Is32vec4 A, Is32vec4 B);`

`Iu32vec4 unpack_high(Iu32vec4 A, Iu32vec4 B);`

`R0 = A1;`
`R1 = B1;`
`R2 = A2;`
`R3 = B2;`

Corresponding intrinsic: _mm_unpackhi_epi32

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

`I32vec2 unpack_high(I32vec2 A, I32vec2 B);`

`Is32vec2 unpack_high(Is32vec2 A, Is32vec2 B);`

`Iu32vec2 unpack_high(Iu32vec2 A, Iu32vec2 B);`

`R0 = A1;`
`R1 = B1;`

Corresponding intrinsic: _mm_unpackhi_pi32

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

`I16vec8 unpack_high(I16vec8 A, I16vec8 B);`

`Is16vec8 unpack_high(Is16vec8 A, Is16vec8 B);`

`Iu16vec8 unpack_high(Iu16vec8 A, Iu16vec8 B);`

`R0 = A2;`
`R1 = B2;`
`R2 = A3;`
`R3 = B3;`

Corresponding intrinsic: _mm_unpackhi_epi16

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

`I16vec4 unpack_high(I16vec4 A, I16vec4 B);`

`Is16vec4 unpack_high(Is16vec4 A, Is16vec4 B);`

`Iu16vec4 unpack_high(Iu16vec4 A, Iu16vec4 B);`

`R0 = A2;R1 = B2;`
`R2 = A3;R3 = B3;`

Corresponding intrinsic: _mm_unpackhi_pi16

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

`I8vec8 unpack_high(I8vec8 A, I8vec8 B);`

`Is8vec8 unpack_high(Is8vec8 A, I8vec8 B);`

`Iu8vec8 unpack_high(Iu8vec8 A, I8vec8 B);`

`R0 = A4;`
`R1 = B4;`
`R2 = A5;`
`R3 = B5;`
`R4 = A6;`
`R5 = B6;`
`R6 = A7;`
`R7 = B7;`

Corresponding intrinsic: _mm_unpackhi_pi8

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

`I8vec16 unpack_high(I8vec16 A, I8vec16 B);`

`Is8vec16 unpack_high(Is8vec16 A, I8vec16 B);`

`Iu8vec16 unpack_high(Iu8vec16 A, I8vec16 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

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

`I64vec2 unpack_low(I64vec2 A, I64vec2 B);`

`Is64vec2 unpack_low(Is64vec2 A, Is64vec2 B);`

`Iu64vec2 unpack_low(Iu64vec2 A, Iu64vec2 B);`

`R0 = A0;`
`R1 = B0;`
`R2 = A1;`
`R3 = B1;`

Corresponding intrinsic: _mm_unpacklo_epi32

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

`I32vec4 unpack_low(I32vec4 A, I32vec4 B);`

`Is32vec4 unpack_low(Is32vec4 A, Is32vec4 B);`

`Iu32vec4 unpack_low(Iu32vec4 A, Iu32vec4 B);`

`R0 = A0;`
`R1 = B0;`
`R2 = A1;`
`R3 = B1;`

Corresponding intrinsic: _mm_unpacklo_epi32

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

`I32vec2 unpack_low(I32vec2 A, I32vec2 B);`

`Is32vec2 unpack_low(Is32vec2 A, Is32vec2 B);`

`Iu32vec2 unpack_low(Iu32vec2 A, Iu32vec2 B);`

`R0 = A0;`
`R1 = B0;`

Corresponding intrinsic: _mm_unpacklo_pi32

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

`I16vec8 unpack_low(I16vec8 A, I16vec8 B);`

`Is16vec8 unpack_low(Is16vec8 A, Is16vec8 B);`

`Iu16vec8 unpack_low(Iu16vec8 A, Iu16vec8 B);`

`R0 = A0;`
`R1 = B0;`
`R2 = A1;`
`R3 = B1;`
`R4 = A2;`
`R5 = B2;`
`R6 = A3;`
`R7 = B3;`

Corresponding intrinsic: _mm_unpacklo_epi16

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

`I16vec4 unpack_low(I16vec4 A, I16vec4 B);`

`Is16vec4 unpack_low(Is16vec4 A, Is16vec4 B);`

`Iu16vec4 unpack_low(Iu16vec4 A, Iu16vec4 B);`

`R0 = A0;`
`R1 = B0;`
`R2 = A1;`
`R3 = B1;`

Corresponding intrinsic: _mm_unpacklo_pi16

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

`I8vec16 unpack_low(I8vec16 A, I8vec16 B);`

`Is8vec16 unpack_low(Is8vec16 A, Is8vec16 B);`

`Iu8vec16 unpack_low(Iu8vec16 A, Iu8vec16 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

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

`I8vec8 unpack_low(I8vec8 A, I8vec8 B);`

`Is8vec8 unpack_low(Is8vec8 A, Is8vec8 B);`

`Iu8vec8 unpack_low(Iu8vec8 A, Iu8vec8 B);`

`R0 = A0;`
`R1 = B0;`
`R2 = A1;`
`R3 = B1;`
`R4 = A2;`
`R5 = B2;`
`R6 = A3;`
`R7 = B3;`

Corresponding intrinsic: _mm_unpacklo_pi8

Parent topic: Integer Vector Classes