EuroAssembler Index Manual Download Source Macros


Sitemap Links Forum Tests Projects

iid.htm
Enumerations
IidList
Groups
IidGroup3DNow
Instruction handlers
FEMMS PAVGUSB PF2ID PF2IW PFACC PFADD PFCMPEQ PFCMPGE PFCMPGT PFMAX PFMIN PFMUL PFNACC PFPNACC PFRCP PFRCPIT1 PFRCPIT2 PFRCPV PFRSQIT1 PFRSQRT PFRSQRTV PFSUB PFSUBR PI2FD PI2FW PMULHRW PMULHRWA PSWAPD

IidHandlers
assemble SSE 3DNow! machine instructions.
See also
IiHandlers,
[RoseCompiler]
iid PROGRAM FORMAT=COFF,MODEL=FLAT,WIDTH=32
 INCLUDEHEAD "euroasm.htm" ; Interface (structures, symbols and macros) of other modules.

iid HEAD ; Start of module interface.
↑ %IidList
enumerates machine instructions of this family which €ASM can assemble.
Each instruction declared in %IidList requires the corresponding handler in this file.
See also
DictLookupIi
%IidList %SET \
FEMMS, \
PAVGUSB, \
PF2ID, \
PF2IW, \
PFACC, \
PFADD, \
PFCMPEQ, \
PFCMPGE, \
PFCMPGT, \
PFMAX, \
PFMIN, \
PFMUL, \
PFNACC, \
PFPNACC, \
PFRCP, \
PFRCPIT1, \
PFRCPIT2, \
PFRCPV, \
PFRSQIT1, \
PFRSQRT, \
PFRSQRTV, \
PFSUB, \
PFSUBR, \
PI2FD, \
PI2FW, \
PMULHRW, \
PMULHRWA, \
PSWAPD, \

;
  ENDHEAD iid ; End of module interface.
IidGroup3DNow
IidGroup3DNow is a common handler for (deprecated) [D3Now] instructions.
Input
CL is the immediate byte which selects 3DNow! instruction.
EDI is pointer to II structure with parsed operands.
EDX has operand types as set by IiAssemble.
Tested by
t3665 t3670 t3675 t3680
IidGroup3DNow:: PROC
    IiRequire 686,AMD,MMX,D3NOW
    IiEncoding IMM=BYTE,DATA=QWORD
    MOV [EDI+II.ImmLow],CL
    IiEmitOpcode 0x0F,0x0F
    IiOpEn RM
    IiModRM /r
    IiDispatchFormat mmx.mmx, mmx.mem
.mmx.mmx:
.mmx.mem:
    RET
 ENDP IidGroup3DNow::
↑ PI2FW
Packed Integer to Floating-Point Word Conversion
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x0C
CPU
AMD K6-2, deprecated
Documented
[D3Now]
Tested by
T3665
Tested by
t3665
IidPI2FW:: PROC
   MOV CL,0x0C
   JMP IidGroup3DNow:
ENDP IidPI2FW::
↑ PI2FD
Packed Integer to Floating-Point Doubleword Conversion
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x0D
CPU
AMD K6-2, deprecated
Recommended substitution
HSUBPS
Documented
[D3Now]
Tested by
T3665
Tested by
t3665
IidPI2FD:: PROC
   MOV CL,0x0D
   JMP IidGroup3DNow:
ENDP IidPI2FD::
↑ PF2IW
Packed Floating-Point to Integer Word Conversion
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x1C
CPU
AMD K6-2, deprecated
Recommended substitution
CVTPS2DQ
Documented
[D3Now]
Tested by
T3665
Tested by
t3665
IidPF2IW:: PROC
   MOV CL,0x1C
   JMP IidGroup3DNow:
ENDP IidPF2IW::
↑ PF2ID
Packed Floating-Point to Integer Doubleword Conversion
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x1D
CPU
AMD K6-2, deprecated
Recommended substitution
CVTTPS2DQ
Documented
[D3Now]
Tested by
T3665
Tested by
t3665
IidPF2ID:: PROC
   MOV CL,0x1D
   JMP IidGroup3DNow:
ENDP IidPF2ID::
↑ PFRCPV
Packed floating-point reciprocal approximation
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x96 .
CPU
GEODE, deprecated
Recommended substitution
RCPSS
Documented
[Geode]
Tested by
T3680
Tested by
t3680
IidPFRCPV:: PROC
   MOV CL,0x86
   JMP IidGroup3DNow:
