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