문제

테스트 목적으로 ICC 인라인 어셈블러가있는 Intel의 Xeon PHI 용 짧은 조립 스 니펫을 쓰고 있습니다.이제는 마스크 된 벡터 지침을 사용하고 싶었지만 인라인 어셈블러에이를 먹이는 데 실패했습니다.

다음과 같은 코드 :

vmovapd  -64(%%r14, %%r10), %%zmm0{%%k1} 
.

오류 메시지가 나타납니다

/tmp/icpc5115IWas_.s: Assembler messages:
/tmp/icpc5115IWas_.s:563: Error: junk `%k1' after register
.

나는 많은 다른 조합을 시도했지만 아무 일도 일하지 않았습니다.컴파일러 버전은 Linux에서의 Intel64 / 13.1up03이며 가스 구문을 사용합니다.

편집 : 위의 코드는 실제로 비 확장 어셈블러에서 작동합니다.그래서 :

__asm__("vmovapd  -64(%r14, %r10), %zmm0{%k1} ")
.

는 작동하지 않지만 다음은 다음과 같습니다.

__asm__("vmovapd  -64(%[src], %%r10), %%zmm0{%%k1} "
    :
    : [src]"r"(src)
    :)
.

확장 모드에서 등록 이름을 등록하기 전에 이중 %를 사용할 필요성을 가지고있는 것이 뭔가가 있습니다.그러나 k의 단일 %가 작동하지 않습니다.

다른 팁

명령의 가면의 변형을 사용해야한다고 생각합니다. vmaskmovpd

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top