F16C (früher auch CVT16) bezeichnet eine Befehlssatzerweiterung für Mikroprozessoren von Intel und AMD zur leichteren Umrechnung von Gleitkommazahlen unterschiedlicher Präzision.
Am 1. Mai 2009 wurde diese Befehlssatzerweiterung von AMD unter dem Namen CVT16 angekündigt. Sie stellt in überarbeiteter Form einige Befehle der SSE5-Erweiterung zur Verfügung und fungiert als Bindeglied zu Intels AVX-Erweiterung. Seit 2012 werden diese Befehle auch von Intel verwendet.
Die Befehlssatzerweiterung erleichtert das Konvertieren von Gleitkommazahlen halber Genauigkeit (16 Bit) in Gleitkommazahlen einfacher Genauigkeit (32 Bit) und umgekehrt, womit auch eine Verlagerung von XMM-Registern in YMM-Register verbunden ist.
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.
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.