[llvm] [RISCV] Add register group overlap checks to the assembler for vector indexed segment load (PR #184963)

Pengcheng Wang via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 9 19:57:59 PDT 2026


================
@@ -3874,10 +3944,16 @@ bool RISCVAsmParser::validateInstruction(MCInst &Inst,
     assert(VS2Idx >= 0 && "No vs2 operand?");
     unsigned CheckEncoding =
         RI->getEncodingValue(Inst.getOperand(VS2Idx).getReg());
+    unsigned NF = getNFforLXSEG(Opcode);
     for (unsigned i = 0; i < Lmul; i++) {
-      if ((DestEncoding + i) == CheckEncoding)
-        return Error(Loc, "the destination vector register group cannot overlap"
-                          " the source vector register group");
+      if (NF == 1 && (DestEncoding + i) == CheckEncoding)
+        return Error(Loc, "the destination vector register group cannot"
+                          " overlap the source vector register group");
+    }
+    for (unsigned i = 0; i < getNFforLXSEG(Opcode); i++) {
----------------
wangpc-pp wrote:

IIUC, you mean named operand?

https://github.com/llvm/llvm-project/pull/184963


More information about the llvm-commits mailing list