"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > AVX 내장 함수를 사용하여 8개의 부동 소수점을 __m256 변수에 로드하는 방법은 무엇입니까?

AVX 내장 함수를 사용하여 8개의 부동 소수점을 __m256 변수에 로드하는 방법은 무엇입니까?

2024년 11월 17일에 게시됨
검색:886

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

메모리에서 __m256 변수로 8개의 부동 소수점 로드

목표는 부동 소수점 버퍼[8]를 내장 변수 __m256으로 바꾸는 것입니다. 이를 달성하기 위한 지침은 다음과 같습니다.

AVX2 지침:

  1. VPMOVZXBD ymm0, [rsi]를 사용하여 메모리의 바이트를 32- 비트 정수.
  2. VCVTDQ2PS ymm0을 사용하여 정수를 부동 소수점으로 변환합니다. ymm0.

AVX1 지침:

  1. VPMOVZXBD xmm0, [rsi]를 사용하여 처음 4바이트를 로드합니다.
  2. 로드 VPMOVZXBD xmm1, [rsi를 사용한 다음 4바이트 4].
  3. VINSERTF128 ymm0, ymm0, xmm1, 1을 사용하여 ymm0의 상위 128비트에 두 번째 로드를 삽입합니다.
  4. VCVTDQ2PS ymm0, ymm0을 사용하여 부동 소수점으로 변환합니다.

최적화 팁:

  • AVX2의 경우 성능을 위해 128비트 브로드캐스트 로드 및 VPMOVZXBD 사용을 고려하세요.
  • VPMOVZXBD ymm, [mem]을 내장 함수와 함께 사용하지 마세요. 최적화가 누락될 수 있습니다.
  • AVX1의 경우 _mm_loadl_epi64를 사용하여 최적의 코드를 위해 VPMOVZXBD 명령어에 로드합니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3