Laden von 8 Floats aus dem Speicher in die Variable __m256
Ihr Ziel ist es, den Float-Puffer[8] durch eine intrinsische Variable, __m256, zu ersetzen. Hier sind die Anweisungen, um dies zu erreichen:
AVX2-Anweisungen:
- Verwenden Sie VPMOVZXBD ymm0, [rsi], um die Bytes im Speicher auf 32 zu erweitern. Bit-Ganzzahlen.
- Konvertieren Sie die Ganzzahlen in Gleitkommazahlen mit VCVTDQ2PS ymm0, ymm0.
AVX1-Anweisungen:
- Verwenden Sie VPMOVZXBD xmm0 , [rsi], um die ersten vier Bytes zu laden.
- Laden Sie die nächsten vier Bytes mit VPMOVZXBD xmm1, [rsi 4].
- Fügen Sie den zweiten Ladevorgang mit VINSERTF128 in die hohen 128 Bits von ymm0 ein ymm0, ymm0, xmm1, 1.
- Konvertieren in Floats mit VCVTDQ2PS ymm0, ymm0.
Optimierungstipps:
- Erwägen Sie für AVX2 die Verwendung einer 128-Bit-Broadcast-Last und VPMOVZXBD für die Leistung.
- Vermeiden Sie die Verwendung von VPMOVZXBD ymm, [mem] mit intrinsischen Elementen, da dies zu verpassten Optimierungen führen kann.
- Für AVX1 Verwenden Sie _mm_loadl_epi64, um die Ladung für optimalen Code in die VPMOVZXBD-Anweisung zu falten.
Das obige ist der detaillierte Inhalt vonWie lade ich mit AVX Intrinsics 8 Floats in eine __m256-Variable?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn