[llvm] [llvm][arm] add T1 and T2 assembly options for vlldm and vlstm (PR #83116)

Tomas Matheson via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 27 07:16:31 PST 2024


================
@@ -7030,3 +7033,26 @@ static DecodeStatus DecodeT2AddSubSPImm(MCInst &Inst, unsigned Insn,
 
   return DS;
 }
+
+static DecodeStatus DecodeLazyLoadStoreMul(MCInst &Inst, unsigned Insn,
+                                           uint64_t Address,
+                                           const MCDisassembler *Decoder) {
+  DecodeStatus S = MCDisassembler::Success;
+
+  const unsigned Rn = fieldFromInstruction(Insn, 16, 4);
+  // Adding Rn, holding memory location to save/load to/from, the only argument
+  // that being encoded.
+  // '$Rn' in the assembly.
+  if (!Check(S, DecodeGPRRegisterClass(Inst, Rn, Address, Decoder)))
+    return MCDisassembler::Fail;
+  // An optional predicate, '$p' in the assembly.
+  Inst.addOperand(MCOperand::createImm(0));
+  // A register that required for when the predicate exists (see function
+  // 'UpdateThumbVFPPredicate' and 'ARMInstrFormats.td::pred')
+  Inst.addOperand(MCOperand::createReg(ARM::NoRegister));
+  // Am immediate that represnts a floating point registers list. '$regs' in the
+  // assembly.
+  Inst.addOperand(MCOperand::createImm(0)); // Arbitrary value, has no effect.
----------------
tmatheson-arm wrote:

The register list is not actually encoded, so `DecodeRegListOperand` can't be used.

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


More information about the llvm-commits mailing list