1
_mm256_blend_pd를 사용하려고하는데 컴파일러 오류가 계속 발생합니다. 이 경우, gcc는 "마지막 인수는 4 비트 즉석이어야합니다"라는 오류가 발생합니다. 성공적으로 하드 코딩 된 값을 전달할 수 있지만 계산 된 값으로 오류가 발생합니다._mm256_blend_pd의 마지막 인수에 즉시 4 비트 값을 전달하는 방법
여기에는 오류를 나타내는 고의롭고 쓸모없는 프로그램이 있습니다. gcc 4.6.3 및 gcc 4.8.3에서 오류가 발생합니다.
#include <immintrin.h>
#include <stdlib.h>
int main() {
__m256d zeroHit = {0};
int j=rand()%3;
int imm=(0x01);
// This line will compile
_mm256_store_pd(0,_mm256_blend_pd(zeroHit,*reinterpret_cast<__m256d*>(0),imm&0x0F));
imm=(0x01 & (j!=0));
// This line will produce the error
_mm256_store_pd(0,_mm256_blend_pd(zeroHit,*reinterpret_cast<__m256d*>(0),imm&0x0F));
return 0;
}
이유는 "즉각적인"이라고합니다. 컴파일 시간 상수가 필요합니다. – Mysticial
@Mysticial : 솔직히 말해서 나는 그 이름이 모두 직관적이라고 생각하지 않는다. = P – Mehrdad
@Mehrdad 맞습니다. 나는 내가이 용어를 당연한 것으로 여기는 걸 오랫동안 해왔다고 생각한다. :) – Mysticial