[PATCH] D123442: [MC][AVR] Implement decoding STD/LDD

Ben Shi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 9 04:21:20 PDT 2022


benshi001 added a comment.

This patch partially fixes



================
Comment at: llvm/lib/Target/AVR/Disassembler/AVRDisassembler.cpp:279
+                                    const MCDisassembler *Decoder) {
+  // Decode LDD/STD with offset less than 8.
+  if ((Insn & 0xf000) == 0x8000) {
----------------
LDD/STD should be fully decoded by `decodeMemri`, but due to very complex reason, `decodeMemri` only correctly decodes LDD/STD with offset > 7, and the case offset <= 7 falls into `decodeLoadStore` (decoder method of LD/ST).

We should re-think the organization of definition of LD/ST/LDD/STD in `TD` files to avoid that. But currently I can not figure out a proper way, it invloves register allocation.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D123442/new/

https://reviews.llvm.org/D123442



More information about the llvm-commits mailing list