1; RUN: opt -S < %s -load-store-vectorizer | FileCheck %s
2
3declare void @llvm.sideeffect()
4
5; load-store vectorization across a @llvm.sideeffect.
6
7; CHECK-LABEL: test
8; CHECK: load <4 x float>
9; CHECK: store <4 x float>
10define void @test(float* %p) {
11    %p0 = getelementptr float, float* %p, i64 0
12    %p1 = getelementptr float, float* %p, i64 1
13    %p2 = getelementptr float, float* %p, i64 2
14    %p3 = getelementptr float, float* %p, i64 3
15    %l0 = load float, float* %p0, align 16
16    %l1 = load float, float* %p1
17    %l2 = load float, float* %p2
18    call void @llvm.sideeffect()
19    %l3 = load float, float* %p3
20    store float %l0, float* %p0, align 16
21    call void @llvm.sideeffect()
22    store float %l1, float* %p1
23    store float %l2, float* %p2
24    store float %l3, float* %p3
25    ret void
26}
27