v_cmp_class_f16 GPU Native ISA AMD Vector
V CMP CLASS F16 Comparison
v_cmp_class_f16
Evaluate the IEEE numeric class function specified as a 10 bit mask in the second input on the first input, a half-precision float, and set the…
Encoding
Verified bit-level encoding data is not yet available for this instruction.
The instruction-format classification below (VOPC)
is well-documented and stable; exact per-target opcode/field bit positions have not
yet been imported from a verified source.
Operands
Operand details have not yet been curated for this instruction.
GFX Target Compatibility
| Target | Support |
|---|---|
| gfx1100 | ✅ Supported |
Note that the S1 has a format of f16 since floating point literal constants are interpreted as 16 bit value for this opcode.
Related
More in Comparison
Reference
AMDGPU / GFX ISA
Description
Evaluate the IEEE numeric class function specified as a 10 bit mask in the second input on the first input, a half-precision float, and set the per-lane condition code to the result. Store the result into VCC or a scalar register. The function reports true if the floating point value is any of the numeric types selected in the 10 bit mask according to the following list: S1.u[0] value is a signaling NAN. S1.u[1] value is a quiet NAN. S1.u[2] value is negative infinity. S1.u[3] value is a negative normal value. S1.u[4] value is a negative denormal value. S1.u[5] value is negative zero. S1.u[6] value is positive zero. S1.u[7] value is a positive denormal value. S1.u[8] value is a positive normal value. S1.u[9] value is positive infinity.
Semantics
declare result : 1'U;
if isSignalNAN(64'F(S0.f16)) then
result = S1.u32[0]
elsif isQuietNAN(64'F(S0.f16)) then
result = S1.u32[1]
elsif exponent(S0.f16) == 31 then
// +-INF
result = S1.u32[sign(S0.f16) ? 2 : 9]
elsif exponent(S0.f16) > 0 then
// +-normal value
result = S1.u32[sign(S0.f16) ? 3 : 8]
elsif 64'F(abs(S0.f16)) > 0.0 then
// +-denormal value
result = S1.u32[sign(S0.f16) ? 4 : 7]
else
// +-0.0
result = S1.u32[sign(S0.f16) ? 5 : 6]
endif;
D0.u64[laneId] = result;
// D0 = VCC in VOPC encoding.
Example
v_cmp_class_f16 vcc, -1, v2A real instruction accepted by the LLVM assembler, taken verbatim from LLVM's own AMDGPU MC test suite (gfx11). Not from an AMD document, and not authored here.
Sources
- User Guide for AMDGPU Backend ↗ - LLVM Project
-
"AMD Instinct MI300" Instruction Set Architecture: Reference Guide ↗
- Advanced Micro Devices, Inc.
Reference Guide, page 219. - LLVM MC assembler tests for AMDGPU (gfx11) ↗ - LLVM Project