Files
David Sherwood ba91dd14b9 [LV][NFC] Remove unneeded LLVM intrinsic declarations (#190993)
We no longer need to declare LLVM intrinsics in .ll files as the
intrinsics are populated automatically in the module. Remove the
declarations from tests to reduce test noise and size.

This came from a suggestion on PR #190786.
2026-04-09 11:41:18 +01:00

64 lines
2.0 KiB
LLVM

; RUN: opt -S -passes=loop-vectorize -force-vector-width=2 -force-vector-interleave=1 < %s | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
; Make sure we can vectorize loops which contain lifetime markers.
; CHECK-LABEL: @test(
; CHECK: call void @llvm.lifetime.end
; CHECK: store <2 x i32>
; CHECK: call void @llvm.lifetime.start
define void @test(ptr %d) {
entry:
%arr = alloca [1024 x i32], align 16
call void @llvm.lifetime.start.p0(ptr %arr)
br label %for.body
for.body:
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
call void @llvm.lifetime.end.p0(ptr %arr)
%arrayidx = getelementptr inbounds i32, ptr %d, i64 %indvars.iv
%0 = load i32, ptr %arrayidx, align 8
store i32 100, ptr %arrayidx, align 8
call void @llvm.lifetime.start.p0(ptr %arr)
%indvars.iv.next = add i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp ne i32 %lftr.wideiv, 128
br i1 %exitcond, label %for.body, label %for.end
for.end:
call void @llvm.lifetime.end.p0(ptr %arr)
ret void
}
; CHECK-LABEL: @testbitcast(
; CHECK: call void @llvm.lifetime.end
; CHECK: store <2 x i32>
; CHECK: call void @llvm.lifetime.start
define void @testbitcast(ptr %d) {
entry:
%arr = alloca [1024 x i32], align 16
call void @llvm.lifetime.start.p0(ptr %arr)
br label %for.body
for.body:
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
call void @llvm.lifetime.end.p0(ptr %arr)
%arrayidx = getelementptr inbounds i32, ptr %d, i64 %indvars.iv
%0 = load i32, ptr %arrayidx, align 8
store i32 100, ptr %arrayidx, align 8
call void @llvm.lifetime.start.p0(ptr %arr)
%indvars.iv.next = add i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp ne i32 %lftr.wideiv, 128
br i1 %exitcond, label %for.body, label %for.end
for.end:
call void @llvm.lifetime.end.p0(ptr %arr)
ret void
}