| Index | Manual | Download | Source | Macros | Embedded word Case ins.
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 used in this source.
                    ea.htm,eaopt.htm,exp.htm,ii.htm,msg.htm,pgm.htm,pgmopt.htm,sss.htm,stm.htm,sym.htm

    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
        IiAllowModifier DATA,IMM
        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  ; That was error in version 20251110.
        IiEmitOpcode 0x0F,0x0E
        IiDispatchFormat none
    .none:RET
     ENDP IidFEMMS::

      ENDPROGRAM iid

▲Back to the top▲