brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · 20a4277 Raw
130 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu -mcpu=bdver2 < %s | FileCheck %s3 4%"struct.std::array" = type { [32 x i8] }5 6; Function Attrs: nounwind uwtable7define fastcc void @_ZN12_GLOBAL__N_127PolynomialMultiplyRecognize9recognizeEv(i1 %arg) unnamed_addr #0 align 2 {8; CHECK-LABEL: @_ZN12_GLOBAL__N_127PolynomialMultiplyRecognize9recognizeEv(9; CHECK-NEXT:  entry:10; CHECK-NEXT:    br i1 [[ARG:%.*]], label [[IF_END50_I:%.*]], label [[IF_THEN22_I:%.*]]11; CHECK:       if.then22.i:12; CHECK-NEXT:    [[SUB_I:%.*]] = add nsw i32 undef, -113; CHECK-NEXT:    [[CONV31_I:%.*]] = and i32 undef, [[SUB_I]]14; CHECK-NEXT:    [[SHR_I_I:%.*]] = lshr i32 [[CONV31_I]], 115; CHECK-NEXT:    [[TMP0:%.*]] = insertelement <2 x i32> poison, i32 [[CONV31_I]], i32 016; CHECK-NEXT:    [[TMP1:%.*]] = shufflevector <2 x i32> [[TMP0]], <2 x i32> poison, <2 x i32> zeroinitializer17; CHECK-NEXT:    [[TMP2:%.*]] = lshr <2 x i32> [[TMP1]], <i32 2, i32 3>18; CHECK-NEXT:    [[TMP3:%.*]] = shufflevector <2 x i32> [[TMP1]], <2 x i32> poison, <4 x i32> zeroinitializer19; CHECK-NEXT:    [[TMP4:%.*]] = lshr <4 x i32> [[TMP3]], <i32 4, i32 5, i32 6, i32 7>20; CHECK-NEXT:    [[TMP5:%.*]] = shufflevector <4 x i32> [[TMP3]], <4 x i32> poison, <8 x i32> zeroinitializer21; CHECK-NEXT:    [[TMP6:%.*]] = lshr <8 x i32> [[TMP5]], <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>22; CHECK-NEXT:    [[TMP7:%.*]] = trunc i32 [[SUB_I]] to i823; CHECK-NEXT:    [[TMP8:%.*]] = insertelement <16 x i8> poison, i8 [[TMP7]], i32 024; CHECK-NEXT:    [[TMP9:%.*]] = trunc i32 [[SHR_I_I]] to i825; CHECK-NEXT:    [[TMP10:%.*]] = insertelement <16 x i8> [[TMP8]], i8 [[TMP9]], i32 126; CHECK-NEXT:    [[TMP11:%.*]] = trunc <8 x i32> [[TMP6]] to <8 x i8>27; CHECK-NEXT:    [[TMP12:%.*]] = shufflevector <8 x i8> [[TMP11]], <8 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>28; CHECK-NEXT:    [[TMP14:%.*]] = shufflevector <16 x i8> [[TMP10]], <16 x i8> [[TMP12]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>29; CHECK-NEXT:    [[TMP13:%.*]] = trunc <4 x i32> [[TMP4]] to <4 x i8>30; CHECK-NEXT:    [[TMP19:%.*]] = shufflevector <4 x i8> [[TMP13]], <4 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>31; CHECK-NEXT:    [[TMP20:%.*]] = shufflevector <16 x i8> [[TMP14]], <16 x i8> [[TMP19]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>32; CHECK-NEXT:    [[TMP15:%.*]] = trunc <2 x i32> [[TMP2]] to <2 x i8>33; CHECK-NEXT:    [[TMP18:%.*]] = shufflevector <2 x i8> [[TMP15]], <2 x i8> poison, <16 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>34; CHECK-NEXT:    [[TMP16:%.*]] = shufflevector <16 x i8> [[TMP20]], <16 x i8> [[TMP18]], <16 x i32> <i32 0, i32 1, i32 16, i32 17, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>35; CHECK-NEXT:    [[TMP17:%.*]] = and <16 x i8> [[TMP16]], splat (i8 1)36; CHECK-NEXT:    store <16 x i8> [[TMP17]], ptr undef, align 137; CHECK-NEXT:    ret void38; CHECK:       if.end50.i:39; CHECK-NEXT:    ret void40;41entry:42  br i1 %arg, label %if.end50.i, label %if.then22.i43 44if.then22.i:                                      ; preds = %entry45  %sub.i = add nsw i32 undef, -146  %conv31.i = and i32 undef, %sub.i47  %0 = trunc i32 %sub.i to i848  %conv.i.i1199 = and i8 %0, 149  store i8 %conv.i.i1199, ptr undef, align 150  %shr.i.i = lshr i32 %conv31.i, 151  %1 = trunc i32 %shr.i.i to i852  %conv.1.i.i = and i8 %1, 153  %arrayidx.i.i7.1.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 154  store i8 %conv.1.i.i, ptr %arrayidx.i.i7.1.i.i, align 155  %shr.1.i.i = lshr i32 %conv31.i, 256  %2 = trunc i32 %shr.1.i.i to i857  %conv.2.i.i = and i8 %2, 158  %arrayidx.i.i7.2.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 259  store i8 %conv.2.i.i, ptr %arrayidx.i.i7.2.i.i, align 160  %shr.2.i.i = lshr i32 %conv31.i, 361  %3 = trunc i32 %shr.2.i.i to i862  %conv.3.i.i = and i8 %3, 163  %arrayidx.i.i7.3.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 364  store i8 %conv.3.i.i, ptr %arrayidx.i.i7.3.i.i, align 165  %shr.3.i.i = lshr i32 %conv31.i, 466  %4 = trunc i32 %shr.3.i.i to i867  %conv.4.i.i = and i8 %4, 168  %arrayidx.i.i7.4.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 469  store i8 %conv.4.i.i, ptr %arrayidx.i.i7.4.i.i, align 170  %shr.4.i.i = lshr i32 %conv31.i, 571  %5 = trunc i32 %shr.4.i.i to i872  %conv.5.i.i = and i8 %5, 173  %arrayidx.i.i7.5.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 574  store i8 %conv.5.i.i, ptr %arrayidx.i.i7.5.i.i, align 175  %shr.5.i.i = lshr i32 %conv31.i, 676  %6 = trunc i32 %shr.5.i.i to i877  %conv.6.i.i = and i8 %6, 178  %arrayidx.i.i7.6.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 679  store i8 %conv.6.i.i, ptr %arrayidx.i.i7.6.i.i, align 180  %shr.6.i.i = lshr i32 %conv31.i, 781  %7 = trunc i32 %shr.6.i.i to i882  %conv.7.i.i = and i8 %7, 183  %arrayidx.i.i7.7.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 784  store i8 %conv.7.i.i, ptr %arrayidx.i.i7.7.i.i, align 185  %shr.7.i.i = lshr i32 %conv31.i, 886  %8 = trunc i32 %shr.7.i.i to i887  %conv.8.i.i = and i8 %8, 188  %arrayidx.i.i7.8.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 889  store i8 %conv.8.i.i, ptr %arrayidx.i.i7.8.i.i, align 190  %shr.8.i.i = lshr i32 %conv31.i, 991  %9 = trunc i32 %shr.8.i.i to i892  %conv.9.i.i = and i8 %9, 193  %arrayidx.i.i7.9.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 994  store i8 %conv.9.i.i, ptr %arrayidx.i.i7.9.i.i, align 195  %shr.9.i.i = lshr i32 %conv31.i, 1096  %10 = trunc i32 %shr.9.i.i to i897  %conv.10.i.i = and i8 %10, 198  %arrayidx.i.i7.10.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 1099  store i8 %conv.10.i.i, ptr %arrayidx.i.i7.10.i.i, align 1100  %shr.10.i.i = lshr i32 %conv31.i, 11101  %11 = trunc i32 %shr.10.i.i to i8102  %conv.11.i.i = and i8 %11, 1103  %arrayidx.i.i7.11.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 11104  store i8 %conv.11.i.i, ptr %arrayidx.i.i7.11.i.i, align 1105  %shr.11.i.i = lshr i32 %conv31.i, 12106  %12 = trunc i32 %shr.11.i.i to i8107  %conv.12.i.i = and i8 %12, 1108  %arrayidx.i.i7.12.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 12109  store i8 %conv.12.i.i, ptr %arrayidx.i.i7.12.i.i, align 1110  %shr.12.i.i = lshr i32 %conv31.i, 13111  %13 = trunc i32 %shr.12.i.i to i8112  %conv.13.i.i = and i8 %13, 1113  %arrayidx.i.i7.13.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 13114  store i8 %conv.13.i.i, ptr %arrayidx.i.i7.13.i.i, align 1115  %shr.13.i.i = lshr i32 %conv31.i, 14116  %14 = trunc i32 %shr.13.i.i to i8117  %conv.14.i.i = and i8 %14, 1118  %arrayidx.i.i7.14.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 14119  store i8 %conv.14.i.i, ptr %arrayidx.i.i7.14.i.i, align 1120  %shr.14.i.i = lshr i32 %conv31.i, 15121  %15 = trunc i32 %shr.14.i.i to i8122  %conv.15.i.i = and i8 %15, 1123  %arrayidx.i.i7.15.i.i = getelementptr inbounds %"struct.std::array", ptr undef, i64 0, i32 0, i64 15124  store i8 %conv.15.i.i, ptr %arrayidx.i.i7.15.i.i, align 1125  ret void126 127if.end50.i:                                       ; preds = %entry128  ret void129}130