[PATCH] D147522: [LoopVectorize] Take vscale into account when deciding to create epilogues

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 12 08:37:15 PDT 2023


paulwalker-arm accepted this revision.
paulwalker-arm added a comment.
This revision is now accepted and ready to land.

I've a couple of suggestions but otherwise looks good.



================
Comment at: llvm/test/Transforms/LoopVectorize/AArch64/sve-epilog-vect-vscale-tune.ll:3-4
+; REQUIRES: asserts
+; RUN: opt -S -passes=loop-vectorize,instsimplify -force-vector-interleave=1 \
+; RUN:   -mcpu=neoverse-v1 < %s | FileCheck %s --check-prefix=CHECK-NV1
+; RUN: opt -S -passes=loop-vectorize,instsimplify -force-vector-interleave=1 \
----------------
Perhaps add a RUN line for the default (i.e. with no -mcpu option) that can presumably reuse the check lines for CHECK-NV1.


================
Comment at: llvm/test/Transforms/LoopVectorize/AArch64/sve-epilog-vect-vscale-tune.ll:51
+; CHECK-NV1-NEXT:    br i1 [[MIN_EPILOG_ITERS_CHECK]], label [[VEC_EPILOG_SCALAR_PH]], label [[VEC_EPILOG_PH]]
+; CHECK-NV1:       vec.epilog.ph:
+; CHECK-NV1-NEXT:    [[VEC_EPILOG_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], [[VEC_EPILOG_ITER_CHECK]] ], [ 0, [[VECTOR_MAIN_LOOP_ITER_CHECK]] ]
----------------
It's up to you Dave but I don't see autogenerating the check lines offering any value here. If anything it makes it harder to understand the effect.  Something simple like:
```
; CHECK-EPILOGUE:        vec.epilog.ph:
; CHECK-EPILOGUE:        load <vscale x 4 x i16>
; CHECK-NO-EPILOGUE-NOT: vec.epilog.ph:
```
seems like a clearer test?



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

https://reviews.llvm.org/D147522



More information about the llvm-commits mailing list