Instruction
VUCOMXSD
Compares the low double-precision values of two operands like VCOMXSD but signals an invalid exception only for signaling NaNs.
- Extensions
- Forms
- 2 (2 EVEX)
- Data
- Intel XED v2026.08.23
VUCOMXSD is the quiet partner of VCOMXSD: it compares the low doubles of a register and a register or eight bytes of memory and sets OF, SF, ZF, PF and CF in the same four patterns, which that page tabulates, but raises the invalid-operation exception only for a signaling NaN. It relates to VUCOMISD as VCOMXSD to VCOMISD: same opcode, 2Eh in map 0F with W1, with an F2 prefix in place of 66, and EVEX only, in AVX10.2. In the AVX10.2 specification (revision 7.0) the two instructions share their operation text word for word, an “ordered compare” for both; the difference in exceptions is stated only in the descriptions.
Equality in one test
C’s == is a quiet compare that must be false when either operand is a
NaN. VUCOMISD sets ZF for an unordered result as well as for “equal”,
so a compiler has to test PF too; VUCOMXSD clears ZF for unordered
inputs, and ZF alone answers.
In our builds
GCC 14 has no AVX10.2 option. Clang 23 with -mavx10.2 compiles
return a == b; on doubles to VUCOMXSD and SETE, a != b to VUCOMXSD
and SETNE, and if (a == b) choosing between two values to VUCOMXSD and
one CMOVNE, where -march=x86-64-v4 needs VUCOMISD, CMOVNE and CMOVP.
a < b, a <= b and a > b still use VUCOMISD with SETA or SETAE, the
operands swapped for the first two. _mm_ucomieq_sd and
_mm_ucomineq_sd give VUCOMXSD with SETE and SETNE. 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 = ucomx(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
# only an SNaN raises IE
# {sae}: no exception flagsNot run on a processor: none of these processors has AVX10.2.
Operands
| Operand | Kind | Action |
|---|---|---|
VUCOMXSD 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
- VFNMSUB132BF16
- VFNMSUB213BF16
- VFNMSUB231BF16
- VFPCLASSBF16
- VGETEXPBF16
- VGETMANTBF16
- VMAXBF16
- VMINBF16
- VMINMAXBF16
- VMINMAXPD
- VMINMAXPH
- VMINMAXPS
- VMINMAXSD
- VMINMAXSH
- VMINMAXSS
- VMOVD
- VMOVW
- VMPSADBW
- VMULBF16
- VPDPBSSD
- VPDPBSSDS
- VPDPBSUD
- VPDPBSUDS
- VPDPBUUD
- VPDPBUUDS
- VPDPWSUD
- VPDPWSUDS
- VPDPWUSD
- VPDPWUSDS
- VPDPWUUD
- VPDPWUUDS
- VRCPBF16
- VREDUCEBF16
- VRNDSCALEBF16
- VRSQRTBF16
- VSCALEFBF16
- VSQRTBF16
- VSUBBF16
- VUCOMXSH
- VUCOMXSS
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.