Instruction
VCOMXSD
Compares the low doubles and sets OF, SF, ZF, PF and CF so that one conditional jump can test any relation, unordered included; NaNs signal invalid.
- Extensions
- Forms
- 2 (2 EVEX)
- Data
- Intel XED v2026.08.23
VCOMXSD compares the low doubles of a register and a register or eight bytes of memory and sets OF, SF, ZF, PF and CF so that each relation, less than included, is one condition code, as VCOMXSS’s page lists. Like VCOMISD, it raises the invalid-operation exception for any NaN, quiet ones included; VUCOMXSD does so only for signaling NaNs. It belongs to AVX10.2 and exists only in EVEX form: opcode 2Fh in map 0F with W1, as VCOMISD, but with an F2 prefix where VCOMISD has 66.
Four flag patterns
The AVX10.2 specification (revision 7.0) sets five flags for each of the four outcomes and clears AF:
| Outcome | OF | SF | ZF | PF | CF |
|---|---|---|---|---|---|
| greater | 0 | 0 | 0 | 0 | 0 |
| less | 1 | 0 | 0 | 0 | 1 |
| equal | 1 | 1 | 1 | 0 | 0 |
| unordered | 1 | 1 | 0 | 1 | 1 |
An unordered result clears ZF, where VCOMISD sets ZF, PF and CF together, so JE alone tests equality. SF equals OF except for “less”, which makes JL and JLE exact, and CF is set for “less” and “unordered”, which leaves JA and JAE false for a NaN. The specification’s opcode line says LLIG, the vector length ignored, but its exception list raises #UD when EVEX.L’L is not 00b.
In our builds
GCC 14 has no AVX10.2 option. Clang 23 with -mavx10.2 compiles the
intrinsic _mm_comieq_sd to VCOMXSD and SETE, and _mm_comineq_sd to
VCOMXSD and SETNE; for -march=x86-64-v4 the first takes VCOMISD,
SETNP, SETE and an AND. _mm_comilt_sd keeps VCOMISD with the operands
swapped and SETA in both. No AVX10.2 processor appears in this site’s
recorded cases.
Forms
Data flow
Where the elements of the sources go, element 0 on the right; results that depend on a control value are drawn for an example. How to read.
The flags come from double 0 of xmm1 and xmm2. RFLAGS: CF, PF, ZF.
Operation
What the forms do, in pseudocode that our tests run against results recorded on real processors. How to read.
x = comx(xmm1.f64[0], src2.f64[0]) # 0 >, 1 <, 2 =, 3 unordered
of = x != 0
sf = x in (2, 3)
zf = x == 2
pf = x == 3
cf = x in (1, 3)
af = 0
# a QNaN raises IE too
# {sae}: no exception flagsNot run on a processor: none of these processors has AVX10.2.
Operands
| Operand | Kind | Action |
|---|---|---|
VCOMXSD xmm, xmm/m64, {sae} | ||
xmm | explicit | read |
xmm/m64 | explicit | read |
RFLAGS | implicit | write |
Flags
| OF | SF | ZF | AF | PF | CF |
|---|---|---|---|---|---|
| All forms | |||||
| 0 | 0 | M | 0 | M | M |
Exceptions
The exception class is XED's name for the set of exception conditions that a form follows. How to read.
- All forms
AVX512-E3NF
Attributes
What else XED records about the forms. How to read.
- All forms
- follows MXCSR
CPUID and processors
Each form belongs to an XED ISA set. A form can be used when the processor reports every CPUID bit of one of its ISA set's alternatives.
| ISA set | CPUID | Processors |
|---|---|---|
AVX512_COM_EF_SCALAR | AVX10.2 | Nova Lake, Diamond Rapids |
More AVX10.2 instructions
- VADDBF16
- VCMPBF16
- VCOMISBF16
- VCOMXSH
- VCOMXSS
- VCVT2PH2BF8
- VCVT2PH2BF8S
- VCVT2PH2HF8
- VCVT2PH2HF8S
- VCVT2PS2PHX
- VCVTBF162IBS
- VCVTBF162IUBS
- VCVTBIASPH2BF8
- VCVTBIASPH2BF8S
- VCVTBIASPH2HF8
- VCVTBIASPH2HF8S
- VCVTHF82PH
- VCVTPH2BF8
- VCVTPH2BF8S
- VCVTPH2HF8
- VCVTPH2HF8S
- VCVTPH2IBS
- VCVTPH2IUBS
- VCVTPS2IBS
- VCVTPS2IUBS
- VCVTTBF162IBS
- VCVTTBF162IUBS
- VCVTTPD2DQS
- VCVTTPD2QQS
- VCVTTPD2UDQS
- VCVTTPD2UQQS
- VCVTTPH2IBS
- VCVTTPH2IUBS
- VCVTTPS2DQS
- VCVTTPS2IBS
- VCVTTPS2IUBS
- VCVTTPS2QQS
- VCVTTPS2UDQS
- VCVTTPS2UQQS
- VCVTTSD2SIS
Sources
- Intel XED v2026.08.23 (commit
0bcb6237345c): forms, encodings, operands, flags, exception classes, attributes, ISA sets, CPUID bits and chip model. - Intel Advanced Vector Extensions 10.2 Architecture Specification, revision 7.0 (361050-007, April 2026)
- Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2 (325383-093, September 2026)
The tables are derived from Intel XED, Copyright Intel Corporation, licensed under the Apache License 2.0; x86-64.net converted and reformatted them. The text is our own.