Startseite › x64-Assembler-Referenz › Mnemonik-Familienübersichten Hilfe zum PBXB64-Compiler

AVX/AVX2/AVX-512/FMA-Mnemonik

PBXB64 unterstützt AVX- (VEX-kodiert), AVX2-, AVX-512- (EVEX-kodiert) und FMA-Anweisungen. AVX-Anweisungen verwenden eine 3-Operanden-Syntax mit einem nicht destruktiven Ziel.

Kategorie: Mnemonik-Familienübersichten

Beschreibung

PBXB64 unterstützt AVX- (VEX-kodiert), AVX2-, AVX-512- (EVEX-kodiert) und FMA-Anweisungen. AVX-Anweisungen verwenden eine 3-Operanden-Syntax mit einem nicht destruktiven Ziel.

Notiz:AVX-512-Mnemoniken verwenden das EVEX-Präfix und unterstützen Opmask-Register (k0-k7). Der Assembler akzeptiert sowohl Standard-Mnemoniken als auch AVX-512-Varianten (z. B.VADDPSUndVADDPSZ).

AVX – Gleitkomma-Arithmetik

GedächtnisstützeBeschreibungOperanden
VADDPSGepackte Single hinzufügen (128/256)ymm/xmm, ymm/xmm, ymm/mem
VADDPDDoppelpack hinzufügen (128/256)ymm/xmm, ymm/xmm, ymm/mem
VADDSSSkalare Single hinzufügenxmm, xmm, xmm/Speicher
VADDSDSkalardoppel hinzufügenxmm, xmm, xmm/Speicher
VSUBPSGepackte Single subtrahierenymm/xmm, ymm/xmm, ymm/mem
VSUBPDSubtrahieren Sie das gepackte Doppelymm/xmm, ymm/xmm, ymm/mem
VSUBSSSubtrahieren Sie den Skalar einzelnxmm, xmm, xmm/Speicher
VSUBSDSubtrahiere das Skalardoppelxmm, xmm, xmm/Speicher
VMULPSMehrfach gepackte Singleymm/xmm, ymm/xmm, ymm/mem
VMULPDMehrfach gepacktes Doppeltesymm/xmm, ymm/xmm, ymm/mem
VMULSSSkalar-Single multiplizierenxmm, xmm, xmm/Speicher
VMULSDSkalar mit dem Doppelten multiplizierenxmm, xmm, xmm/Speicher
VDIVPSTeilweise einzeln verpacktymm/xmm, ymm/xmm, ymm/mem
VDIVPDDoppelt verpackt teilenymm/xmm, ymm/xmm, ymm/mem
VDIVSSTeilen Sie den Skalar einfachxmm, xmm, xmm/Speicher
VDIVSDTeilen Sie den Skalar durch das Doppeltexmm, xmm, xmm/Speicher
VSQRTPSQuadratwurzelgepackte Singleymm/xmm, ymm/xmm, ymm/mem
VSQRTPDQuadratwurzel doppelt gepacktymm/xmm, ymm/xmm, ymm/mem
VSQRTSSQuadratwurzel-Skalar-Singlexmm, xmm, xmm/Speicher
VSQRTSDQuadratwurzel-Skalar-Doublexmm, xmm, xmm/Speicher
VRCPPSGegenseitig verpackte Single (ungefähr)ymm/xmm, ymm/xmm, ymm/mem
VRCPSSReziproker Skalar Single (ungefähr)xmm, xmm, xmm/Speicher
VRSQRTPSReziproke quadratisch gepackte Single (ungefähr)ymm/xmm, ymm/xmm, ymm/mem
VRSQRTSSReziproker quadratischer Skalar einzeln (ungefähr)xmm, xmm, xmm/Speicher
VMAXPSMaximal gepacktes Einzelstückymm/xmm, ymm/xmm, ymm/mem
VMAXPDMaximal doppelt bepacktymm/xmm, ymm/xmm, ymm/mem
VMAXSSMaximaler Skalar-Singlexmm, xmm, xmm/Speicher
VMAXSDMaximales Skalar-Doublexmm, xmm, xmm/Speicher
VMINPSMindestens einzeln verpacktymm/xmm, ymm/xmm, ymm/mem
VMINPDMindestens doppelt verpacktymm/xmm, ymm/xmm, ymm/mem
VMINSSMinimaler Skalar-Singlexmm, xmm, xmm/Speicher
VMINSDMinimales Skalardoppelxmm, xmm, xmm/Speicher
VROUNDPSRund verpackte Singleymm/xmm, ymm/mem, imm8
VROUNDPDRund verpackt, doppeltymm/xmm, ymm/mem, imm8
VROUNDSSRunde Skalar-Singlexmm, xmm/mem, imm8
VROUNDSDRundes Skalardoppelxmm, xmm/mem, imm8

AVX – Datenbewegung

GedächtnisstützeBeschreibungOperanden
VMOVAPSVerschieben Sie ausgerichtete verpackte Einzelstückeymm/xmm, mem / mem, ymm/xmm
VMOVUPSMove unaligned packed singleymm/xmm, mem / mem, ymm/xmm
VMOVAPDMove aligned packed doubleymm/xmm, mem / mem, ymm/xmm
VMOVUPDMove unaligned packed doubleymm/xmm, mem / mem, ymm/xmm
VMOVSSMove scalar singlexmm, xmm/mem / mem32, xmm
VMOVSDMove scalar doublexmm, xmm/mem / mem64, xmm
VMOVDMove doubleword to/from XMMxmm, reg/mem / reg, xmm
VMOVQMove quadword to/from XMMxmm, reg/mem / reg, xmm
VMOVDQAMove aligned double quadwordymm/xmm, mem / mem, ymm/xmm
VMOVDQUMove unaligned double quadwordymm/xmm, mem / mem, ymm/xmm
VMOVLPSMove low packed single (64-bit)xmm, xmm, mem64 / mem64, xmm
VMOVHPSMove high packed singlexmm, xmm, mem64 / mem64, xmm
VMOVLPDMove low packed doublexmm, xmm, mem64 / mem64, xmm
VMOVHPDMove high packed doublexmm, xmm, mem64 / mem64, xmm
VMOVSHDUPMove and duplicate high singlesymm/xmm, ymm/mem
VMOVSLDUPMove and duplicate low singlesymm/xmm, ymm/mem
VMOVDDUPMove and duplicate one doubleymm/xmm, ymm/mem
VBROADCASTSSBroadcast single to all elementsymm/xmm, mem32
VBROADCASTSDBroadcast double to all elementsymm, mem64
VBROADCASTF128Broadcast 128-bit to all lanesymm, mem128

