Traduzindo SSE para Neon: Como compactar e extrair o resultado de 32 bits

Eu tenho que traduzir as seguintes instruções de SSE para Neon

 uint32_t a = _mm_cvtsi128_si32(_mm_shuffle_epi8(a,SHUFFLE_MASK) );

Onde:

static const __m128i SHUFFLE_MASK = _mm_setr_epi8(3,  7,  11, 15, -1, -1, -1, -1,
                                                  -1, -1, -1, -1, -1, -1, -1, -1);

Então, basicamente, tenho que pegar os 4º, 8º, 12º e 16º bytes do registro e colocá-lo em umuint32_t. Parece uma instrução de embalagem (no SSE, lembro-me de que usei a reprodução aleatória porque salva uma instrução em comparação à embalagem,este exemplo mostra o uso das instruções de embalagem).

Como essa operação se traduz no Neon?
Devo usar as instruções de embalagem?
Como faço para extrair 32 bits? (Existe algo equivalente a_mm_cvtsi128_si32?)

Editar:
Começar com,vgetq_lane_u32 deve permitir substituir_mm_cvtsi128_si32 (mas terei que converter meu uint8x16_t em uint32x4_t)

uint32_t  vgetq_lane_u32(uint32x4_t vec, __constrange(0,3) int lane);

ou armazene diretamente a faixavst1q_lane_u32

void  vst1q_lane_u32(__transfersize(1) uint32_t * ptr, uint32x4_t val, __constrange(0,3) int lane); // VST1.32 {d0[0]}, [r0]