Does VXOR.VI produce a vector mask?
No. VXOR.VI writes ordinary SEW-width vector elements; VMXOR.MM applies logic to one mask bit per element index.
VXOR.VI applies SEW-width integer bitwise XOR to active RVV elements.
Extension condition: RV32/RV64 V 1.0; require enabled vector state, vill=0 and support for the selected SEW.
RISC-V VXOR.VI uses OP-V encoding and computes vs2 ^ the second source for each active element, writing vd. The second source is the 5-bit signed immediate sign-extended to SEW; 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; fix LMUL=m1, VLEN=4096, vstart=0, VLMAX=4096/16. Enter nonnegative bit patterns. Require support for the selected SEW; imm is a 5-bit signed immediate in -16..15, sign-extended to SEW before bitwise XOR with vs2. Equal-width source/destination overlap is legal; the result is not a mask. With v0.t, vd and data sources exclude v0. Only body is shown; inactive/tail follow vma/vta without definite displayed values. VL=0 updates nothing; success resets vstart=0. Stages are teaching steps, not processor cycles.
vxor.vi uses OP-V encoding. The animation places fixed fields, register fields, vm, and the imm 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.VI 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 and vs2 have EEW=SEW and EMUL=LMUL. The second source imm is a 5-bit signed immediate in -16..15, sign-extended to SEW.
32-bit OP-V: opcode=1010111, funct6=001011, funct3=011 (OPIVI); vm bit25, vs2 bits24:20, imm[4:0] bits19:15, vd bits11:7. Optional v0.t means vm=0; omission means vm=1.
Active elements compute vs2 XOR the sign-extended immediate and write SEW-bit results; imm=-1 inverts each bit. The result is ordinary vector data, not a mask.
Equal-width source/destination overlap is legal. Masked vd excludes v0, which cannot supply mask and data together. Prestart stays unchanged; inactive/tail follow vma/vta, retaining old values or allowing all ones, without guaranteed zeroing.
RV32/RV64 V 1.0; require enabled vector state, vill=0 and support for the selected SEW. Active elements satisfy vstart<=i<vl with masking enabled; vstart>=vl (including vl=0) updates nothing. Implementations may reject nonzero vstart values they cannot produce; success resets vstart=0. The animation fixes LMUL=m1, VLEN=4096, vstart=0; stages are not processor cycles.
Assume RV32/RV64 V 1.0, enabled vector state, valid supported e16,m1,ta,ma, XLEN=64, VLEN=4096, vl=4, vstart=0, initialized sources, and v0.mask[0..3]=1111. vs2[0]=0x00f0, imm=-1 → vd[0]=0xff0f; other active elements follow the same rule and tails are agnostic, allowing old values or all ones. Success resets vstart=0.
Assume RV32/RV64 V 1.0, enabled vector state, valid supported e16,m1,ta,ma, XLEN=64, VLEN=4096, vl=4, vstart=0, initialized sources, and v0.mask[0..3]=1111. vs2[0]=0x00f0, imm=-1 → vd[0]=0xff0f; other active elements follow the same rule and tails are agnostic, allowing old values or all ones. Success resets vstart=0.
No. VXOR.VI writes ordinary SEW-width vector elements; VMXOR.MM applies logic to one mask bit per element index.
The current vtype SEW determines element width; body elements satisfy vstart<=i<vl, with vl as the upper bound rather than a count independent of vstart.
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.