[PATCH] D129758: [AArch64][SVE] Lower DUPLANE128 to LD1RQD

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 15 12:27:22 PDT 2022


paulwalker-arm added inline comments.


================
Comment at: llvm/test/CodeGen/AArch64/sve-intrinsics-perm-select.ll:592-594
   %1 = tail call fast <vscale x 2 x double> @llvm.vector.insert.nxv2f64.v2f64(<vscale x 2 x double> undef, <2 x double> <double 1.000000e+00, double 2.000000e+00>, i64 0)
   %2 = tail call fast <vscale x 2 x double> @llvm.aarch64.sve.dupq.lane.nxv2f64(<vscale x 2 x double> %1, i64 0)
   ret <vscale x 2 x double> %2
----------------
paulwalker-arm wrote:
> Based on the patch I think you should simplify all `ld1rq#` tests by removing the constants and just have the test load the data explicitly.  This will also help in the future if there turns out to be a better way to compute the constants vectors these tests are doing.  So for example:
> ```
> define dso_local <vscale x 2 x double> @dupq_ld1rqd_f64(ptr %a) {
>   %1 = load <2 x double>, ptr %a
>   %2 = tail call fast <vscale x 2 x double> @llvm.vector.insert.nxv2f64.v2f64(<vscale x 2 x double> undef, <2 x double> %1, i64 0)
>   %3 = tail call fast <vscale x 2 x double> @llvm.aarch64.sve.dupq.lane.nxv2f64(<vscale x 2 x double> %2, i64 0)
>   ret <vscale x 2 x double> %3
> }
> ``` 
> I also believe the tests are better placed in `sve-ld1r.ll`.
I'd like to backtrack slightly.  I still believe we want simpler tests added to sve-ld1r.ll for the new isel patterns. Then I guess these existing tests are required to show the need for the DAG combine. For this reason I think you want two patches, one for the isel then a second for the DAG combine


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D129758



More information about the llvm-commits mailing list