No estoy en posición de distinguir entre vld4_f32
y vld4q_f32
en las instrucciones de ARM NEON.ARM NEON: ¿Cuál es la diferencia entre vld4_f32 y vld4q_f32?
La confusión comenzó cuando elevé mis niveles de codificación y comencé a mirar las instrucciones de montaje en lugar de las intrínsecas menos informativas.
La razón por la que necesito para usar la instrucción variante vld4 aquí es porque, me gustaría capturar float32_t
's de todos los cuarta posición de mi gran conjunto.
Los vld4_f32
intrínsecos y las correspondientes instrucciones de montaje se ven así (From this link)
float32x2x4_t vld4_f32 (const float32_t *)
Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0]
Los vld4q_f32
intrínsecos y sus instrucciones de montaje correspondientes se parece a esto
float32x4x4_t vld4q_f32 (const float32_t *)
Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0]
Bueno, en el nivel intrínseco la diferencia que veo es el tipo de retorno, pero si miro las instrucciones de ensamblaje y el número de registros, ambos tienen el mismo aspecto. ¿Cómo sabrá el compilador o el ensamblador la diferencia entre los dos?
Alguien puede aclarar más en esto y también explicar cómo puedo lograr carga 4 float32_t valores que se colocan en cada posición de memoria cuarto en un único registro?
Bueno, cargas vld4q 4 q registros, como su nombre indica ... – jcayzac