Ich versuche, die spezifische AVX512F Anweisung vcvtps2udq zu verstehen.Wie funktioniert der AVX512-Rundungsmodus (oder ist NDISASM einfach verwirrt)?
Die Signatur des Befehls lautet VCVTPS2UDQ zmm1 {k1}{z}, zmm2/m512/m32bcst{er}
. Die manuelle Information ist unten.
In einem Versuch, die neuen Rundungsmoden zu verstehen, wird der folgende Code-Schnipsel mit NASM montiert (2.12.02)
vcvtps2udq zmm0,zmm1
vcvtps2udq zmm0,zmm1,{rz-sae}
vcvtps2udq xmm0,xmm1
Deassemblierung die Ergebnisse mit NDISASM (2.12.02) gibt eine Menge Verwirrung und die folgenden Codes:
62F17C4879C1 vcvtps2udq zmm0,zmm1
62F17C7879C1 vcvtps2udq xmm0,xmm1
62F17C0879C1 vcvtps2udq xmm0,xmm1
Frage: die zweite Leitung mit XMM-Register anstelle eines ZMM-Register (die ich erwartet hätte) deassembled. Hat der Null-Rundungs-Modus (rz-sae) etwas damit zu tun. Oder ist nur NDISASM falsch und kann nicht zwischen Opcodes 62F17C7879C1 und 62F17C0879C1 unterscheiden.
Das Intel-Befehlssatz-Referenzhandbuch hat die folgende Beschreibung:
Wandelt sechzehn einfache Genauigkeit Gleitkommawerte im Quelloperand verpackenden unsignierten ganzen Zahlen in dem Doppelwort Zieloperand sechzehn.
Wenn eine Konvertierung ungenau ist, wird der zurückgegebene Wert gemäß zu den Rundungssteuerungsbits im MXCSR-Register oder den eingebetteten Rundungssteuerungsbits gerundet. Wenn ein konvertiertes Ergebnis nicht im Zielformat dargestellt werden kann, wird die ungültige Gleitkommaausnahme ausgelöst, und wenn diese Ausnahme maskiert ist, wird der Ganzzahlwert 2w-1 zurückgegeben, wobei w die Anzahl der Bits im Ziel darstellt Format.
Der Quelloperand ist ein ZMM/YMM/XMM-Register, ein 512/256/128-Bit-Speicher Lage oder eine von einem 32-Bit-Speicher übertragen 512/256/128-Bit-Vektor Lage. Der Zieloperand ist ein ZMM/YMM/XMM-Register , bedingt aktualisiert mit der Schreibmaske k1.
Wenn Sie einen Prozessor haben, der AVX-512-Anweisungen unterstützt, bin ich massiv eifersüchtig. –
Offensichtlich gibt NDISASM die gleiche Disassemblierung für verschiedene Opcodes, daher muss zumindest eine Einschränkung in NDISASM bestehen und ein Fehler, wenn er behauptet, AVX512 zu unterstützen. Ich bin bei @CodyGray dabei. –
@CodyGray Keine Notwendigkeit, eifersüchtig zu sein; obwohl ich mehrere imaginäre habe ... – HJLebbink