Traducción de SSE a Neon: cómo empacar y luego extraer el resultado de 32 bits

Tengo que traducir las siguientes instrucciones de SSE a Neon

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

Dónde:

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

Básicamente, tengo que tomar los bytes 4, 8, 12 y 16 del registro y ponerlos en unuint32_t. Parece una instrucción de embalaje (en SSE, creo recordar que usé shuffle porque guarda una instrucción en comparación con el embalaje,este ejemplo muestra el uso de las instrucciones de embalaje).

¿Cómo se traduce esta operación en neón?
¿Debo usar las instrucciones de embalaje?
¿Cómo extraigo 32 bits? (¿Hay algo equivalente a_mm_cvtsi128_si32?)

Editar:
Para empezar,vgetq_lane_u32 debería permitir reemplazar_mm_cvtsi128_si32 (pero tendré que enviar mi uint8x16_t a uint32x4_t)

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

o almacenar directamente el carrilvst1q_lane_u32

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta