"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment charger 8 flotteurs dans une variable __m256 à l'aide des intrinsèques AVX ?

Comment charger 8 flotteurs dans une variable __m256 à l'aide des intrinsèques AVX ?

Publié le 2024-11-17
Parcourir:262

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

Chargement de 8 flottants de la mémoire dans la variable __m256

Votre objectif est de remplacer le tampon flottant[8] par une variable intrinsèque, __m256. Voici les instructions pour y parvenir :

Instructions AVX2 :

  1. Utilisez VPMOVZXBD ymm0, [rsi] pour étendre à zéro les octets en mémoire en 32- entiers binaires.
  2. Convertissez les entiers en flottants avec VCVTDQ2PS ymm0, ymm0.

Instructions AVX1 :

  1. Utilisez VPMOVZXBD xmm0, [rsi] pour charger les quatre premiers octets.
  2. Charger les quatre octets suivants avec VPMOVZXBD xmm1, [rsi 4].
  3. Insérez la deuxième charge dans le haut 128 bits de ymm0 avec VINSERTF128 ymm0, ymm0, xmm1, 1.
  4. Convertir en flottants avec VCVTDQ2PS ymm0, ymm0.

Conseils d'optimisation :

  • Pour AVX2, envisagez d'utiliser une charge de diffusion 128 bits et VPMOVZXBD pour les performances.
  • Évitez d'utiliser VPMOVZXBD ymm, [mem] avec des éléments intrinsèques, car cela pourrait entraîner des optimisations manquées.
  • Pour AVX1, utilisez _mm_loadl_epi64 pour intégrer la charge dans l'instruction VPMOVZXBD pour une optimisation optimale code.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3