, 난 X
의 세번째 요소 H
의 모든 요소를 설정하는 고유 SSE를__m256d의 모든 요소를 다른 __m256d의 세 번째 요소로 설정하는 방법은 무엇입니까? 4
__m128 X;
__m128 H = _mm_shuffle_ps(X,X,_MM_SHUFFLE(3,3,3,3));
사용할 수 float
(__m128
)을 패킹 (이는 가장 빠른 방법?)
자, 같은 포장을하고 싶습니다 double
(__m256d
). 나는 순진하게 코드화했습니다.
__m256d X;
__m256d H = _mm256_shuffle_pd(X,X,_MM_SHUFFLE(3,3,3,3));
그러나 올바른 것은 아닙니다! 대신 H = {X [1], X [1], X [3], X [3]}을 설정합니다.
그렇다면 어떻게해야할까요? 2.60GHz @ 인텔 (R) 제온 (R) CPU E5-2670 0을 사용
편집
는
이 질문을 참조하십시오 : [단일 AVX 내장 함수를 사용하여 double 형을 포함하는 AVX 레지스터 반전] (http://stackoverflow.com/questions/13422747/reverse-a-avx-register-containing-doubles-using-a-single -avx-intrinsic) – Mysticial
256 비트 벡터에 해당하는 것은 없습니다. 128 비트 청크에서 하나만 바꾸고 다른 하나는 128 비트 경계에서 다시 퍼뜨릴 수 없기 때문에 두 개의 셔플/퍼 뮤트 인 셈 블리를 사용해야합니다. – Mysticial
@ 신비로운. 그렇다면 필요한 코드를 제공 할 수 있습니까? 그렇지 않으면, 나는 그것을 스스로 알아낼 것이다. 그리고 내 자신의 질문에 대답한다. – Walter