"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como carregar 8 floats em uma variável __m256 usando AVX Intrinsics?

Como carregar 8 floats em uma variável __m256 usando AVX Intrinsics?

Publicado em 17/11/2024
Navegar:447

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

Carregando 8 flutuações da memória na variável __m256

Seu objetivo é substituir o buffer flutuante[8] por uma variável intrínseca, __m256. Aqui estão as instruções para conseguir isso:

Instruções AVX2:

  1. Use VPMOVZXBD ymm0, [rsi] para estender a zero os bytes na memória em 32- inteiros de bits.
  2. Converta os inteiros em flutuantes com VCVTDQ2PS ymm0, ymm0.

AVX1 Instruções:

  1. Use VPMOVZXBD xmm0, [rsi] para carregar os primeiros quatro bytes.
  2. Carregar os próximos quatro bytes com VPMOVZXBD xmm1, [rsi 4].
  3. Insira o segundo carregue nos 128 bits altos de ymm0 com VINSERTF128 ymm0, ymm0, xmm1, 1.
  4. Converta para floats com VCVTDQ2PS ymm0, ymm0.

Dicas de otimização:

  • Para AVX2, considere usar um Carga de transmissão de 128 bits e VPMOVZXBD para desempenho.
  • Evite usar VPMOVZXBD ymm, [mem] com intrínsecos, pois isso pode levar a otimizações perdidas.
  • Para AVX1, use _mm_loadl_epi64 para dobrar a carga na instrução VPMOVZXBD para obter o código ideal.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3