[llvm] [AArch64] Improve codegen of vectorised early exit loops (PR #119534)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 19 07:41:52 PST 2024
================
@@ -105,7 +105,9 @@ define i64 @select_or_reduce_nxv2i1(ptr nocapture noundef readonly %src) {
; CHECK-NEXT: [[EXIT_COND:%.*]] = or i1 [[OR_REDUC]], [[IV_CMP]]
; CHECK-NEXT: br i1 [[EXIT_COND]], label %[[MIDDLE_SPLIT:.*]], label %[[VECTOR_BODY]]
; CHECK: [[MIDDLE_SPLIT]]:
-; CHECK-NEXT: [[SEL:%.*]] = select i1 [[OR_REDUC]], i64 1, i64 0
+; CHECK-NEXT: [[TMP2:%.*]] = icmp eq <vscale x 2 x ptr> [[WIDE_LOAD]], zeroinitializer
+; CHECK-NEXT: [[TMP3:%.*]] = tail call i1 @llvm.vector.reduce.or.nxv2i1(<vscale x 2 x i1> [[TMP2]])
+; CHECK-NEXT: [[SEL:%.*]] = select i1 [[TMP3]], i64 1, i64 0
----------------
paulwalker-arm wrote:
Do you know why the compare is also being sunk? It seems like something we should avoid?
https://github.com/llvm/llvm-project/pull/119534
More information about the llvm-commits
mailing list