F16C

F16C (früher a​uch CVT16) bezeichnet e​ine Befehlssatzerweiterung für Mikroprozessoren v​on Intel u​nd AMD z​ur leichteren Umrechnung v​on Gleitkommazahlen unterschiedlicher Präzision.[1]

Geschichte

Am 1. Mai 2009 w​urde diese Befehlssatzerweiterung v​on AMD u​nter dem Namen CVT16 angekündigt. Sie stellt i​n überarbeiteter Form einige Befehle d​er SSE5-Erweiterung z​ur Verfügung u​nd fungiert a​ls Bindeglied z​u Intels AVX-Erweiterung. Seit 2012 werden d​iese Befehle a​uch von Intel verwendet.[2]

Funktion

Die Befehlssatzerweiterung erleichtert d​as Konvertieren v​on Gleitkommazahlen halber Genauigkeit (16 Bit) i​n Gleitkommazahlen einfacher Genauigkeit (32 Bit) u​nd umgekehrt, w​omit auch e​ine Verlagerung v​on XMM-Registern i​n YMM-Register verbunden ist.[3]

Technische Information

Es gibt Varianten des Befehlssatzes, die vier Gleitkommawerte in ein XMM-Register oder acht Gleitkommawerte in ein XMM-Register und ein YMM-Register verschieben. Die Befehlsnamen VCVTPH2PS und VCVTPS2PH sind Kürzel für "vector convert packed half to packed single", (Vektorumwandlung halb gepackt nach einfach gepackt) und umgekehrt.

  • VCVTPH2PS xmmreg,xmmrm64 wandelt vier Gleitkommawerte halber Genauigkeit im Speicher oder in der unteren Hälfte eines XMM-Registers in vier Gleitkommawerte einfacher Genauigkeit in einem XMM-Register.
  • VCVTPH2PS ymmreg,xmmrm128 wandelt acht Gleitkommawerte halber Genauigkeit im Speicher oder einem XMM-Registers (der unteren Hälfte eines YMM-Registers) in acht Gleitkommawerte einfacher Genauigkeit eines YMM-Registers.
  • VCVTPS2PH xmmrm64,xmmreg,imm8 wandelt vier Gleitkommawerte einfacher Genauigkeit in einem XMM-Register in Gleitkommawerte halber Genauigkeit im Speicher oder der unteren Hälfte eines XMM-Registers.
  • VCVTPS2PH xmmrm128,ymmreg,imm8 wandelt acht Gleitkommawerte einfacher Genauigkeit in einem YMM-Register in Gleitkommawerte halber Genauigkeit im Speicher oder der unteren Hälfte eines XMM-Registers.

Das unmittelbare 8-bit-Argument imm8 bei VCVTPS2PH gibt die Form der Abrundung vor. Die Werte '0' - '4' legen die Rundungform fest (Nächster Wert / abrunden / aufrunden / löschen). Dadurch wird auch der Modus für MXCSR.RC vorgegeben. Das Bit 29 des Registers ECX zeigt die Unterstützung für diese Befehle nach Abfrage durch CPUID mit EAX=1 an.


Einzelnachweise

  1. Chuck Walbourn: DirectXMath: F16C and FMA. In: Microsoft Developer Network. 11. September 2012, abgerufen am 11. Januar 2017.
  2. R. L. Uy: Beyond multi-core: A survey of architectural innovations on microprocessor. In: 2014 International Conference on Humanoid, Nanotechnology, Information Technology, Communication and Control, Environment and Management (HNICEM). 1. November 2014, S. 1–6, doi:10.1109/HNICEM.2014.7016212.
  3. Daniel Kusswurm: Modern X86 Assembly Language Programming. Apress, 2014, ISBN 978-1-4842-0064-3, S. 342 ff., doi:10.1007/978-1-4842-0064-3.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.