F16C

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

 역사 
2009년 5월 1일 AMD가 발표한 CVT16 명령어 집합은 X86 및 AMD64 명령어 집합의 128비트 스트리밍 SIMD 확장 코어 명령어의 확장이다.

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

최근 문서에서는 인텔과 AMD의 X86-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 

 AMD:
 재규어 (마이크로아키텍처)-기반 프로세서
 푸마 (마이크로아키텍처)-기반 프로세서
 "헤비 이큅먼트" 프로세서
 파일드라이버 (마이크로아키텍처)-기반 프로세서, 2012년 4분기
 스팀롤러 (마이크로아키텍처)-기반 프로세서, 2014년 1분기
 엑스카베이터 (마이크로아키텍처)-기반 프로세서, 2015년 2분기
 젠 (마이크로아키텍처)-기반 프로세서, 2017년 1분기 및 이후
 인텔:
 아이비브리지 (마이크로아키텍처) 프로세서 및 이후

 각주 

 외부 링크 
 New Bulldozer and Piledriver Instructions  
 DirectX math F16C and FMA  
 AMD64 Architecture Programmer's Manual Volume 1  
 AMD64 Architecture Programmer's Manual Volume 2 
 AMD64 Architecture Programmer's Manual Volume 3  
 AMD64 Architecture Programmer's Manual Volume 4  
 AMD64 Architecture Programmer's Manual Volume 5  
 IA32 Architectures Software Developer Manual 

분류:X86 명령어
분류:AMD 기술