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.
64 lines
2.0 KiB
LLVM
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
|
|
}
|
|
|
|
|