VMAX.VX compares vs2 with x[rs1] after the XLEN/SEW scalar rule lane by lane for active elements within the current vl and selects the larger value by signed integer ordering. The result is the selected source element's SEW-bit pattern written to vd; it does not compute a difference.
32-bit OP-V encoding: opcode=1010111, funct6=000111, funct3=100 (OPIVX). Syntax places vs2 before vs1/rs1.
Active elements compare vs2 and the second source using two’s-complement signed integer ordering and write the larger value’s SEW-bit pattern to vd.
When XLEN>SEW, use the low SEW bits of x[rs1]; when XLEN<SEW, sign-extend to SEW. rs1=x0 supplies zero.
Body elements satisfy vstart≤i<vl. Omitting v0.t means vm=1; including it means vm=0, enabling only masked-on body elements. Prestart is unchanged; inactive/tail elements follow vma/vta, with agnostic elements retaining old values or becoming all ones.
VL=0 or vstart≥vl updates no destination elements, including tails. Normal completion resets vstart=0 and leaves vl unchanged. Masked vd cannot cover v0, and v0 cannot be read as both an EEW=1 mask and SEW data.