본문으로 이동

F16C

위키백과, 우리 모두의 백과사전.

F16C[1](이전/비공식적으로 CVT16으로 알려짐) 명령어 집합은 반정밀도와 표준 IEEE 단정밀도 부동소수점 형식 간의 변환을 지원하는 X86 명령어 집합 확장이다.

역사

[편집]

2009년 5월 1일 AMD가 발표한 CVT16 명령어 집합[2]X86AMD64 명령어 집합의 128비트 스트리밍 SIMD 확장 코어 명령어의 확장이다.

CVT16은 2007년 8월 30일에 발표된 SSE5 명령어 집합 제안의 일부를 수정한 것으로, XOP 명령어 집합FMA 명령어 집합으로 보완된다. 이 수정은 제안된 새 명령어의 이진 코딩을 인텔고급 벡터 확장 명령어 확장과 더 호환되도록 만들었으며, 명령어의 기능은 변경되지 않았다.

최근 문서에서는 인텔AMDX86-64 아키텍처 사양 모두에서 F16C라는 이름이 공식적으로 사용된다.

기술 정보

[편집]

XMM 레지스터의 4개 부동소수점 값 또는 YMM 레지스터의 8개 부동소수점 값을 변환하는 변형이 있다.

이 명령어는 "팩 반정밀도를 팩 단정밀도로 벡터 변환"과 그 반대의 약어이다.

  • VCVTPH2PS xmmreg,xmmrm64 – 메모리 또는 XMM 레지스터의 하위 절반에 있는 4개의 반정밀도 부동소수점 값을 XMM 레지스터의 4개 단정밀도 부동소수점 값으로 변환한다.
  • VCVTPH2PS ymmreg,xmmrm128 – 메모리 또는 XMM 레지스터(YMM 레지스터의 하위 절반)에 있는 8개의 반정밀도 부동소수점 값을 YMM 레지스터의 8개 단정밀도 부동소수점 값으로 변환한다.
  • VCVTPS2PH xmmrm64,xmmreg,imm8 – XMM 레지스터의 4개 단정밀도 부동소수점 값을 메모리 또는 XMM 레지스터의 하위 절반에 있는 반정밀도 부동소수점 값으로 변환한다.
  • VCVTPS2PH xmmrm128,ymmreg,imm8 – YMM 레지스터의 8개 단정밀도 부동소수점 값을 메모리 또는 XMM 레지스터에 있는 반정밀도 부동소수점 값으로 변환한다.

VCVTPS2PH의 8비트 즉시 인수는 반올림 모드를 선택한다. 값 0-4는 가장 가까운 값, 내림, 올림, 잘라내기, MXCSR.RC에 설정된 모드를 선택한다.

이 명령어에 대한 지원은 CPUID (EAX=1) 후 ECX의 비트 29로 표시된다.

F16C를 지원하는 CPU

[편집]

각주

[편집]
  1. Chuck Walbourn (2012년 9월 11일). “DirectXMath: F16C and FMA”. 
  2. “128-Bit and 256-Bit XOP, FMA4 and CVT16 Instructions” (PDF). 《AMD64 Architecture Programmer's Manual》 6. 2009년 5월 1일. 2009년 5월 20일에 원본 문서 (PDF)에서 보존된 문서. 2022년 7월 5일에 확인함. 
  3. 《New "Bulldozer" and "Piledriver" Instructions》 (PDF), AMD, October 2012 

외부 링크

[편집]