Files
clang-p2996/llvm/test/Transforms/SLPVectorizer/SystemZ/SLP-cmp-cost-query.ll
Philip Reames aada8f2e54 [slp] Tweak debug costing output to include VL
This makes it much easier to understand which vector length is being considered when the same set of nodes are evaluated at multiple vector lengths.
2023-08-30 09:13:19 -07:00

37 lines
1.2 KiB
LLVM

; REQUIRES: asserts
; RUN: opt -mtriple=systemz-unknown -mcpu=z13 -passes=slp-vectorizer -debug-only=SLP \
; RUN: -S -disable-output < %s 2>&1 | FileCheck %s
;
; Check that SLP vectorizer gets the right cost difference for a compare
; node.
; Function Attrs: norecurse nounwind readonly
define void @fun(ptr nocapture, i32 zeroext) local_unnamed_addr #0 {
.lr.ph.preheader:
br label %.lr.ph
.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph
%2 = phi i32 [ %., %.lr.ph ], [ undef, %.lr.ph.preheader ]
%3 = phi i32 [ %.9, %.lr.ph ], [ undef, %.lr.ph.preheader ]
%4 = icmp ult i32 %2, %1
%5 = select i1 %4, i32 0, i32 %1
%. = sub i32 %2, %5
%6 = icmp ult i32 %3, %1
%7 = select i1 %6, i32 0, i32 %1
%.9 = sub i32 %3, %7
%8 = zext i32 %. to i64
%9 = getelementptr inbounds i8, ptr %0, i64 %8
%10 = load i8, ptr %9, align 1
%11 = zext i32 %.9 to i64
%12 = getelementptr inbounds i8, ptr %0, i64 %11
%13 = load i8, ptr %12, align 1
%14 = icmp eq i8 %10, %13
br i1 %14, label %.lr.ph, label %._crit_edge
._crit_edge: ; preds = %.lr.ph
ret void
; CHECK: SLP: Adding cost -1 for bundle n=2 [ %4 = icmp ult i32 %2, %1, ..]
}