[PATCH] D139732: [AMDGPU] Add pass to rewrite partially used virtual superregisters after RenameIndependentSubregs pass with registers of minimal size (WIP)

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 14 08:47:59 PST 2022


arsenm added inline comments.


================
Comment at: llvm/include/llvm/MC/LaneBitmask.h:85-88
     static constexpr LaneBitmask getLane(unsigned Lane) {
       return LaneBitmask(Type(1) << Lane);
     }
+    static constexpr LaneBitmask getLanes(unsigned NumLanes) {
----------------
having "getLane" and "getLanes" is going to be terribly confusing. Needs a different name


================
Comment at: llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.cpp:108
+                                             unsigned Size) const {
+  auto R = SubRegs.try_emplace(std::pair(Offset, Size), 0);
+  if (R.second) {
----------------
I think {Offset, Size} should work now


================
Comment at: llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.cpp:155
+  LLVM_DEBUG(dbgs() << "  Try shift " << RShift << '\n');
+  BitVector ClassMask(TRI->getNumRegClasses(), true);
+  for (auto &P : SubRegs) {
----------------
Comment what true is?


================
Comment at: llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.cpp:162-164
+    if (!SubRegRC)
+      if (!(SubRegRC = TRI->getSubRegisterClass(RC, OldSubReg)))
+        return nullptr;
----------------
```
if (!SubRegRC)
  SubRegRC = ...

if (!SubRegRC)
  return nullptr

```


================
Comment at: llvm/lib/Target/AMDGPU/GCNRewritePartialRegUses.cpp:302-305
+  if (LIS) {
+    LIS->removeInterval(Reg);
+    LIS->createAndComputeVirtRegInterval(NewReg);
+  }
----------------
Can you do better than delete and recreate the liveness? Can we do this before liveness is computed?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D139732



More information about the llvm-commits mailing list