"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo cargar 8 flotadores en una variable __m256 usando intrínsecos AVX?

¿Cómo cargar 8 flotadores en una variable __m256 usando intrínsecos AVX?

Publicado el 2024-11-17
Navegar:979

How to Load 8 Floats into an __m256 Variable Using AVX Intrinsics?

Cargando 8 flotantes de la memoria en la variable __m256

Su objetivo es reemplazar el búfer flotante[8] con una variable intrínseca, __m256. Aquí están las instrucciones para lograr esto:

Instrucciones AVX2:

  1. Utilice VPMOVZXBD ymm0, [rsi] para extender a cero los bytes en la memoria a 32- enteros de bits.
  2. Convierta los números enteros a flotantes con VCVTDQ2PS ymm0, ymm0.

Instrucciones AVX1:

  1. Use VPMOVZXBD xmm0 , [rsi] para cargar los primeros cuatro bytes.
  2. Cargue los siguientes cuatro bytes con VPMOVZXBD xmm1, [rsi 4].
  3. Inserte la segunda carga en los 128 bits superiores de ymm0 con VINSERTF128 ymm0, ymm0, xmm1, 1.
  4. Convertir a flotantes con VCVTDQ2PS ymm0, ymm0.

Consejos de optimización:

  • Para AVX2, considere usar una carga de transmisión de 128 bits y VPMOVZXBD para mejorar el rendimiento.
  • Evite usar VPMOVZXBD ymm, [mem] con intrínsecos, ya que puede provocar optimizaciones perdidas.
  • Para AVX1, use _mm_loadl_epi64 para incorporar la carga en la instrucción VPMOVZXBD para obtener un código óptimo.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3