]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Transforms/LoadStoreVectorizer/int_sideeffect.ll
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / Transforms / LoadStoreVectorizer / int_sideeffect.ll
1 ; RUN: opt -S < %s -load-store-vectorizer | FileCheck %s
2 ; RUN: opt -S < %s -passes='function(load-store-vectorizer)' | FileCheck %s
3
4 declare void @llvm.sideeffect()
5
6 ; load-store vectorization across a @llvm.sideeffect.
7
8 ; CHECK-LABEL: test
9 ; CHECK: load <4 x float>
10 ; CHECK: store <4 x float>
11 define void @test(float* %p) {
12     %p0 = getelementptr float, float* %p, i64 0
13     %p1 = getelementptr float, float* %p, i64 1
14     %p2 = getelementptr float, float* %p, i64 2
15     %p3 = getelementptr float, float* %p, i64 3
16     %l0 = load float, float* %p0, align 16
17     %l1 = load float, float* %p1
18     %l2 = load float, float* %p2
19     call void @llvm.sideeffect()
20     %l3 = load float, float* %p3
21     store float %l0, float* %p0, align 16
22     call void @llvm.sideeffect()
23     store float %l1, float* %p1
24     store float %l2, float* %p2
25     store float %l3, float* %p3
26     ret void
27 }