[PATCH] D114611: [AVR] Expand STDWSPQRr & STDSPQRr, approach #2

Ben Shi via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 19 22:14:13 PDT 2022


benshi001 added a comment.

I summary my suggestion in general, excluding some inline comments about coding details.

1. Seperate the location movement of test files into a different patch A.
2. Seperate the elimination of `AVRRelaxMemPass` / combination into `expand<AVR::STDWPtrQRr>` to a different patch B.

3. I also concern current solution is a bit agresssive, so I would like to suggest a moderate way.

3.1 Kill the function `fixStackStores` and its orginal calls.
3.2 Mark the definition of `STDWSPQRr`/`STDSPQRr` with `Defs = [R31R30]` (Most ordinary `STDWSPQRr`/`STDSPQRr` will be substituted before regalloc, so that is fine.)
3.3 Still implement `expand<AVR::STDSPQRr>` and `expand<AVR::STDWPQRr>` as current patch does, but do not substitute to `AVR::STDPtrQRr`/`AVR::STDWPtrQRr`, we should do real instruction expansion with several `buildMI` calls. Since we have marked `Defs = [R31R30]` to `STDWSPQRr`/`STDSPQRr`, it is safe to expand to

  in r30, 62
  in r31, 63
  subiw z, offset
  std z, Rsrc


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D114611



More information about the llvm-commits mailing list