brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 14685fc Raw
77 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=slp-vectorizer -slp-vectorize-hor -slp-vectorize-hor-store -S < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=bdver2 | FileCheck %s3 4define void @i64_simplified(ptr noalias %st, ptr noalias %ld) {5; CHECK-LABEL: @i64_simplified(6; CHECK-NEXT:    [[TMP1:%.*]] = load <2 x i64>, ptr [[LD:%.*]], align 87; CHECK-NEXT:    [[TMP2:%.*]] = shufflevector <2 x i64> [[TMP1]], <2 x i64> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>8; CHECK-NEXT:    store <4 x i64> [[TMP2]], ptr [[ST:%.*]], align 89; CHECK-NEXT:    ret void10;11  %arrayidx1 = getelementptr inbounds i64, ptr %ld, i64 112 13  %t0 = load i64, ptr %ld, align 814  %t1 = load i64, ptr %arrayidx1, align 815 16  %arrayidx3 = getelementptr inbounds i64, ptr %st, i64 117  %arrayidx4 = getelementptr inbounds i64, ptr %st, i64 218  %arrayidx5 = getelementptr inbounds i64, ptr %st, i64 319 20  store i64 %t0, ptr %st, align 821  store i64 %t1, ptr %arrayidx3, align 822  store i64 %t0, ptr %arrayidx4, align 823  store i64 %t1, ptr %arrayidx5, align 824  ret void25}26 27define void @i64_simplifiedi_reversed(ptr noalias %st, ptr noalias %ld) {28; CHECK-LABEL: @i64_simplifiedi_reversed(29; CHECK-NEXT:    [[TMP1:%.*]] = load <2 x i64>, ptr [[LD:%.*]], align 830; CHECK-NEXT:    [[TMP2:%.*]] = shufflevector <2 x i64> [[TMP1]], <2 x i64> poison, <4 x i32> <i32 1, i32 0, i32 1, i32 0>31; CHECK-NEXT:    store <4 x i64> [[TMP2]], ptr [[ST:%.*]], align 832; CHECK-NEXT:    ret void33;34  %arrayidx1 = getelementptr inbounds i64, ptr %ld, i64 135 36  %t0 = load i64, ptr %ld, align 837  %t1 = load i64, ptr %arrayidx1, align 838 39  %arrayidx3 = getelementptr inbounds i64, ptr %st, i64 140  %arrayidx4 = getelementptr inbounds i64, ptr %st, i64 241  %arrayidx5 = getelementptr inbounds i64, ptr %st, i64 342 43  store i64 %t1, ptr %st, align 844  store i64 %t0, ptr %arrayidx3, align 845  store i64 %t1, ptr %arrayidx4, align 846  store i64 %t0, ptr %arrayidx5, align 847  ret void48}49 50define void @i64_simplifiedi_extract(ptr noalias %st, ptr noalias %ld) {51; CHECK-LABEL: @i64_simplifiedi_extract(52; CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds i64, ptr [[LD:%.*]], i64 153; CHECK-NEXT:    [[T1:%.*]] = load i64, ptr [[ARRAYIDX1]], align 854; CHECK-NEXT:    [[TMP1:%.*]] = load <2 x i64>, ptr [[LD]], align 855; CHECK-NEXT:    [[TMP2:%.*]] = shufflevector <2 x i64> [[TMP1]], <2 x i64> poison, <4 x i32> <i32 0, i32 0, i32 0, i32 1>56; CHECK-NEXT:    store <4 x i64> [[TMP2]], ptr [[ST:%.*]], align 857; CHECK-NEXT:    store i64 [[T1]], ptr [[LD]], align 858; CHECK-NEXT:    ret void59;60  %arrayidx1 = getelementptr inbounds i64, ptr %ld, i64 161 62  %t0 = load i64, ptr %ld, align 863  %t1 = load i64, ptr %arrayidx1, align 864 65  %arrayidx3 = getelementptr inbounds i64, ptr %st, i64 166  %arrayidx4 = getelementptr inbounds i64, ptr %st, i64 267  %arrayidx5 = getelementptr inbounds i64, ptr %st, i64 368 69  store i64 %t0, ptr %st, align 870  store i64 %t0, ptr %arrayidx3, align 871  store i64 %t0, ptr %arrayidx4, align 872  store i64 %t1, ptr %arrayidx5, align 873  store i64 %t1, ptr %ld, align 874  ret void75}76 77