xref: /llvm-project/llvm/test/Transforms/SandboxVectorizer/cross_bbs.ll (revision ac75d322801411f496fe5d1155c86453f915ae98)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2; RUN: opt -passes=sandbox-vectorizer -sbvec-vec-reg-bits=1024 -sbvec-allow-non-pow2 -sbvec-passes="bottom-up-vec<>" %s -S | FileCheck %s
3
4define void @cross_bbs(ptr %ptr) {
5; CHECK-LABEL: define void @cross_bbs(
6; CHECK-SAME: ptr [[PTR:%.*]]) {
7; CHECK-NEXT:    [[PTR0:%.*]] = getelementptr i8, ptr [[PTR]], i32 0
8; CHECK-NEXT:    [[PTR1:%.*]] = getelementptr i8, ptr [[PTR]], i32 1
9; CHECK-NEXT:    [[L0:%.*]] = load i8, ptr [[PTR0]], align 1
10; CHECK-NEXT:    [[L1:%.*]] = load i8, ptr [[PTR1]], align 1
11; CHECK-NEXT:    br label %[[BB:.*]]
12; CHECK:       [[BB]]:
13; CHECK-NEXT:    [[PACK:%.*]] = insertelement <2 x i8> poison, i8 [[L0]], i32 0
14; CHECK-NEXT:    [[PACK1:%.*]] = insertelement <2 x i8> [[PACK]], i8 [[L1]], i32 1
15; CHECK-NEXT:    store <2 x i8> [[PACK1]], ptr [[PTR0]], align 1
16; CHECK-NEXT:    ret void
17;
18  %ptr0 = getelementptr i8, ptr %ptr, i32 0
19  %ptr1 = getelementptr i8, ptr %ptr, i32 1
20  %l0 = load i8, ptr %ptr0
21  %l1 = load i8, ptr %ptr1
22  br label %bb
23
24bb:
25  store i8 %l0, ptr %ptr0
26  store i8 %l1, ptr %ptr1
27  ret void
28}
29