[PATCH] D126772: [LoopVectorize] Add support for invariant stores of ordered reductions
Malhar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 1 04:50:38 PDT 2022
malharJ created this revision.
malharJ added reviewers: fhahn, igor.kirillov.
Herald added a subscriber: hiraditya.
Herald added a project: All.
malharJ requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D126772
Files:
llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
llvm/test/Transforms/LoopVectorize/AArch64/strict-fadd.ll
Index: llvm/test/Transforms/LoopVectorize/AArch64/strict-fadd.ll
===================================================================
--- llvm/test/Transforms/LoopVectorize/AArch64/strict-fadd.ll
+++ llvm/test/Transforms/LoopVectorize/AArch64/strict-fadd.ll
@@ -1361,10 +1361,10 @@
; Test case with invariant store where fadd is strict.
define void @reduction_store_to_invariant_address(float* %dst, float* readonly %src) {
; CHECK-ORDERED-LABEL: @reduction_store_to_invariant_address(
-; CHECK-ORDERED-NOT: vector.body
+; CHECK-ORDERED: vector.body
; CHECK-UNORDERED-LABEL: @reduction_store_to_invariant_address(
-; CHECK-UNORDERED-NOT: vector.body
+; CHECK-UNORDERED: vector.body
; CHECK-NOT-VECTORIZED-LABEL: @reduction_store_to_invariant_address(
; CHECK-NOT-VECTORIZED-NOT: vector.body
@@ -1383,7 +1383,7 @@
store float %add, float* %arrayidx, align 4
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%exitcond = icmp eq i64 %indvars.iv.next, 1000
- br i1 %exitcond, label %for.cond.cleanup, label %for.body
+ br i1 %exitcond, label %for.cond.cleanup, label %for.body, !llvm.loop !0
for.cond.cleanup:
ret void
Index: llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
@@ -1020,8 +1020,7 @@
// reduction operations in-loop, and do not have intermediate store.
return (all_of(getReductionVars(), [&](auto &Reduction) -> bool {
const RecurrenceDescriptor &RdxDesc = Reduction.second;
- return !RdxDesc.hasExactFPMath() ||
- (RdxDesc.isOrdered() && !RdxDesc.IntermediateStore);
+ return !RdxDesc.hasExactFPMath() || RdxDesc.isOrdered();
}));
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126772.433357.patch
Type: text/x-patch
Size: 1810 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220601/b6cc0b03/attachment.bin>
More information about the llvm-commits
mailing list