ENDP IidPFRCPV::
↑ PFRSQRTV
Packed Floating-Point Reciprocal Square Root Approximation
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x87
CPU
GEODE, deprecated
Documented
[Geode]
Tested by
T3680
Tested by
t3680
IidPFRSQRTV:: PROC
   IiRequire CYRIX
   MOV CL,0x87
   JMP IidGroup3DNow:
ENDP IidPFRSQRTV::
↑ PFNACC
Packed Floating-Point Negative Accumulate
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x8A
CPU
AMD K6-2, deprecated
Documented
[D3Now]
Tested by
T3670
Tested by
t3670
IidPFNACC:: PROC
   MOV CL,0x8A
   JMP IidGroup3DNow:
ENDP IidPFNACC::
↑ PFPNACC
Packed Floating-Point Positive-Negative Accumulate
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x8E
CPU
AMD K6-2, deprecated
Recommended substitution
ADDSUBPS
Documented
[D3Now]
Tested by
T3670
Tested by
t3670
IidPFPNACC:: PROC
   MOV CL,0x8E
   JMP IidGroup3DNow:
ENDP IidPFPNACC::
↑ PFCMPGE
Packed Floating-Point Compare Greater or Equal
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x90
CPU
AMD K6-2, deprecated
Recommended substitution
CMPSS
Documented
[D3Now]
Tested by
T3665
Tested by
t3665
IidPFCMPGE:: PROC
   MOV CL,0x90
   JMP IidGroup3DNow:
ENDP IidPFCMPGE::
↑ PFMIN
Packed Single-Precision Floating-Point Minimum
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x94
CPU
AMD K6-2, deprecated
Recommended substitution
MINPS
Documented
[D3Now]
Tested by
T3675
Tested by
t3675
IidPFMIN:: PROC
   MOV CL,0x94
   JMP IidGroup3DNow:
ENDP IidPFMIN::
↑ PFRCP
Floating-Point Reciprocal Approximation
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x96
CPU
AMD K6-2, deprecated
Recommended substitution
RCPSS
Documented
[D3Now]
Tested by
T3680
Tested by
t3680
IidPFRCP:: PROC
   IiRequire CYRIX
   MOV CL,0x96
   JMP IidGroup3DNow:
ENDP IidPFRCP::
↑ PFRSQRT
Packed Floating-Point Reciprocal Square Root Approximation
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x97
CPU
AMD K6-2, deprecated
Recommended substitution
RSQRTSS
Documented
[D3Now]
Tested by
T3680
Tested by
t3680
IidPFRSQRT:: PROC
   MOV CL,0x97
   JMP IidGroup3DNow:
ENDP IidPFRSQRT::
↑ PFSUB
Packed Floating-Point Subtract
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x9A
CPU
AMD K6-2, deprecated
Recommended substitution
SUBPS
Documented
[D3Now]
Tested by
T3670
Tested by
t3670
IidPFSUB:: PROC
   MOV CL,0x9A
   JMP IidGroup3DNow:
ENDP IidPFSUB::
↑ PFADD
Packed Floating-Point Add
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0x9E
CPU
AMD K6-2, deprecated
Recommended substitution
ADDPS
Documented
[D3Now]
Tested by
T3670
Tested by
t3670
IidPFADD:: PROC
   MOV CL,0x9E
   JMP IidGroup3DNow:
ENDP IidPFADD::
↑ PFCMPGT
Packed Floating-Point Compare Greater Than
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xA0
CPU
AMD K6-2, deprecated
Recommended substitution
CMPSS
Documented
[D3Now]
Tested by
T3665
Tested by
t3665
IidPFCMPGT:: PROC
   MOV CL,0xA0
   JMP IidGroup3DNow:
ENDP IidPFCMPGT::
↑ PFMAX
Packed Single-Precision Floating-Point Maximum
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xA4
CPU
AMD K6-2, deprecated
Recommended substitution
MAXPS
Documented
[D3Now]
Tested by
T3675
Tested by
t3675
IidPFMAX:: PROC
   MOV CL,0xA4
   JMP IidGroup3DNow:
ENDP IidPFMAX::
↑ PFRCPIT1
Packed Floating-Point Reciprocal Iteration 1
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xA6
CPU
AMD K6-2, deprecated
Recommended substitution
PFRCP
Documented
[D3Now]
Tested by
T3675
Tested by
t3675
IidPFRCPIT1:: PROC
   MOV CL,0xA6
   JMP IidGroup3DNow:
