57 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S < %s -passes=slp-vectorizer -slp-max-reg-size=128 -slp-min-reg-size=128 | FileCheck %s3 4declare void @llvm.sideeffect()5 6; SLP vectorization across a @llvm.sideeffect.7 8define void @test_sideeffect(ptr %p) {9; CHECK-LABEL: @test_sideeffect(10; CHECK-NEXT: call void @llvm.sideeffect()11; CHECK-NEXT: call void @llvm.sideeffect()12; CHECK-NEXT: [[TMP2:%.*]] = load <4 x float>, ptr [[P:%.*]], align 413; CHECK-NEXT: store <4 x float> [[TMP2]], ptr [[P]], align 414; CHECK-NEXT: ret void15;16 %p1 = getelementptr float, ptr %p, i64 117 %p2 = getelementptr float, ptr %p, i64 218 %p3 = getelementptr float, ptr %p, i64 319 %l0 = load float, ptr %p20 %l1 = load float, ptr %p121 %l2 = load float, ptr %p222 call void @llvm.sideeffect()23 %l3 = load float, ptr %p324 store float %l0, ptr %p25 call void @llvm.sideeffect()26 store float %l1, ptr %p127 store float %l2, ptr %p228 store float %l3, ptr %p329 ret void30}31 32declare void @foo()33 34define void @test_inaccessiblememonly(ptr %p) {35; CHECK-LABEL: @test_inaccessiblememonly(36; CHECK-NEXT: call void @foo() #[[ATTR1:[0-9]+]]37; CHECK-NEXT: call void @foo() #[[ATTR1]]38; CHECK-NEXT: [[TMP2:%.*]] = load <4 x float>, ptr [[P:%.*]], align 439; CHECK-NEXT: store <4 x float> [[TMP2]], ptr [[P]], align 440; CHECK-NEXT: ret void41;42 %p1 = getelementptr float, ptr %p, i64 143 %p2 = getelementptr float, ptr %p, i64 244 %p3 = getelementptr float, ptr %p, i64 345 %l0 = load float, ptr %p46 %l1 = load float, ptr %p147 %l2 = load float, ptr %p248 call void @foo() inaccessiblememonly49 %l3 = load float, ptr %p350 store float %l0, ptr %p51 call void @foo() inaccessiblememonly52 store float %l1, ptr %p153 store float %l2, ptr %p254 store float %l3, ptr %p355 ret void56}57