메모리에서 8개의 Float를 __m256 변수로 로드
목표는 float 버퍼[8]를 내장 변수 __m256으로 바꾸는 것입니다. 이를 달성하기 위한 지침은 다음과 같습니다.
AVX2 지침:
- VPMOVZXBD ymm0, [rsi]를 사용하여 메모리의 바이트를 32- 비트 정수.
- VCVTDQ2PS ymm0, ymm0을 사용하여 정수를 부동 소수점으로 변환합니다.
AVX1 지침:
- VPMOVZXBD xmm0 사용 , [rsi]를 사용하여 처음 4바이트를 로드합니다.
- VPMOVZXBD xmm1, [rsi 4]를 사용하여 다음 4바이트를 로드합니다.
- VINSERTF128을 사용하여 ymm0의 상위 128비트에 두 번째 로드를 삽입합니다. ymm0, ymm0, xmm1, 1.
- VCVTDQ2PS ymm0, ymm0을 사용하여 부동 소수점으로 변환합니다.
최적화 팁:
- AVX2의 경우 성능을 위해 128비트 브로드캐스트 로드 및 VPMOVZXBD 사용을 고려하세요.
- 최적화가 누락될 수 있으므로 VPMOVZXBD ymm, [mem]을 내장 함수와 함께 사용하지 마세요.
- AVX1의 경우, 최적의 코드를 위해 _mm_loadl_epi64를 사용하여 로드를 VPMOVZXBD 명령어로 접습니다.
위 내용은 AVX 내장 함수를 사용하여 8개의 부동 소수점을 __m256 변수에 로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!