AVX — Logical & Comparison

GedächtnisstützeBeschreibungOperanden
VANDPSBitwise AND of packed singlesymm/xmm, ymm/xmm, ymm/mem
VANDPDBitwise AND of packed doublesymm/xmm, ymm/xmm, ymm/mem
VANDNPSBitwise AND-NOT of packed singlesymm/xmm, ymm/xmm, ymm/mem
VANDNPDBitwise AND-NOT of packed doublesymm/xmm, ymm/xmm, ymm/mem
VORPSBitwise OR of packed singlesymm/xmm, ymm/xmm, ymm/mem
VORPDBitwise OR of packed doublesymm/xmm, ymm/xmm, ymm/mem
VXORPSBitwise XOR of packed singlesymm/xmm, ymm/xmm, ymm/mem
VXORPDBitwise XOR of packed doublesymm/xmm, ymm/xmm, ymm/mem
VCMPPSCompare packed single (imm8)ymm/xmm, ymm/xmm, ymm/mem, imm8
VCMPPDCompare packed double (imm8)ymm/xmm, ymm/xmm, ymm/mem, imm8
VCMPSSCompare scalar single (imm8)xmm, xmm, xmm/mem, imm8
VCMPSDCompare scalar double (imm8)xmm, xmm, xmm/mem, imm8
VCOMISSCompare ordered scalar single (flags)xmm, xmm/mem
VCOMISDCompare ordered scalar double (flags)xmm, xmm/mem
VUCOMISSCompare unordered scalar single (flags)xmm, xmm/mem
VUCOMISDCompare unordered scalar double (flags)xmm, xmm/mem
VTESTPSTest packed single (sets ZF/CF)ymm/xmm, ymm/xmm
VTESTPDTest packed double (sets ZF/CF)ymm/xmm, ymm/xmm
VPTESTLogical compare of integers (sets ZF/CF)ymm/xmm, ymm/mem

AVX — Shuffle / Permute

GedächtnisstützeBeschreibungOperanden
VSHUFPSShuffle packed singleymm/xmm, ymm/xmm, ymm/mem, imm8
VSHUFPDShuffle packed doubleymm/xmm, ymm/xmm, ymm/mem, imm8
VPERMILPSPermute in-lane packed singleymm/xmm, ymm/mem, imm8
VPERMILPDPermute in-lane packed doubleymm/xmm, ymm/mem, imm8
VPERM2F128Permute 128-bit lanesymm, ymm, ymm/mem, imm8
VUNPCKHPSUnpack high packed singleymm/xmm, ymm/xmm, ymm/mem
VUNPCKLPSUnpack low packed singleymm/xmm, ymm/xmm, ymm/mem
VUNPCKHPDUnpack high packed doubleymm/xmm, ymm/xmm, ymm/mem
VUNPCKLPDUnpack low packed doubleymm/xmm, ymm/xmm, ymm/mem

AVX — Integer Operations

GedächtnisstützeBeschreibungOperanden
VPADDBAdd packed bytesymm/xmm, ymm/xmm, ymm/mem
VPADDWAdd packed wordsymm/xmm, ymm/xmm, ymm/mem
VPADDDAdd packed doublewordsymm/xmm, ymm/xmm, ymm/mem
VPADDQAdd packed quadwordsymm/xmm, ymm/xmm, ymm/mem
VPSUBBSubtract packed bytesymm/xmm, ymm/xmm, ymm/mem
VPSUBWSubtract packed wordsymm/xmm, ymm/xmm, ymm/mem
VPSUBDSubtract packed doublewordsymm/xmm, ymm/xmm, ymm/mem
VPSUBQSubtract packed quadwordsymm/xmm, ymm/xmm, ymm/mem
VPANDBitwise ANDymm/xmm, ymm/xmm, ymm/mem
VPANDNBitwise AND-NOTymm/xmm, ymm/xmm, ymm/mem
VPORBitwise ORymm/xmm, ymm/xmm, ymm/mem
VPXORBitwise XORymm/xmm, ymm/xmm, ymm/mem
VPSLLWShift left logical wordsymm/xmm, xmm/mem, imm8
VPSLLDShift left logical doublewordsymm/xmm, xmm/mem, imm8
VPSLLQShift left logical quadwordsymm/xmm, xmm/mem, imm8
VPSRLWShift right logical wordsymm/xmm, xmm/mem, imm8
VPSRLDShift right logical doublewordsymm/xmm, xmm/mem, imm8
VPSRLQShift right logical quadwordsymm/xmm, xmm/mem, imm8
VPSRAWShift right arithmetic wordsymm/xmm, xmm/mem, imm8
VPSRADShift right arithmetic doublewordsymm/xmm, xmm/mem, imm8
VPMULLWMultiply packed words (low)ymm/xmm, ymm/xmm, ymm/mem
VPMULLDMultiply packed doublewords (low)ymm/xmm, ymm/xmm, ymm/mem
VPMULHWMultiply packed words (high)ymm/xmm, ymm/xmm, ymm/mem
VPMULHUWMultiply packed words (high, unsigned)ymm/xmm, ymm/xmm, ymm/mem
VPMULUDQMultiply unsigned dword to qwordymm/xmm, ymm/xmm, ymm/mem
VPMULDQMultiply signed dword to qwordymm/xmm, ymm/xmm, ymm/mem
VPMADDUBSWMultiply unsigned bytes, add adjacent, saturateymm/xmm, ymm/xmm, ymm/mem
VPMADDWDMultiply and add words to doublewordsymm/xmm, ymm/xmm, ymm/mem
VPSADBWSum of absolute differencesymm/xmm, ymm/xmm, ymm/mem

AVX — Convert Instructions

