Knowledge (XXG)

FCMOV

Source 📝

80:
This table shows the variants of the FCMOV instructions. The first operand is always the ST(0) register (equivalently, the top of the floating point stack). The Opcode column indicates a two-byte sequence where the second byte is a base value indicating the number of the floating point stack register
38:
integer flag register, to the ST(0) (top of stack) register. There are 8 variants of the instruction selected by the condition codes that need be set for the instruction to perform the move.
53:
than conditional branch instructions. Therefore, it is most useful for simple yet unpredictable comparison or conditional operations, where it can provide substantial performance gains.
35: 289: 46: 34:
processors. It copies the contents of one of the floating point stack register, depending on the contents of
69: 61: 50: 81:
to use for the second operand. Add the desired number to complete the corresponding opcode value.
72:
idiom to set the relevant condition codes based on the result of a floating point comparison.
65: 57: 274: 240: 45:
instruction, FCMOV allows some conditional operations to be performed without the usual
283: 252:
Optimizing subroutines in assembly language. An optimization guide for x86 platforms.
237:
Intel Architecture Software Developer Manual, Volume 2: Instruction Set Reference.
155: 31: 110: 20: 24: 269: 255: 42: 27: 275:
Intel's official instruction set reference download page
8: 56:The instruction is usually used with the 232: 230: 83: 226: 19:is a floating point conditional move 7: 49:overhead. However, it has a higher 30:architecture, first introduced in 14: 200:Carry flag and Zero flag cleared 270:Software Optimization Resources 1: 141:Carry flag or Zero flag set 197:Move if not below or equal 306: 254:Available for download at 239:Available for download at 138:Move if below or equal 211:Move if not unordered 214:Parity flag cleared 172:Carry flag cleared 60:instruction or the 186:Zero flag cleared 183:Move if not equal 169:Move if not below 152:Move if unordered 218: 217: 297: 290:X86 instructions 257: 248: 242: 234: 84: 305: 304: 300: 299: 298: 296: 295: 294: 280: 279: 266: 261: 260: 249: 245: 235: 228: 223: 78: 41:Similar to the 12: 11: 5: 303: 301: 293: 292: 282: 281: 278: 277: 272: 265: 264:External links 262: 259: 258: 243: 225: 224: 222: 219: 216: 215: 212: 209: 206: 202: 201: 198: 195: 192: 188: 187: 184: 181: 178: 174: 173: 170: 167: 164: 160: 159: 153: 150: 147: 143: 142: 139: 136: 133: 129: 128: 127:Zero flag set 125: 124:Move if equal 122: 119: 115: 114: 108: 107:Move if below 105: 102: 98: 97: 94: 91: 88: 77: 74: 13: 10: 9: 6: 4: 3: 2: 302: 291: 288: 287: 285: 276: 273: 271: 268: 267: 263: 256: 253: 247: 244: 241: 238: 233: 231: 227: 220: 213: 210: 207: 204: 203: 199: 196: 193: 190: 189: 185: 182: 179: 176: 175: 171: 168: 165: 162: 161: 157: 154: 151: 148: 145: 144: 140: 137: 134: 131: 130: 126: 123: 120: 117: 116: 112: 109: 106: 103: 100: 99: 95: 92: 89: 86: 85: 82: 75: 73: 71: 67: 63: 59: 54: 52: 48: 44: 39: 37: 33: 29: 26: 22: 18: 251: 246: 236: 79: 55: 40: 16: 15: 156:Parity flag 32:Pentium Pro 221:References 111:Carry flag 96:Condition 194:FCMOVNBE 90:Mnemonic 47:branching 284:Category 250:Fog, A: 208:FCMOVNU 205:DB D8+i 191:DB D0+i 180:FCMOVNE 177:DB C8+i 166:FCMOVNB 163:DB C0+i 146:DA D8+i 135:FCMOVBE 132:DA D0+i 118:DA C8+i 101:DA C0+i 93:Meaning 76:Variants 149:FCMOVU 121:FCMOVE 104:FCMOVB 87:Opcode 51:latency 23:of the 36:EFLAGS 21:opcode 66:FSTSW 58:FCOMI 25:Intel 17:FCMOV 158:set 113:set 70:SAHF 62:FCOM 43:CMOV 28:x86 286:: 229:^ 68:- 64:-

Index

opcode
Intel
x86
Pentium Pro
EFLAGS
CMOV
branching
latency
FCOMI
FCOM
FSTSW
SAHF
Carry flag
Parity flag




Software Optimization Resources
Intel's official instruction set reference download page
Category
X86 instructions

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.