xref: /llvm-project/llvm/test/Transforms/SLPVectorizer/RISCV/segmented-stores.ll (revision f6e1d64458130643377511baeec430de67ddddfb)
179fd6157SAlexey Bataev; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
279fd6157SAlexey Bataev; RUN: opt -S --passes=slp-vectorizer -mtriple=riscv64-unknown-linux -mattr=+v -pass-remarks-output=%t -mcpu=sifive-p670 < %s | FileCheck %s
379fd6157SAlexey Bataev; RUN: FileCheck %s --check-prefix YAML --input-file=%t
479fd6157SAlexey Bataev
579fd6157SAlexey Bataev; YAML-LABEL: --- !Passed
679fd6157SAlexey Bataev; YAML-NEXT: Pass:            slp-vectorizer
779fd6157SAlexey Bataev; YAML-NEXT: Name:            StoresVectorized
879fd6157SAlexey Bataev; YAML-NEXT: Function:        test
979fd6157SAlexey Bataev; YAML-NEXT: Args:
1079fd6157SAlexey Bataev; YAML-NEXT:   - String:          'Stores SLP vectorized with cost '
11*f6e1d644SAlexey Bataev; YAML-NEXT:   - Cost:            '-2'
1279fd6157SAlexey Bataev; YAML-NEXT:   - String:          ' and with tree size '
1379fd6157SAlexey Bataev; YAML-NEXT:   - TreeSize:        '2'
1479fd6157SAlexey Bataevdefine void @test(ptr %h) {
1579fd6157SAlexey Bataev; CHECK-LABEL: define void @test(
1679fd6157SAlexey Bataev; CHECK-SAME: ptr [[H:%.*]]) #[[ATTR0:[0-9]+]] {
1779fd6157SAlexey Bataev; CHECK-NEXT:  [[ENTRY:.*:]]
1879fd6157SAlexey Bataev; CHECK-NEXT:    [[DCT2X211:%.*]] = alloca [0 x [0 x [8 x i64]]], i32 0, align 16
1979fd6157SAlexey Bataev; CHECK-NEXT:    [[CHROMA_DC209:%.*]] = getelementptr i8, ptr [[H]], i64 0
20*f6e1d644SAlexey Bataev; CHECK-NEXT:    [[TMP0:%.*]] = load <4 x i64>, ptr [[DCT2X211]], align 16
21*f6e1d644SAlexey Bataev; CHECK-NEXT:    [[TMP1:%.*]] = shufflevector <4 x i64> [[TMP0]], <4 x i64> poison, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
22*f6e1d644SAlexey Bataev; CHECK-NEXT:    store <4 x i64> [[TMP1]], ptr [[CHROMA_DC209]], align 2
2379fd6157SAlexey Bataev; CHECK-NEXT:    ret void
2479fd6157SAlexey Bataev;
2579fd6157SAlexey Bataeventry:
2679fd6157SAlexey Bataev  %dct2x211 = alloca [0 x [0 x [8 x i64]]], i32 0, align 16
2779fd6157SAlexey Bataev  %chroma_dc209 = getelementptr i8, ptr %h, i64 0
2879fd6157SAlexey Bataev  %arrayidx30.i = getelementptr i8, ptr %dct2x211, i64 16
2979fd6157SAlexey Bataev  %arrayidx33.i = getelementptr i8, ptr %dct2x211, i64 8
3079fd6157SAlexey Bataev  %arrayidx36.i181 = getelementptr i8, ptr %dct2x211, i64 24
3179fd6157SAlexey Bataev  %0 = load i64, ptr %dct2x211, align 16
3279fd6157SAlexey Bataev  store i64 %0, ptr %chroma_dc209, align 2
3379fd6157SAlexey Bataev  %1 = load i64, ptr %arrayidx30.i, align 4
3479fd6157SAlexey Bataev  %arrayidx3.i224 = getelementptr i8, ptr %h, i64 8
3579fd6157SAlexey Bataev  store i64 %1, ptr %arrayidx3.i224, align 2
3679fd6157SAlexey Bataev  %2 = load i64, ptr %arrayidx33.i, align 2
3779fd6157SAlexey Bataev  %arrayidx5.i226 = getelementptr i8, ptr %h, i64 16
3879fd6157SAlexey Bataev  store i64 %2, ptr %arrayidx5.i226, align 2
3979fd6157SAlexey Bataev  %3 = load i64, ptr %arrayidx36.i181, align 2
4079fd6157SAlexey Bataev  %arrayidx7.i228 = getelementptr i8, ptr %h, i64 24
4179fd6157SAlexey Bataev  store i64 %3, ptr %arrayidx7.i228, align 2
4279fd6157SAlexey Bataev  ret void
4379fd6157SAlexey Bataev}
4479fd6157SAlexey Bataev
45