xref: /llvm-project/llvm/test/Transforms/SLPVectorizer/RISCV/segmented-stores.ll (revision f6e1d64458130643377511baeec430de67ddddfb)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2; RUN: opt -S --passes=slp-vectorizer -mtriple=riscv64-unknown-linux -mattr=+v -pass-remarks-output=%t -mcpu=sifive-p670 < %s | FileCheck %s
3; RUN: FileCheck %s --check-prefix YAML --input-file=%t
4
5; YAML-LABEL: --- !Passed
6; YAML-NEXT: Pass:            slp-vectorizer
7; YAML-NEXT: Name:            StoresVectorized
8; YAML-NEXT: Function:        test
9; YAML-NEXT: Args:
10; YAML-NEXT:   - String:          'Stores SLP vectorized with cost '
11; YAML-NEXT:   - Cost:            '-2'
12; YAML-NEXT:   - String:          ' and with tree size '
13; YAML-NEXT:   - TreeSize:        '2'
14define void @test(ptr %h) {
15; CHECK-LABEL: define void @test(
16; CHECK-SAME: ptr [[H:%.*]]) #[[ATTR0:[0-9]+]] {
17; CHECK-NEXT:  [[ENTRY:.*:]]
18; CHECK-NEXT:    [[DCT2X211:%.*]] = alloca [0 x [0 x [8 x i64]]], i32 0, align 16
19; CHECK-NEXT:    [[CHROMA_DC209:%.*]] = getelementptr i8, ptr [[H]], i64 0
20; CHECK-NEXT:    [[TMP0:%.*]] = load <4 x i64>, ptr [[DCT2X211]], align 16
21; CHECK-NEXT:    [[TMP1:%.*]] = shufflevector <4 x i64> [[TMP0]], <4 x i64> poison, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
22; CHECK-NEXT:    store <4 x i64> [[TMP1]], ptr [[CHROMA_DC209]], align 2
23; CHECK-NEXT:    ret void
24;
25entry:
26  %dct2x211 = alloca [0 x [0 x [8 x i64]]], i32 0, align 16
27  %chroma_dc209 = getelementptr i8, ptr %h, i64 0
28  %arrayidx30.i = getelementptr i8, ptr %dct2x211, i64 16
29  %arrayidx33.i = getelementptr i8, ptr %dct2x211, i64 8
30  %arrayidx36.i181 = getelementptr i8, ptr %dct2x211, i64 24
31  %0 = load i64, ptr %dct2x211, align 16
32  store i64 %0, ptr %chroma_dc209, align 2
33  %1 = load i64, ptr %arrayidx30.i, align 4
34  %arrayidx3.i224 = getelementptr i8, ptr %h, i64 8
35  store i64 %1, ptr %arrayidx3.i224, align 2
36  %2 = load i64, ptr %arrayidx33.i, align 2
37  %arrayidx5.i226 = getelementptr i8, ptr %h, i64 16
38  store i64 %2, ptr %arrayidx5.i226, align 2
39  %3 = load i64, ptr %arrayidx36.i181, align 2
40  %arrayidx7.i228 = getelementptr i8, ptr %h, i64 24
41  store i64 %3, ptr %arrayidx7.i228, align 2
42  ret void
43}
44
45