ENDP IidPFRCPIT1::
↑ PFRSQIT1
Packed Floating-Point Reciprocal Square Root Iteration 1
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xA7
CPU
AMD K6-2, deprecated
Recommended substitution
PFRSQRT
Documented
[D3Now]
Tested by
T3675
Tested by
t3675
IidPFRSQIT1:: PROC
   MOV CL,0xA7
   JMP IidGroup3DNow:
ENDP IidPFRSQIT1::
↑ PFSUBR
Packed Floating-Point Subtract Reverse
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xAA
CPU
AMD K6-2, deprecated
Recommended substitution
SUBPS
Documented
[D3Now]
Tested by
T3670
Tested by
t3670
IidPFSUBR:: PROC
   MOV CL,0xAA
   JMP IidGroup3DNow:
ENDP IidPFSUBR::
↑ PFACC
Packed Floating-Point Accumulate
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xAE
CPU
AMD K6-2, deprecated
Recommended substitution
HADDPS
Documented
[D3Now]
Tested by
T3670
Tested by
t3670
IidPFACC:: PROC
   MOV CL,0xAE
   JMP IidGroup3DNow:
ENDP IidPFACC::
↑ PFCMPEQ
Packed Floating-Point Compare Equal
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xB0
CPU
AMD K6-2, deprecated
Recommended substitution
CMPSS
Documented
[D3Now]
Tested by
T3665
Tested by
t3665
IidPFCMPEQ:: PROC
   MOV CL,0xB0
   JMP IidGroup3DNow:
ENDP IidPFCMPEQ::
↑ PFMUL
Packed Floating-Point Multiply
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xB4
CPU
AMD K6-2, deprecated
Recommended substitution
MULPS
Documented
[D3Now]
Tested by
T3680
Tested by
t3680
IidPFMUL:: PROC
   MOV CL,0xB4
   JMP IidGroup3DNow:
ENDP IidPFMUL::
↑ PFRCPIT2
Packed Floating-Point Reciprocal or Reciprocal Square Root Iteration 2
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xB6
CPU
AMD K6-2, deprecated
Recommended substitution
PFRCP
Documented
[D3Now]
Tested by
T3675
Tested by
t3675
IidPFRCPIT2:: PROC
   MOV CL,0xB6
   JMP IidGroup3DNow:
ENDP IidPFRCPIT2::
↑ PMULHRW
Packed Multiply High Rounded Word
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xB7
CPU
586, Cyrix
Remark
The same mnemonic is also used by Cyrix 0x0F59 /r (Packed 16-bit integer multiply with rounding), so this AMD 3DNow! variant is also aliased to PMULHRWA in €ASM as well as in NASM.
Documented
[D3Now]
See also
PMULHRWC,
Tested by
T3680
Tested by
t3680
IidPMULHRW:: PROC
   MOV CL,0xB7
   JMP IidGroup3DNow:
ENDP IidPMULHRW::
↑ PMULHRWA
Packed Multiply High Rounded Word (AMD)
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xB7
CPU
AMD K6-2, deprecated
Documented
[D3Now]
See also
PMULHRW,
Tested by
T3680
Tested by
t3680
IidPMULHRWA:: PROC
   MOV CL,0xB7
   JMP IidGroup3DNow:
ENDP IidPMULHRWA::
↑ PSWAPD
Packed Swap Doubleword
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xBB
CPU
AMD K6-2, deprecated
Documented
[D3Now]
Tested by
T3675
Tested by
t3675
IidPSWAPD:: PROC
   MOV CL,0xBB
   JMP IidGroup3DNow:
ENDP IidPSWAPD::
↑ PAVGUSB
Packed Average Unsigned Bytes
Category
AMD, MMX, 3DNow!
Operands
mmx, mmx/mem
Opcode
0x0F0F /r 0xBF
CPU
AMD K6-2, deprecated
Documented
[D3Now]
Tested by
T3675
Tested by
t3675
IidPAVGUSB:: PROC
   MOV CL,0xBF
   JMP IidGroup3DNow:
ENDP IidPAVGUSB::
↑ FEMMS
Fast Exit Multimedia State
Category
3DNow!, MMX
Operands
mmx, mmx/mem
Opcode
0x0F0E /r
CPU
Pentium
Documented
[D3Now]
See also
EMMS.
Tested by
t3645
IidFEMMS:: PROC
    IiRequire 586,D3NOW,AMD
    IiEmitOpcode 0x0F,0x0F
    IiDispatchFormat none
.none:RET
 ENDP IidFEMMS::
  ENDPROGRAM iid

▲Back to the top▲