What is the main difference from the ordinary form?
The M form returns canonical NaN if either input is NaN; the ordinary form returns the other non-NaN operand when exactly one input is NaN.
Return the maximum of two single-precision floating-point operands.
FMAXM.S is the Zfa single-precision IEEE 754-2019 maximum operation: either NaN input produces canonical NaN; otherwise it returns the numerically larger operand. A quiet NaN does not set NV, a signaling NaN sets NV, and -0.0 is less than +0.0.
Shows the Zfa + F-extension single-precision OP-FP flow: decode fields, read FP operands, perform FMAXM semantics, then write rd.
The word is split as an R-type OP-FP instruction; single-precision OP-FP instructions use opcode 1010011.
The default example shows the official signed-zero ordering: -0.0 is less than +0.0. If either input is NaN, Zfa FMINM/FMAXM returns canonical NaN; a signaling NaN sets NV.
The default example shows the official signed-zero ordering: -0.0 is less than +0.0. If either input is NaN, Zfa FMINM/FMAXM returns canonical NaN; a signaling NaN sets NV.
Assumes required extensions and FS enabled, valid NaN-boxing, and initial fflags=0. Finite inputs use the exact whitelist; signed zeros, infinities, qNaN, and sNaN are supported. Other inputs stop execution. One source register has one initial value; rd may overlap a source and f0 accepts writes. Steps are teaching views.
This animation shows only Zfa + F-extension ISA-visible OP-FP encoding, example numeric results, and fflags relationship; it does not model FPU pipelines, latency, every IEEE 754 corner case, or microarchitecture.
FMAXM.S is a Zfa OP-FP selection instruction. Its key rule is that either NaN returns canonical NaN, unlike ordinary FMAX.S; it does not use an rm rounding operand.
Understand this scenario with real code like «fmaxm.s f0, f1, f2 # f1=-0.0, f2=+0.0 -> f0=+0.0».
Understand this scenario with real code like «fmaxm.s f0, f1, f2 # f1=-0.0, f2=+0.0 -> f0=+0.0».
The M form returns canonical NaN if either input is NaN; the ordinary form returns the other non-NaN operand when exactly one input is NaN.
No. It selects the larger value, or returns canonical NaN if either input is NaN; it has no rm rounding field.