Mask elements
Each element index maps to one predicate bit; this instruction operates on mask bits, not SEW-wide data elements.
Vector mask XNOR: vd.mask[i] = ~(vs2.mask[i] ^ vs1.mask[i])
VMXNOR.MM is an RVV vector mask XNOR instruction. The `.mm` suffix means the sources and destination are mask-register operands; each mask element is one bit, and the instruction computes vd.mask[i] = ~(vs2.mask[i] ^ vs1.mask[i]) by element index. These instructions are always unmasked, vm=0 encodings are reserved, and mask-tail bits are always tail-agnostic and have no deterministic value software may rely on.
Starts from V-extension encoding fields, then shows XNOR mask-logical field decode, mask-bit reads, per-lane execution, and vd writeback.
This animation fixes vstart=0 and models vd.mask[i] = ~(vs2.mask[i] ^ vs1.mask[i]) only for the shown VL body elements. Source rows show the original operand values used by the model; the specification permits vd to overlap either source. The final vd appears at Writeback, and successful completion leaves vstart at zero. The unshown mask tail is always tail-agnostic and may retain old bits, become 1s, or contain a result allowed by the specification, so the animation does not present a deterministic tail value.
VMXNOR.MM is the vector mask XNOR member of the RVV mask-register logical instructions, used for predicate composition. The `.mm` suffix means vd, vs2, and vs1 have mask-register semantics; each element is one bit, independent of the current data SEW.
When reading VMXNOR.MM, focus on bit-by-bit predicate composition in mask registers. .mm: sources and destination are mask registers, operating on one predicate bit per element.
Each element index maps to one predicate bit; this instruction operates on mask bits, not SEW-wide data elements.
vd can be any mask register receiving the result mask, while vs2 and vs1 provide the two source masks combined bit by bit at the same element index.
Mask logical instructions are always unmasked; only a result written or moved into v0 is later consumed through v0.t by ordinary masked vector instructions.
Understand this scenario with real code like «vmxnor.mm v1, v2, v3».
Understand this scenario with real code like «vmxnor.mm v1, v2, v3».
Understand this scenario with real code like «vmxnor.mm v1, v2, v3».
It means a mask-mask form: vd, vs2, and vs1 are interpreted as mask registers, operating on one predicate bit per element.
The formula is vd.mask[i] = ~(vs2.mask[i] ^ vs1.mask[i]).
No. Vector mask logical instructions are always unmasked and vm=0 encodings are reserved; vd can be any mask register. Only a result written or moved into v0 is later consumed through v0.t by ordinary masked vector instructions.
It means the two source masks are equal at that lane: both 1 or both 0.