Instruction
VCOMXSH
Compares the low half-precision values and sets OF, SF, ZF, PF and CF so that one conditional jump can test any relation; NaNs signal invalid.
- Extensions
- Forms
- 2 (2 EVEX)
- Data
- Intel XED v2026.08.23
VCOMXSH compares the low half-precision values of a register and a register or two bytes of memory and sets OF, SF, ZF, PF and CF in the four patterns that VCOMXSD’s page tabulates, so that each relation is one condition code, as VCOMXSS’s page lists. It raises the invalid-operation exception for any NaN input; VUCOMXSH only for a signaling one. Its opcode is 2Fh in EVEX map 5 with an F3 prefix, the opcode of VCOMISH, which has no prefix, and it belongs to AVX10.2 rather than AVX512-FP16.
A loose entry
The AVX10.2 specification’s entry (revision 7.0) is less careful than its single and double siblings. Its description compares VCOMXSH with VUCOMISH rather than VCOMISH and leaves out the sentence on quiet and signaling NaNs that the other entries carry; the exception rule comes from VUCOMXSH’s entry, which states it. The revision history notes that 7.0 corrected the bit range in the operation of both half-precision entries to bits 15:0.
In our builds
GCC 14 has no AVX10.2 option, and Clang 23 with -mavx10.2 did not emit
VCOMXSH for anything we compiled. _mm_comieq_sh becomes VCMPSH with
predicate EQ_OS into a mask register, read back with KMOVW, and
_mm_comilt_sh a VCMPLTSH the same way; C’s comparison operators on
_Float16 are quiet and use VUCOMXSH or VUCOMISH.
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 half 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.f16[0], src2.f16[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 |
|---|---|---|
VCOMXSH xmm, xmm/m16, {sae} | ||
xmm | explicit | read |
xmm/m16 | 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
- VCOMXSD
- 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)
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.