x64/sse에서 벡터 명령어를 사용하여 x % M을 계산하는 가장 빠르고/가장 빠른 방법은 무엇입니까? (%는 mod/나머지를 의미합니다.)SSE를 사용하여 모드/나머지를 계산하는 방법은 무엇입니까?
packed mod에 대한 opcode를 찾을 수 없으므로 float에 int를 승격시킨 다음 DIVPS 및 ROUNDPS를 사용하여 x - m * floor (x/m)를 계산하는 것이 가장 좋습니다.
내가 누락 된 더 나은 대안이 있습니까?
UPDATE : M에만 런타임에 알려져있다, 실제 루프는 다음과 같습니다
unsigned x[SIZE], M[SIZE], answer[SIZE];
for (int i = 0; i < SIZE; i++) {
answer[i] = x[i] % M[i];
}
는 또한 M의 범위 1로 알려져있다 - 640,000,000, 그것은 어떤 식 으로든 도움이된다면.
훨씬 빠르지 않습니다. 또한 한 번에 하나씩 반올림 오류가 있는지 확인해야 할 수도 있습니다. 분수 부분이 '0.5'에 매우 가까우면 계산 한 몫이 올바른 정수로 반올림되지 않을 수 있습니다. – Mysticial
M이 2의 힘이 아니라면 나는 너에게 운이 없다고 생각한다. –
'M'은 컴파일 타임 상수인가? –