[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