From 44a005ff4aa5bcfd06749b5f9ec6bbd582a1ebb0 Mon Sep 17 00:00:00 2001 From: Mel Chen Date: Fri, 17 Jan 2025 01:55:32 -0800 Subject: [PATCH] [LV][EVL] Address post-comments for disabling fixed-order recurrence with EVL tail folding. (NFC) --- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 6 +++--- .../vectorize-force-tail-with-evl-fixed-order-recurrence.ll | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index 8024cde41b5f9..7e89f357cc90c 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -1447,11 +1447,11 @@ class LoopVectorizationCostModel { // Override forced styles if needed. // FIXME: use actual opcode/data type for analysis here. // FIXME: Investigate opportunity for fixed vector factor. + // FIXME: support fixed-order recurrences by fixing splice of non VFxUF + // penultimate EVL. bool EVLIsLegal = UserIC <= 1 && TTI.hasActiveVectorLength(0, nullptr, Align()) && - !EnableVPlanNativePath && - // FIXME: remove this once fixed-ordered recurrence is supported. - Legal->getFixedOrderRecurrences().empty(); + !EnableVPlanNativePath && Legal->getFixedOrderRecurrences().empty(); if (!EVLIsLegal) { // If for some reason EVL mode is unsupported, fallback to // DataWithoutLaneMask to try to vectorize the loop with folded tail diff --git a/llvm/test/Transforms/LoopVectorize/RISCV/vectorize-force-tail-with-evl-fixed-order-recurrence.ll b/llvm/test/Transforms/LoopVectorize/RISCV/vectorize-force-tail-with-evl-fixed-order-recurrence.ll index 809b69900731a..3e6588befaec5 100644 --- a/llvm/test/Transforms/LoopVectorize/RISCV/vectorize-force-tail-with-evl-fixed-order-recurrence.ll +++ b/llvm/test/Transforms/LoopVectorize/RISCV/vectorize-force-tail-with-evl-fixed-order-recurrence.ll @@ -12,8 +12,8 @@ ; RUN: -mtriple=riscv64 -mattr=+v,+f -S < %s| FileCheck %s --check-prefix=NO-VP ; FIXME: Fixed-order recurrence is not supported yet with EVL tail folding. -; The llvm.splice may occurs unexpected behavior if the evl of the -; second-to-last iteration is not VF*UF. +; The llvm.splice may occur unexpected behavior if the evl of the second-to-last +; iteration is not VF*UF. define void @first_order_recurrence(ptr noalias %A, ptr noalias %B, i64 %TC) { ; IF-EVL-LABEL: define void @first_order_recurrence(