[PATCH] D142594: [AArch64] Eliminating the use of integer unit in moving from a Neon scalar result of a uaddlv to a Neon vector

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 13 06:46:03 PST 2023


fhahn added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp:582
+          .add(MI.getOperand(2))
+          .addUse(SrcReg, RegState::Kill)
+          .addImm(0);
----------------
dmgreen wrote:
> It may not be Killed if it has other uses.
If this is not covered by the existing tests, could you add one that covers this case?


================
Comment at: llvm/test/CodeGen/AArch64/peephole-insvigpr.mir:25
+  entry:
+    %vaddlv = tail call i64 @llvm.aarch64.neon.uaddlv.i64.v4i32(<4 x i32> zeroinitializer)
+    %1 = insertelement <6 x i64> zeroinitializer, i64 %vaddlv, i64 0
----------------
you should be able to keep the function here to a minimum, i.e.

```
  define void @insert_vec_v6i64_uaddlv_from_v4i32() {
    ret void
   }
```

Then you have to remove the references to LLVM IR in the MIR itself, .e.g.


`bb.0.entry: -> `bb.0:`


 `STRDui killed %17, %0, 2 :: (store (s64) into %ir.0 + 16) -> STRDui killed %17, %0, 2 :: (store (s64))`


================
Comment at: llvm/test/CodeGen/AArch64/peephole-insvigpr.mir:86
+hasEHCatchret:   false
+hasEHScopes:     false
+hasEHFunclets:   false
----------------
I think most of those should be removable. Also would be good to add the new test separately.


================
Comment at: llvm/test/CodeGen/AArch64/peephole-insvigpr.mir:92
+registers:
+  - { id: 0, class: gpr64common, preferred-register: '' }
+  - { id: 1, class: fpr128, preferred-register: '' }
----------------
you probably are also able to remove this.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D142594



More information about the llvm-commits mailing list