GedächtnisstützeBeschreibungOperanden
VCVTPD2PSConvert packed double to singleymm/xmm, ymm/xmm/mem
VCVTPS2PDConvert packed single to doubleymm/xmm, ymm/xmm/mem
VCVTSD2SSConvert scalar double to singlexmm, xmm, xmm/Speicher
VCVTSS2SDConvert scalar single to doublexmm, xmm, xmm/Speicher
VCVTDQ2PDConvert packed dword to doubleymm/xmm, xmm/mem
VCVTPD2DQConvert packed double to dwordymm/xmm, ymm/xmm/mem
VCVTDQ2PSConvert packed dword to singleymm/xmm, ymm/mem
VCVTPS2DQConvert packed single to dwordymm/xmm, ymm/mem
VCVTTPD2DQTruncate packed double to dwordymm/xmm, ymm/mem
VCVTTPS2DQTruncate packed single to dwordymm/xmm, ymm/mem
VCVTTSD2SITruncate scalar double to integerreg, xmm/mem
VCVTTSS2SITruncate scalar single to integerreg, xmm/mem
VCVTSI2SDConvert integer to scalar doublexmm, xmm, reg/mem
VCVTSI2SSConvert integer to scalar singlexmm, xmm, reg/mem
VCVTSD2SIConvert scalar double to integerreg, xmm/mem
VCVTSS2SIConvert scalar single to integerreg, xmm/mem
VCVTPS2PHConvert packed single to half precisionxmm/mem, ymm/xmm, imm8
VCPH2PSConvert half precision to packed singleymm/xmm, xmm/mem

AVX — Blend / Select / Horizontal

GedächtnisstützeBeschreibungOperanden
VBLENDPSBlend packed single (imm8)ymm/xmm, ymm/xmm, ymm/mem, imm8
VBLENDPDBlend packed double (imm8)ymm/xmm, ymm/xmm, ymm/mem, imm8
VBLENDVPSVariable blend packed singleymm/xmm, ymm/xmm, ymm/mem
VBLENDVPDVariable blend packed doubleymm/xmm, ymm/xmm, ymm/mem
VPBLENDVBVariable blend packed bytesymm/xmm, ymm/xmm, ymm/mem
VPBLENDWBlend packed words (imm8)ymm/xmm, ymm/xmm, ymm/mem, imm8
VDPPSDot product packed single (imm8)ymm/xmm, ymm/xmm, ymm/mem, imm8
VDPPDDot product packed double (imm8)xmm, xmm, xmm/mem, imm8
VHADDPSHorizontal add packed singleymm/xmm, ymm/xmm, ymm/mem
VHADDPDHorizontal add packed doubleymm/xmm, ymm/xmm, ymm/mem
VHSUBPSHorizontal subtract packed singleymm/xmm, ymm/xmm, ymm/mem
VHSUBPDHorizontal subtract packed doubleymm/xmm, ymm/xmm, ymm/mem
VADDSUBPSAdd/subtract alternating packed singleymm/xmm, ymm/xmm, ymm/mem
VADDSUBPDAdd/subtract alternating packed doubleymm/xmm, ymm/xmm, ymm/mem

AVX2

GedächtnisstützeBeschreibungOperanden
VPBROADCASTBBroadcast byte to all elementsymm/xmm, reg/mem
VPBROADCASTWBroadcast word to all elementsymm/xmm, reg/mem
VPBROADCASTDBroadcast dword to all elementsymm/xmm, reg/mem
VPBROADCASTQBroadcast qword to all elementsymm/xmm, reg/mem
VBROADCASTI128Broadcast 128-bit to all lanesymm, mem128
VPERM2I128Permute 128-bit integer lanesymm, ymm, ymm/mem, imm8
VPERMDPermute doublewordsymm, ymm, ymm/mem
VPERMPDPermute double-precision floatsymm, ymm, ymm/mem, imm8
VPERMPSPermute single-precision floatsymm, ymm, ymm/mem
VPERMQPermute quadwordsymm, ymm/mem, imm8
VPERMIL2PSTwo-source permute of singlesymm/xmm, ymm/xmm, ymm/mem, imm4
VPERMIL2PDTwo-source permute of doublesymm/xmm, ymm/xmm, ymm/mem, imm4
VGATHERDPDGather double with dword indicesymm/xmm, mem, ymm/xmm
VGATHERQPDGather double with qword indicesymm/xmm, mem, ymm/xmm
VGATHERDPSGather single with dword indicesymm/xmm, mem, ymm/xmm
VGATHERQPSGather single with qword indicesymm/xmm, mem, ymm/xmm
VPGATHERDDGather dwords with dword indicesymm/xmm, mem, ymm/xmm
VPGATHERDQGather dwords with qword indicesymm/xmm, mem, ymm/xmm
VPGATHERQDGather qwords with dword indicesymm/xmm, mem, ymm/xmm
VPGATHERQQGather qwords with qword indicesymm/xmm, mem, ymm/xmm
VPMASKMOVDMasked move of dwordsymm/xmm, ymm/xmm, mem
VPMASKMOVQMasked move of qwordsymm/xmm, ymm/xmm, mem
VPSLLVDVariable shift left logical dwordsymm/xmm, ymm/xmm, ymm/mem
VPSLLVQVariable shift left logical qwordsymm/xmm, ymm/xmm, ymm/mem
VPSRLVDVariable shift right logical dwordsymm/xmm, ymm/xmm, ymm/mem
VPSRLVQVariable shift right logical qwordsymm/xmm, ymm/xmm, ymm/mem
VPSRAVDVariable shift right arith dwordsymm/xmm, ymm/xmm, ymm/mem
VPMOVSXBWSign-extend bytes to wordsymm/xmm, xmm/mem
VPMOVSXBDSign-extend bytes to dwordsymm/xmm, xmm/mem
VPMOVSXBQSign-extend bytes to qwordsymm/xmm, xmm/mem
VPMOVSXWDSign-extend words to dwordsymm/xmm, xmm/mem
VPMOVSXWQSign-extend words to qwordsymm/xmm, xmm/mem
VPMOVSXDQSign-extend dwords to qwordsymm/xmm, xmm/mem
VPMOVZXBWZero-extend bytes to wordsymm/xmm, xmm/mem
VPMOVZXBDZero-extend bytes to dwordsymm/xmm, xmm/mem
VPMOVZXBQZero-extend bytes to qwordsymm/xmm, xmm/mem
VPMOVZXWDZero-extend words to dwordsymm/xmm, xmm/mem
VPMOVZXWQZero-extend words to qwordsymm/xmm, xmm/mem
VPMOVZXDQZero-extend dwords to qwordsymm/xmm, xmm/mem
VPSHUFBShuffle packed bytes (per-lane)ymm/xmm, ymm/xmm, ymm/mem
VPSHUFDShuffle packed dwords (per-lane, imm8)ymm/xmm, ymm/mem, imm8
VPSHUFHWShuffle packed high words (imm8)ymm/xmm, ymm/mem, imm8
VPSHUFLWShuffle packed low words (imm8)ymm/xmm, ymm/mem, imm8
VPABSBAbsolute value of bytesymm/xmm, ymm/mem
VPABSWAbsolute value of wordsymm/xmm, ymm/mem
VPABSDAbsolute value of dwordsymm/xmm, ymm/mem
VPMAXSBMaximum of signed bytesymm/xmm, ymm/xmm, ymm/mem
VPMAXSWMaximum of signed wordsymm/xmm, ymm/xmm, ymm/mem
VPMAXSDMaximum of signed dwordsymm/xmm, ymm/xmm, ymm/mem
VPMAXUBMaximum of unsigned bytesymm/xmm, ymm/xmm, ymm/mem
VPMAXUWMaximum of unsigned wordsymm/xmm, ymm/xmm, ymm/mem
VPMAXUDMaximum of unsigned dwordsymm/xmm, ymm/xmm, ymm/mem
VPMINSBMinimum of signed bytesymm/xmm, ymm/xmm, ymm/mem
VPMINSWMinimum of signed wordsymm/xmm, ymm/xmm, ymm/mem
VPMINSDMinimum of signed dwordsymm/xmm, ymm/xmm, ymm/mem
VPMINUBMinimum of unsigned bytesymm/xmm, ymm/xmm, ymm/mem
VPMINUWMinimum of unsigned wordsymm/xmm, ymm/xmm, ymm/mem
VPMINUDMinimum of unsigned dwordsymm/xmm, ymm/xmm, ymm/mem
VPINSRBInsert bytexmm, xmm, reg/mem, imm8
VPINSRDInsert dwordxmm, xmm, reg/mem, imm8
VPINSRQInsert qwordxmm, xmm, reg/mem, imm8
VPEXTRBExtract bytereg/mem, xmm, imm8
VPEXTRDExtract dwordreg/mem, xmm, imm8
VPEXTRQExtract qwordreg/mem, xmm, imm8
VPMOVMSKBMove byte mask to GPRreg, ymm/xmm
VPHADDWHorizontal add wordsymm/xmm, ymm/xmm, ymm/mem
VPHADDDHorizontal add dwordsymm/xmm, ymm/xmm, ymm/mem
VPHADDSWHorizontal add words with saturationymm/xmm, ymm/xmm, ymm/mem
VPHSUBWHorizontal subtract wordsymm/xmm, ymm/xmm, ymm/mem
VPHSUBDHorizontal subtract dwordsymm/xmm, ymm/xmm, ymm/mem
VPHSUBSWHorizontal subtract words with saturationymm/xmm, ymm/xmm, ymm/mem
VPMULHRSWMultiply high with round and scaleymm/xmm, ymm/xmm, ymm/mem
VPSIGNBSign of bytesymm/xmm, ymm/xmm, ymm/mem
VPSIGNWSign of wordsymm/xmm, ymm/xmm, ymm/mem
VPSIGNDSign of dwordsymm/xmm, ymm/xmm, ymm/mem
VPALIGNRAlign right (concatenate and shift, imm8)ymm/xmm, ymm/xmm, ymm/mem, imm8
VPCMPEQBCompare bytes for equalityymm/xmm, ymm/xmm, ymm/mem
VPCMPEQWCompare words for equalityymm/xmm, ymm/xmm, ymm/mem
VPCMPEQDCompare dwords for equalityymm/xmm, ymm/xmm, ymm/mem
VPCMPEQQCompare qwords for equalityymm/xmm, ymm/xmm, ymm/mem
VPCMPGTBCompare bytes for greater thanymm/xmm, ymm/xmm, ymm/mem
VPCMPGTWCompare words for greater thanymm/xmm, ymm/xmm, ymm/mem
VPCMPGTDCompare dwords for greater thanymm/xmm, ymm/xmm, ymm/mem
VPCMPGTQCompare qwords for greater thanymm/xmm, ymm/xmm, ymm/mem
VINSERTI128Insert 128-bit integer lane (imm8)ymm, ymm, xmm/mem, imm8
VEXTRACTI128Extract 128-bit integer lane (imm8)xmm/mem, ymm, imm8
VINSERTF128Insert 128-bit float lane (imm8)ymm, ymm, xmm/mem, imm8
VEXTRACTF128Extract 128-bit float lane (imm8)xmm/mem, ymm, imm8

