Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- iAPx86 - <u>fcmovcc<b> fp conditional move exceptions: s</b></u> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
FCMOVcc                 FP Conditional Move          Exceptions: S
                                                     C3 C2 C1 C0: ? ? * ?
FCMOVcc destination,source                           FPU: PPro+

        Logic   if condition
                   ST . ST(i)
                endif

    Tests the status flags in the EFLAGS register and moves the source
    operand to the destination operand if the given test condition is
    true. The source operand is always in an ST(i) register and the
    destination operand is always ST(0).

    The FCMOVcc instructions are useful for optimizing small IF
    constructions. They also help eliminate branching overhead for IF
    operations and the possibility of branch mispredictions by the
    processor.

        Note
        The FCMOVcc instructions are new for the Pentium Pro
        processor family; however, they may not be supported
        by all the processors in the family. By checking the
        processor's feature information with CPUID, a program
        can determine if the CPU supports FCMOVcc. If both the
        CMOV and FPU feature bits are set, the FCMOVcc
        instructions are supported.



    Instruction          Move if ...                   Flags
    FCMOVA, FCMOVNBE     Above, Not Below or Equal     CF=0 AND ZF=0
    FCMOVAE, FCMOVNB,    Above or Equal, Not Below,
      FCMOVNC              Not Carry                   CF=0
    FCMOVB, FCMOVC,      Below, Carry,
      FCMONAE              Not Above or Equal          CF=1
    FCMOVBE, FCMOVNA     Below or Equal, Not Above     CF=1 OR ZF=1
    FCMOVE, FCMOVZ       Equal, Zero                   ZF=1
    FCMOVNE, FCMOVNZ     Not Equal, Not Zero           ZF=0
    FCMOVU               Unordered                     PF=1 (C2=1)
    FCMOVNU              Not Unordered                 PF=0 (C2=0)


    Opcode      Format
    DA C0 + i   FCMOVB   ST, ST(i)
    DA C8 + i   FCMOVE   ST, ST(i)
    DA D0 + i   FCMOVBE  ST, ST(i)
    DA D8 + i   FCMOVU   ST, ST(i)
    DB C0 + i   FCMOVNB  ST, ST(i)
    DB C8 + i   FCMOVNE  ST, ST(i)
    DB D0 + i   FCMOVNBE ST, ST(i)
    DB D8 + i   FCMOVNU  ST, ST(i)


    Timing
    ??

See Also: FCOMI CMOVcc FSTSW

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson