[PATCH] D155592: [AArch64] Reuse larger DUPLANE if available

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 19 07:44:38 PDT 2023


dmgreen added a comment.

Could we add a PatFrags that looks something like this:

  def dup_v8i16 : PatFrags<(ops node:$LHS, node:$RHS),
                           [(v4i16 (extract_subvector (v8i16 (AArch64duplane16 (v8i16 node:$LHS), node:$RHS)), (i64 0))),
                            (v4i16 (AArch64duplane16 (v8i16 node:$LHS), node:$RHS))]>;

So that it matches either a v4i16 DUPLANE, or a subvector_extract of a v8i16 DUPLANE. Maybe call it something like AArch64duplanev416, I'm not sure. It could then be used in the existing `set` patterns for all the lane instructions. I think many of them might hit the same problems we see in the tests, but don't happen to have tests for every instruction.

  [(set (v4i32 V128:$Rd),
      (OpNode (v4i16 V64:$Rn),
              (dup_v8i16 (v8i16 V128_lo:$Rm), VectorIndexH:$idx)))]> {


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

https://reviews.llvm.org/D155592



More information about the llvm-commits mailing list