FMA — Fused Multiply-Add

GedächtnisstützeBeschreibungOperanden
VFMADD132PSFMA: a*b+c (single, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMADD213PSFMA: a*b+c (single, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMADD231PSFMA: a*b+c (single, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMADD132PDFMA: a*b+c (double, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMADD213PDFMA: a*b+c (double, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMADD231PDFMA: a*b+c (double, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMADD132SSFMA: a*b+c (single, scalar)xmm, xmm, xmm/Speicher
VFMADD213SSFMA: a*b+c (single, scalar)xmm, xmm, xmm/Speicher
VFMADD231SSFMA: a*b+c (single, scalar)xmm, xmm, xmm/Speicher
VFMADD132SDFMA: a*b+c (double, scalar)xmm, xmm, xmm/Speicher
VFMADD213SDFMA: a*b+c (double, scalar)xmm, xmm, xmm/Speicher
VFMADD231SDFMA: a*b+c (double, scalar)xmm, xmm, xmm/Speicher
VFMSUB132PSFMA: a*b-c (single, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMSUB213PSFMA: a*b-c (single, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMSUB231PSFMA: a*b-c (single, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMSUB132PDFMA: a*b-c (double, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMSUB213PDFMA: a*b-c (double, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMSUB231PDFMA: a*b-c (double, packed)ymm/xmm, ymm/xmm, ymm/mem
VFMSUB132SSFMA: a*b-c (single, scalar)xmm, xmm, xmm/Speicher
VFMSUB213SSFMA: a*b-c (single, scalar)xmm, xmm, xmm/Speicher
VFMSUB231SSFMA: a*b-c (single, scalar)xmm, xmm, xmm/Speicher
VFMSUB132SDFMA: a*b-c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFMSUB213SDFMA: a*b-c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFMSUB231SDFMA: a*b-c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFMADDSUB132PSFMA: a*b+c / a*b-c (abwechselnd, einzeln gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFMADDSUB213PSFMA: a*b+c / a*b-c (abwechselnd, einzeln gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFMADDSUB231PSFMA: a*b+c / a*b-c (abwechselnd, einzeln gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFMADDSUB132PDFMA: a*b+c / a*b-c (alternierend, doppelt gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFMADDSUB213PDFMA: a*b+c / a*b-c (alternierend, doppelt gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFMADDSUB231PDFMA: a*b+c / a*b-c (alternierend, doppelt gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMADD132PSFMA: -(a*b)+c (einzeln, verpackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMADD213PSFMA: -(a*b)+c (einzeln, verpackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMADD231PSFMA: -(a*b)+c (einzeln, verpackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMADD132PDFMA: -(a*b)+c (doppelt, gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMADD213PDFMA: -(a*b)+c (doppelt, gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMADD231PDFMA: -(a*b)+c (doppelt, gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMADD132SSFMA: -(a*b)+c (einzeln, skalar)xmm, xmm, xmm/Speicher
VFNMADD213SSFMA: -(a*b)+c (einzeln, skalar)xmm, xmm, xmm/Speicher
VFNMADD231SSFMA: -(a*b)+c (einzeln, skalar)xmm, xmm, xmm/Speicher
VFNMADD132SDFMA: -(a*b)+c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFNMADD213SDFMA: -(a*b)+c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFNMADD231SDFMA: -(a*b)+c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFNMSUB132PSFMA: -(a*b)-c (einzeln, verpackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMSUB213PSFMA: -(a*b)-c (einzeln, verpackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMSUB231PSFMA: -(a*b)-c (einzeln, verpackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMSUB132PDFMA: -(a*b)-c (doppelt, gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMSUB213PDFMA: -(a*b)-c (doppelt, gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMSUB231PDFMA: -(a*b)-c (doppelt, gepackt)ymm/xmm, ymm/xmm, ymm/mem
VFNMSUB132SSFMA: -(a*b)-c (einzeln, skalar)xmm, xmm, xmm/Speicher
VFNMSUB213SSFMA: -(a*b)-c (einzeln, skalar)xmm, xmm, xmm/Speicher
VFNMSUB231SSFMA: -(a*b)-c (einzeln, skalar)xmm, xmm, xmm/Speicher
VFNMSUB132SDFMA: -(a*b)-c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFNMSUB213SDFMA: -(a*b)-c (doppelt, skalar)xmm, xmm, xmm/Speicher
VFNMSUB231SDFMA: -(a*b)-c (doppelt, skalar)xmm, xmm, xmm/Speicher

AVX-512 – Hauptunterschiede

AVX-512 erweitert YMM auf 512-Bit-ZMM-Register und fügt Opmask-Register k0-k7 hinzu. Mnemonics verwenden ein optionalesZSuffix oder das EVEX-Präfix. Wichtige neue Anweisungen:

GedächtnisstützeBeschreibungOperanden
VMOVDQA32Ausgerichtetes Dword/Qword verschieben (mit Opmask)zmm, mem / mem, zmm
VMOVDQA64Ausgerichtetes qword verschieben (mit opmask)zmm, mem / mem, zmm
VMOVDQU32Nicht ausgerichtetes Dword/Qword verschieben (mit opmask)zmm, mem / mem, zmm
VMOVDQU64Nicht ausgerichtetes qword verschieben (mit opmask)zmm, mem / mem, zmm
VPABSQAbsoluter Wert von qwordszmm, zmm/mem
VPMAXSQMaximal vorzeichenbehaftete Qwordszmm, zmm, zmm/mem
VPMINSQMindestens signierte Qwordszmm, zmm, zmm/mem
VPMAXUQMaximal vorzeichenlose Qwordszmm, zmm, zmm/mem
VPMINUQMindestens vorzeichenlose Qwordszmm, zmm, zmm/mem
VPCONFLICTDErkennen Sie Konflikte im Dword-Vektorzmm, zmm/mem
VPCONFLICTQErkennen Sie Konflikte im Qword-Vektorzmm, zmm/mem
VPLZCNTDZählen Sie führende Nullen im Dword-Vektorzmm, zmm/mem
VPLZCNTQZählen Sie führende Nullen im Qword-Vektorzmm, zmm/mem
VCOMPRESSGepackte Elemente komprimieren (durch Maske)zmm, zmm/mem
VEXPANDGepackte Elemente erweitern (durch Maske)zmm, zmm/mem
VPCOMPRESSDKomprimieren Sie gepackte Dwordszmm, zmm/mem
VPCOMPRESSQKomprimieren Sie gepackte Qwordszmm, zmm/mem
VPEXPANDDErweitern Sie gepackte Dwordszmm, zmm/mem
VPEXPANDQErweitern Sie gepackte Qwordszmm, zmm/mem
VPERMI2BPermutieren Sie Bytes mit Index und Maskezmm, zmm, zmm/mem
VPERMI2WPermutieren Sie Wörter mit Index und Maskezmm, zmm, zmm/mem
VPERMI2DPermutieren Sie Dwords mit Index und Maskezmm, zmm, zmm/mem
VPERMI2QQwords mit Index und Maske permutierenzmm, zmm, zmm/mem
VPERMT2BBytes mit Index und Maske permutieren (zwei Quellen)zmm, zmm, zmm/mem
VPERMT2WWörter mit Index und Maske permutieren (zwei Quellen)zmm, zmm, zmm/mem
VPERMT2DDwords mit Index und Maske permutieren (zwei Quellen)zmm, zmm, zmm/mem
VPERMT2QQwords mit Index und Maske permutieren (zwei Quellen)zmm, zmm, zmm/mem
VGETMANTPSExtrahieren Sie die normalisierte Mantisse aus einer einzelnenzmm, zmm/mem, imm8
VGETMANTPDExtrahieren Sie die normalisierte Mantisse aus dem Doppeltenzmm, zmm/mem, imm8
VFPCLASSPSTestgepackte Single für die Klasse (NaN/Inf/Null)zmm, zmm/mem, imm8
VFPCLASSPDTestpackung doppelt für den Unterrichtzmm, zmm/mem, imm8
VRCP14PS14-Bit reziproke gepackte Singlezmm, zmm/mem
VRCP14PD14-Bit reziprokes gepacktes Doublezmm, zmm/mem
VRCP14SS14-Bit-reziproker Skalar-Singlexmm, xmm, xmm/Speicher
VRCP14SD14-Bit reziprokes Skalar-Doublexmm, xmm, xmm/Speicher
VRSQRT14PS14-Bit reziprokes sqrt-gepacktes Singlezmm, zmm/mem
VRSQRT14PD14-Bit reziprokes sqrt-gepacktes Doppelzmm, zmm/mem
VSCALEFPSSkalieren Sie einzeln mit Zweierpotenzenzmm, zmm, zmm/mem
VSCALEFPDSkala doppelt gepackt durch Zweierpotenzzmm, zmm, zmm/mem
VFIXUPIMMPSVerpackte Single reparieren (NaN-Handhabung)zmm, zmm, zmm/mem, imm8
VFIXUPIMMPDVerpacktes Doppel reparieren (NaN-Handhabung)zmm, zmm, zmm/mem, imm8
VREDUCEPSGepackte Single reduzieren (auf N Bits runden)zmm, zmm/mem, imm8
VREDUCEPDPacked Double reduzieren (auf N Bits runden)zmm, zmm/mem, imm8
VRNDSCALEPSRund verpacktes Einzelstück mit Skalazmm, zmm/mem, imm8
VRNDSCALEPDRund verpackt, doppelt mit Skalazmm, zmm/mem, imm8
VPMADD52HUQMultiplizieren und addieren Sie 52-Bit-QWords ohne Vorzeichen mit hohem Wertzmm, zmm, zmm/mem
VPMADD52LUQMultiplizieren und addieren Sie 52-Bit-Quoten ohne Vorzeichen mit niedrigem Wertzmm, zmm, zmm/mem
VPSLLVWVariable logische Wörter nach links verschiebenzmm, zmm, zmm/mem
VPSLLVDQVariable logisches Dword/Qword nach links verschiebenzmm, zmm, zmm/mem
VPSRAVQVariable arithmetische Qwords nach rechts verschiebenzmm, zmm, zmm/mem
VPSRLVWVariable logische Wörter nach rechts verschiebenzmm, zmm, zmm/mem
VPSRLVDQVariables logisches Dword/Qword nach rechts verschiebenzmm, zmm, zmm/mem
VPTERNLOGDBitweise Operation mit drei Eingaben (Dword)zmm, zmm, zmm/mem, imm8
VPTERNLOGQBitweise Operation mit drei Eingaben (qword)zmm, zmm, zmm/mem, imm8
VPMOVDBPacken und kürzen Sie Dwords in Bytes (schmal)mem, zmm / xmm, zmm
VPMOVDWPacken und kürzen Sie Dwords in Wörter (schmal)mem, zmm / xmm, zmm
VPMOVQBPacken und kürzen Sie qwords in Bytes (schmal)mem, zmm / xmm, zmm
VPMOVQDPacken und kürzen Sie qwords in dwords (schmal)mem, zmm / xmm, zmm
VPMOVQWPacken und kürzen Sie qwords in Wörter (schmal)mem, zmm / xmm, zmm
VPMOVWBPacken und kürzen Sie Wörter in Bytes (schmal)mem, zmm / xmm, zmm
VPOPCNTBPopulationsanzahl der Bytes (Vektor)zmm, zmm/mem
VPOPCNTWBevölkerungszahl von Wörtern (Vektor)zmm, zmm/mem
VPOPCNTDBevölkerungszahl von Dwords (Vektor)zmm, zmm/mem
VPOPCNTQBevölkerungszahl von qwords (Vektor)zmm, zmm/mem
VDBPSADBWDoppelblockgepackte Summe von ABS-Diffs (Wörtern)zmm, zmm, zmm/mem, imm8
VSHUFI32X4Mischen Sie 128-Bit-Spuren mit 32-Bit-Elementenzmm, zmm, zmm/mem, imm8
VSHUFI64X2Mischen Sie 128-Bit-Spuren mit 64-Bit-Elementenzmm, zmm, zmm/mem, imm8

Anweisungen zum Maskenregister (k0-k7)

AVX-512 führt 8 Maskenregister (k0-k7) für prädizierte Operationen ein. k0 ist fest mit allen Einsen verbunden (keine Maskierung). Die typische Syntax istvmovdqa32 zmm1 {k1}{z}, zmm2.

GedächtnisstützeBeschreibungOperanden
KMOVB/KMOVW/KMOVD/KMOVQVerschieben Sie das Maskenregister zum/vom GPR oder Speicherk, k/reg/mem
KADDB/KADDW/KADDD/KADDQFügen Sie zwei Maskenregister hinzuk, k, k
KANDB/KANDW/KANDD/KANDQBitweises UND von Maskenregisternk, k, k
KANDNB/KANDNW/KANDND/KANDNQBitweises UND-NICHT von Maskenregisternk, k, k
KORB/KORW/KORD/KORQBitweises ODER von Maskenregisternk, k, k
KXORB/KXORW/KXORD/KXORQBitweises XOR von Maskenregisternk, k, k
KXNORB/KXNORW/KXNORD/KXNORQBitweises XNOR von Maskenregisternk, k, k
KNOTB/KNOTW/KNOTD/KNOTQBitweises NICHT des Maskenregistersk, k
KORTESTB/KORTESTW/KORTESTD/KORTESTQODER-Test (setzt CF/ZF, wenn das Ergebnis nur Einsen/Null ist)k, k
KSHIFTLB/KSHIFTLW/KSHIFTLD/KSHIFTLQVerschiebe das Maskenregister um imm8 nach linksk, k, imm8
KSHIFTRB/KSHIFTRW/KSHIFTRD/KSHIFTRQVerschiebe das Maskenregister um imm8 nach rechtsk, k, imm8

AVX-512BW – Byte-/Worterweiterungen

GedächtnisstützeBeschreibungOperanden
VPADDBGepackte Bytes hinzufügen (512-Bit mit Opmask)zmm, zmm, zmm/mem
VPADDWGepackte Wörter hinzufügen (512-Bit mit Opmask)zmm, zmm, zmm/mem
VPSUBBGepackte Bytes subtrahieren (512-Bit mit Opmask)zmm, zmm, zmm/mem
VPSUBWGepackte Wörter subtrahieren (512-Bit mit Opmask)zmm, zmm, zmm/mem
VPSLLVWVariable logische Wörter nach links verschiebenzmm, zmm, zmm/mem
VPSRLVWVariable logische Wörter nach rechts verschiebenzmm, zmm, zmm/mem
VPSRAVWVariable arithmetische Wörter nach rechts verschiebenzmm, zmm, zmm/mem
VPABSBAbsoluter Wert der Bytes (512-Bit)zmm, zmm/mem
VPABSWAbsoluter Wortwert (512-Bit)zmm, zmm/mem
VPMOVB2MVerschieben Sie die Bytemaske vom Vektor in das k-Registerk, zmm
VPMOVW2MVerschieben Sie die Wortmaske vom Vektor in das k-Registerk, zmm
VPMOVM2BMaske vom k-Register in den Byte-Vektor verschiebenzmm, k
VPMOVM2WMaske vom k-Register in den Wortvektor verschiebenzmm, k
VDBPSADBWDoppelblockgepackte Summe von ABS-Diffs (Wörtern)zmm, zmm, zmm/mem, imm8

AVX-512DQ – Doppel-/Quadword-Erweiterungen

GedächtnisstützeBeschreibungOperanden
VPMULLQMultiplizieren Sie gepackte Qwords mit Vorzeichen (niedrige 64 Bit)zmm, zmm, zmm/mem
VPANDQBitweises UND von qwordszmm, zmm, zmm/mem
VPORQBitweises ODER von qwordszmm, zmm, zmm/mem
VPXORQBitweises XOR von qwordszmm, zmm, zmm/mem
VPABSQAbsoluter Wert von qwordszmm, zmm/mem
VPMOVD2MVerschieben Sie die Dword-Maske vom Vektor in das k-Registerk, zmm
VPMOVQ2MVerschieben Sie die qword-Maske vom Vektor in das k-Registerk, zmm
VPMOVM2DVerschieben Sie die Maske vom k-Register in den dword-Vektorzmm, k
VPMOVM2QMaske vom k-Register in den qword-Vektor verschiebenzmm, k

AVX-512ER – Exponentiell/Reziprok

Eingeführt in Intel Xeon Phi (Knights Landing). Bietet hochpräzise exponentielle, reziproke und reziproke Quadrate.

GedächtnisstützeBeschreibungOperanden
VEXP2PDExponentielle Näherung zur Basis 2 (doppelt, gepackt)zmm, zmm/mem
VEXP2PSExponentielle Näherung zur Basis 2 (einfach, gepackt)zmm, zmm/mem
VRCP28PD28-Bit-Reziproknäherung (doppelt, gepackt)zmm, zmm/mem
VRCP28PS28-Bit-Reziproknäherung (einzeln, gepackt)zmm, zmm/mem
VRCP28SD28-Bit-Reziproknäherung (doppelt, skalar)xmm, xmm, xmm/Speicher
VRCP28SS28-Bit-Reziproknäherung (einfach, skalar)xmm, xmm, xmm/Speicher
VRSQRT28PD28-Bit reziproke Quadratnäherung (doppelt, gepackt)zmm, zmm/mem
VRSQRT28PS28-Bit reziproke Quadratnäherung (einzeln, gepackt)zmm, zmm/mem
VRSQRT28SD28-Bit reziproke Quadratnäherung (doppelt, skalar)xmm, xmm, xmm/Speicher
VRSQRT28SS28-Bit-Reziprok-Quadrat-Näherung (einfach, skalar)xmm, xmm, xmm/Speicher

AVX-512PF – Prefetch Gather/Scatter

Prefetch-Hinweise für Gather/Scatter-Vorgänge (nur Xeon Phi). Verwendet VSIB-Adressierung.

GedächtnisstützeBeschreibungOperanden
VGATHERPF0DPDPrefetch Gather Double, Intent Level 0mem (VSIB)
VGATHERPF0DPSPrefetch Gather Single, Intent Level 0mem (VSIB)
VGATHERPF1DPDPrefetch Gather Double, Intent Level 1mem (VSIB)
VGATHERPF1DPSPrefetch Gather Single, Intent Level 1mem (VSIB)
VSCATTERPF0DPDPrefetch-Scatter-Double, Absichtsstufe 0mem (VSIB)
VSCATTERPF0DPSPrefetch-Scatter einzeln, Absichtsebene 0mem (VSIB)
VSCATTERPF1DPDPrefetch-Scatter-Double, Absichtsstufe 1mem (VSIB)
VSCATTERPF1DPSPrefetch-Scatter einzeln, Absichtsebene 1mem (VSIB)

AVX-512VPOPCNTDQ – Vektor-Popcount

GedächtnisstützeBeschreibungOperanden
VPOPCNTDPopulationsanzahl von Dword-Elementenzmm, zmm/mem
VPOPCNTQPopulationszahl von qword-Elementenzmm, zmm/mem

AVX-512BITALG – Bit-Algorithmen

GedächtnisstützeBeschreibungOperanden
VPOPCNTBPopulationsanzahl von Byte-Elementenzmm, zmm/mem
VPOPCNTWPopulationszahl von Wortelementenzmm, zmm/mem
VPSHUFBITQMBMischen Sie die Bits im Qword zur Byte-Maskek, zmm, zmm/mem

AVX-512VBMI – Vektorbyte-Manipulation

GedächtnisstützeBeschreibungOperanden
VPERMBBytes über Lanes hinweg permutierenzmm, zmm, zmm/mem
VPERMI2BZwei-Quellen-Permutation von Bytes mit Indexzmm, zmm, zmm/mem
VPERMT2BPermutation von Bytes aus zwei Quellen (Index im Ziel)zmm, zmm, zmm/mem
VPMULTISHIFTQBMehrfaches Verschieben und Verketten von Qwords zu Byteszmm, zmm, zmm/mem

AVX-512VBMI2 – Byte-/Wortkomprimierung/-erweiterung

GedächtnisstützeBeschreibungOperanden
VCOMPRESSBGepackte Bytes komprimieren (durch Maske)zmm, zmm/mem
VCOMPRESSWKomprimieren Sie gepackte Wörter (durch Maske)zmm, zmm/mem
VEXPANDBGepackte Bytes erweitern (nach Maske)zmm, zmm/mem
VEXPANDWGepackte Wörter erweitern (durch Maske)zmm, zmm/mem
VPSHLDVVariable Verschiebung nach links doppelt (verkettete Verschiebung)zmm, zmm, zmm/mem
VPSHLDVWVariable Doppelwörter nach links verschiebenzmm, zmm, zmm/mem
VPSHRDVVariable Verschiebung nach rechts doppelt (verkettete Verschiebung)zmm, zmm, zmm/mem
VPSHRDVWVariable Doppelwörter nach rechts verschiebenzmm, zmm, zmm/mem

GFNI – Galois Field Neue Anweisungen

GedächtnisstützeBeschreibungOperanden
VGF2P8AFFINEINVQBGalois-Feld-Affintransformation inverszmm/xmm, zmm/xmm, zmm/mem, imm8
VGF2P8AFFINEQBGaloisfeldaffine Transformationzmm/xmm, zmm/xmm, zmm/mem, imm8
VGF2P8MULBGalois-Feld multipliziert Bytes (GF(2^8))zmm/xmm, zmm/xmm, zmm/mem

AVX-512 – Streuspeicher

GedächtnisstützeBeschreibungOperanden
VSCATTERDPSScatter-gepackte Single mit Dword-Indizesmem, zmm
VSCATTERDPDScatter-gepacktes Doppel mit Dword-Indizesmem, zmm
VSCATTERQPSStreugepackte Single mit Qword-Indizesmem, zmm
VSCATTERQPDScatter-gepacktes Doppel mit Qword-Indizesmem, zmm

AVX-512 – Zusätzliche Operationen

GedächtnisstützeBeschreibungOperanden
VALIGNDDwords ausrichten (verketten und verschieben)zmm, zmm, zmm/mem, imm8
VALIGNQQwords ausrichten (verketten und verschieben)zmm, zmm, zmm/mem, imm8
VBLENDMPDMischen Sie die Mischung doppelt aus der Maskezmm, zmm, zmm/mem
VBLENDMPSMischung verpackt einzeln aus der Maskezmm, zmm, zmm/mem
VPBLENDMDMischen Sie gepackte Dwords aus der Maskezmm, zmm, zmm/mem
VPBLENDMQMischen Sie gepackte QWords aus der Maskezmm, zmm, zmm/mem
VCOMPRESSPSVerpackte Single komprimieren (durch Maske)zmm, zmm/mem
VCOMPRESSPDKomprimieren Sie das Doppelte (durch Maske)zmm, zmm/mem
VCOMPRESSDKomprimieren Sie gepackte Dwords (durch Maske)zmm, zmm/mem
VCOMPRESSQKomprimieren Sie gepackte Qwords (durch Maske)zmm, zmm/mem
VEXPANDPSGepackte Single erweitern (nach Maske)zmm, zmm/mem
VEXPANDPDGepacktes Doppel erweitern (durch Maske)zmm, zmm/mem
VEXPANDDGepackte Dwords erweitern (nach Maske)zmm, zmm/mem
VEXPANDQGepackte QWords erweitern (nach Maske)zmm, zmm/mem
VFIXUPIMMSDSkalar-Double reparieren (NaN-Handhabung)xmm, xmm, xmm/mem, imm8
VFIXUPIMMSSSkalar-Single reparieren (NaN-Handhabung)xmm, xmm, xmm/mem, imm8
VREDUCESDSkalar-Double reduzieren (auf N Bits runden)xmm, xmm, xmm/mem, imm8
VREDUCESSSkalare Single reduzieren (auf N Bits runden)xmm, xmm, xmm/mem, imm8
VRNDSCALESDRundes Skalardoppel mit Skalaxmm, xmm, xmm/mem, imm8
VRNDSCALESSRunder Skalar einzeln mit Skalaxmm, xmm, xmm/mem, imm8
VRANGESDBereichseinschränkung Skalar Doublexmm, xmm, xmm/mem, imm8
VRANGESSBereichseinschränkung Skalar Singlexmm, xmm, xmm/mem, imm8
VGETEXPSDExponenten-Skalar-Doppel extrahierenxmm, xmm, xmm/Speicher
VGETEXPSSExponentenskalar einzeln extrahierenxmm, xmm, xmm/Speicher
VGETMANTSDExtrahieren Sie das normalisierte Mantissen-Skalar-Doublexmm, xmm, xmm/mem, imm8
VGETMANTSSExtrahieren Sie den normalisierten Mantissenskalar einzelnxmm, xmm, xmm/mem, imm8
VPSRAVQVariable arithmetische Qwords nach rechts verschiebenzmm, zmm, zmm/mem
VPERMI2WPermutation von Wörtern aus zwei Quellen mit Indexzmm, zmm, zmm/mem
VPERMT2WPermutation von Wörtern aus zwei Quellen (Index im Ziel)zmm, zmm, zmm/mem
VPERMI2DZwei-Quellen-Permutation von Dwords mit Indexzmm, zmm, zmm/mem
VPERMI2QZwei-Quellen-Permutation von qwords mit Indexzmm, zmm, zmm/mem
VPERMI2PSPermutation von Singles aus zwei Quellen mit Indexzmm, zmm, zmm/mem
VPERMI2PDZwei-Quellen-Permutation von Doubles mit Indexzmm, zmm, zmm/mem
VPERMT2DZwei-Quellen-Permutation von Dwords (Index im Ziel)zmm, zmm, zmm/mem
VPERMT2QPermutation von qwords aus zwei Quellen (Index im Ziel)zmm, zmm, zmm/mem
VPERMT2PSZwei-Quellen-Permutation von Singles (Index im Ziel)zmm, zmm, zmm/mem
VPERMT2PDZwei-Quellen-Permutation von Doubles (Index im Ziel)zmm, zmm, zmm/mem
Notiz:AVX-512-Anweisungen können Opmask-Register (k1-k7) verwenden. Opmask Null (k0) ist mit allen Einsen fest verdrahtet und fungiert als „keine Maske“. Die typische Syntax ist:vmovdqa32 zmm1 {k1}{z}, zmm2Dabei aktiviert {k1} die Maskierung und {z} den Nullungsmaskenmodus. Das Suffix-Suffix (32/64 für dword/qword-Elementgröße) bestimmt, für welche Elemente die Maske gilt.

Category: Assembly

PBXB64 Status: Referenzthema fuer Assembler-Syntax und Familienhinweise; untergeordnete Instruktionsseiten und registrierte Tests liefern den endgueltigen Support-Nachweis.

Beschreibung

Dieses Assembler-Thema gruppiert PBXB64-x64-Assembler-Syntax, Direktiven, Adressierungsregeln oder Mnemonik-Familien. Behandeln Sie es als Navigation plus Nutzungshinweis, sofern keine Unterseite oder kein registrierter Test eine konkrete Instruktionsform belegt.

Prüfung der Instruktionsfamilie

Verwenden Sie diese Mnemonik-Übersichten als Einstieg in fokussierte Assembler-Tests. Eine vollständige Prüfung nennt CPU-Feature-Bit, Operandenbreite, Register- oder Speicherform, Flag-Auswirkungen und ob die Instruktion im Windows-x64-User-Mode gültig ist.

PBXB64-Integrationshinweise

Inline-Assembler muss die Windows-x64-Aufrufkonvention erhalten, wenn die Kontrolle zu compilererzeugtem Code zurückkehrt. Sichern Sie nichtflüchtige Register, halten Sie Stack-Alignment bei Aufrufen ein und dokumentieren Sie absichtlich veränderte Flags oder Register.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Ein 256-Bit-YMM-Register kann acht einfach genaue Werte aufnehmen.

Ein 256-Bit-YMM-Register kann acht einfach genaue Werte aufnehmen.