Does VXOR.VX produce a vector mask?
No. It writes ordinary SEW-wide vector elements. Comparisons write mask results; VMXOR.MM performs logical XOR on one mask bit per element.
VXOR.VX applies SEW-width integer bitwise XOR to active RVV elements.
RISC-V VXOR.VX uses OP-V encoding and computes vs2 ^ the second source for each active element, writing vd. The second source is integer scalar register x[rs1] converted to a SEW-width element by the .vx rules; with vm=0, v0.t controls participating elements.
Starts from OP-V encoding fields, then shows how VXOR applies SEW-width bitwise XOR to active elements and writes vd.
Teaching context: V 1.0, enabled vector state and valid supported vtype/SEW; LMUL=m1, VLEN=4096, vstart=0, VLMAX=4096/16. Active elements compute vs2 XOR x[rs1]; take low SEW bits when XLEN>SEW, sign-extend when XLEN<SEW, and x0 supplies zero, writing SEW-bit ordinary vector elements. Equal-width source/destination overlap is legal; with v0.t, vd and data sources exclude v0. Only body is shown, without definite inactive/tail values; vma/vta apply. VL=0 updates no destination elements. Stages are teaching steps, not processor cycles.
vxor.vx uses OP-V encoding. The animation places fixed fields, register fields, vm, and the rs1 field in one encoding strip.
This animation shows only ISA-visible relationships from the official V extension: OP-V field decode, active-element reads, SEW-width integer bitwise XOR, mask control, and vd writeback. It does not model pipelines, caches, or timing.
VXOR.VX is a V-extension single-width integer logical instruction: within vl, active elements compute vs2 ^ the second source, keep the SEW-bit result, and write ordinary vector register vd.
vd, vs2: vector groups with EEW=SEW and EMUL=LMUL; active elements write SEW-bit XOR results, not mask results.
32-bit OP-V: opcode=1010111, funct6=001011, funct3=100 (OPIVX). vm is bit25, vs2 bits24:20, rs1 bits19:15, and vd bits11:7. vm is not a numeric assembly operand: optional v0.t means vm=0; omission means vm=1.
The second source x[rs1] supplies low SEW bits when XLEN>SEW or sign-extends to SEW when XLEN<SEW; x0 always supplies zero. Active elements compute vs2[i] XOR scalar.
Equal-width source/destination overlap is legal. Register groups align to EMUL. Ordinary masked vd excludes v0, which cannot supply both an EEW=1 mask and data.
Require V 1.0, enabled vector state, vill=0, and support for selected SEW/EEW and EMUL. Active elements satisfy vstart<=i<vl with masking enabled. Prestart stays unchanged; inactive/tail follow vma/vta, allowing old values or all ones. vstart>=vl (including vl=0) updates no destination elements; success resets vstart=0. The animation fixes VLEN=4096, LMUL=m1, vstart=0; stages are not processor cycles.
Assume enabled V 1.0/vector state, valid supported e16,m1,tu,mu, VLEN=4096, vstart=0, supported source widths, and initialized sources/v0. vsetivli requests AVL=4, giving vl=4; v0.mask[0..3]=1011. vs2[0]=0x00f0, x11=0x000f → vd[0]=0x00ff; inactive lane1 and tails keep old destination values.
Assume enabled V 1.0/vector state, valid supported e16,m1,tu,mu, VLEN=4096, vstart=0, supported source widths, and initialized sources/v0. vsetivli requests AVL=4, giving vl=4; v0.mask[0..3]=1011. vs2[0]=0x00f0, x11=0x000f → vd[0]=0x00ff; inactive lane1 and tails keep old destination values.
No. It writes ordinary SEW-wide vector elements. Comparisons write mask results; VMXOR.MM performs logical XOR on one mask bit per element.
The vtype SEW determines element width. Body elements satisfy vstart≤i<vl; only mask-enabled body elements perform the operation.
Those elements do not execute this logical operation. The destination element follows the current mask policy, so the mnemonic does not imply a fixed zero result.