특정 AVX512F 명령을 이해하려고합니다. vcvtps2udq.AVX512 반올림 모드는 어떻게 작동합니까 (또는 NDISASM은 혼동됩니까?)?
지침의 서명은 VCVTPS2UDQ zmm1 {k1}{z}, zmm2/m512/m32bcst{er}
입니다. 매뉴얼 정보는 아래와 같습니다. 새로운 반올림 모드를 이해하기위한 시도
vcvtps2udq zmm0,zmm1
vcvtps2udq zmm0,zmm1,{rz-sae}
vcvtps2udq xmm0,xmm1
NDISASM과 결과를 Deassembling (2.12.02)로 조립 많은 혼란을주고 다음과 같은 코드 :
62F17C4879C1 vcvtps2udq zmm0,zmm1
62F17C7879C1 vcvtps2udq xmm0,xmm1
62F17C0879C1 vcvtps2udq xmm0,xmm1
질문는 : 두 번째 줄은 XMM 레지스터 대신에 (내가 기대 한 것)를 ZMM 레지스터와 deassembled된다. 제로 라운딩 모드 (rz-sae)가 있습니다. 아니면 그냥 NDISASM 잘못된 및 opcode 62F17C7879C1 및 62F17C0879C1 구별 할 수 없습니다.
인텔 명령어 세트 메뉴얼은 다음의 설명을 가지고
는 소스 피연산자에서 단 정밀도 부동 소수점 값을 충전 여섯이 대상 피연산자의 부호 더블 워드 정수 16 개의 변환.
변환이 정확하지 않은 경우, 반환되는 값은 에 따라 반올림되어 MXCSR 레지스터의 반올림 제어 비트 또는 반올림 제어 비트가 포함됩니다. 변환 된 결과를 대상 형식 인 으로 표현할 수없는 경우 부동 소수점 유효하지 않은 예외는 이고이 예외가 마스크되면 정수 값 2w - 1은 이 반환됩니다. 여기서 w는 대상의 비트 수를 나타냅니다. 형식
소스 피연산자는 256분의 512/128 비트 메모리 위치, 또는 32 비트의 메모리 위치에서 중계 512/128분의 256 비트이 벡터 ZMM/YMM/XMM 레지스터이다. 대상 피연산자는 조건부로 쓰기 마스크 k1로 업데이트 된 ZMM/YMM/XMM 레지스터 입니다.
AVX-512 명령어를 지원하는 프로세서를 사용하는 경우 매우 질투합니다. –
분명히 NDISASM은 다른 opcode에 대해 동일한 디스 어셈블리를 제공하기 때문에 최소한 NDISASM에는 제한이 있어야하고 AVX512를 지원한다고 주장하면 버그가 있어야합니다. 나는 이것에 @CodyGray와 함께있다. –
@CodyGray 질투 할 필요가 없습니다. 비록 내가 몇 가지 상상의 것들을 소유하고 있지만 ... – HJLebbink