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