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!