내 프로그램을 최적화하는 내장 함수를 사용하고 있습니다. 그러나 이제 결과를 부동 소수점 값과 비교하기 위해 __m128 벡터에있는 네 개의 요소를 합산하려고합니다. 예를 들어,이 128 비트 벡터가 있다고 가정 해 봅시다. {a, b c, d}. + b + c + d와 e를 어떻게 비교할 수 있습니까? e는 float 유형입니까?_m128 벡터의 4 개 32 비트 요소 합
SSE2 또는 SSE3은이를 간단하게 수행 할 수 있습니까? 아니면 나를 도울 수있는 코드 스 니펫이 있습니까? 감사 !
두 개의 HADDPS로 SSE3에서 수행 할 수 있지만 그다지 빠르지는 않습니다. 이 벡터는 어디서 오는 것입니까? 수평 적 추가를 피할 수 있도록 계산 된 값을 재조정 할 수 있습니까? – harold
그럼 (a * a + b * b)와 4.0을 비교해야합니다. 이렇게하기 위해 vec = {a, b, UNUSED, UNUSED}와 같은 __m128 벡터에 a와 b를 저장했습니다. square = _mm_mul_ps (vec, vec)를 실행하여 {a², b², X, X}를 얻습니다. 이제는 ² + b²를 구할 수있는 방법을 찾고 있으므로 4.0과 비교할 수 있습니다. 그건 분명히 최적이 아니기 때문에 조언이 있으면 크게 감사하겠습니다. – Merkil
SSE4는 허용 되었습니까? – harold