brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.2 KiB · 92a1e28 Raw
268 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux < %s | FileCheck %s3 4define <16 x half> @test(i32 %0, float %1, i32 %2) {5; CHECK-LABEL: define <16 x half> @test(6; CHECK-SAME: i32 [[TMP0:%.*]], float [[TMP1:%.*]], i32 [[TMP2:%.*]]) {7; CHECK-NEXT:    [[TMP4:%.*]] = insertelement <16 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float poison, float 0.000000e+00, float 0.000000e+00>, float [[TMP1]], i32 138; CHECK-NEXT:    [[TMP5:%.*]] = bitcast <16 x float> [[TMP4]] to <16 x i32>9; CHECK-NEXT:    [[TMP6:%.*]] = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> zeroinitializer, <2 x float> zeroinitializer, <2 x float> zeroinitializer)10; CHECK-NEXT:    [[TMP7:%.*]] = icmp ugt i32 [[TMP2]], 011; CHECK-NEXT:    [[TMP8:%.*]] = icmp eq i32 [[TMP0]], [[TMP0]]12; CHECK-NEXT:    [[TMP9:%.*]] = extractelement <2 x float> [[TMP6]], i32 013; CHECK-NEXT:    [[TMP10:%.*]] = fcmp ogt float [[TMP9]], 0.000000e+0014; CHECK-NEXT:    [[TMP11:%.*]] = icmp eq i32 [[TMP0]], 015; CHECK-NEXT:    [[TMP12:%.*]] = icmp eq i32 [[TMP0]], 016; CHECK-NEXT:    [[TMP13:%.*]] = extractelement <16 x i32> [[TMP5]], i32 1017; CHECK-NEXT:    [[TMP14:%.*]] = icmp eq i32 [[TMP13]], 018; CHECK-NEXT:    [[TMP15:%.*]] = bitcast float 0.000000e+00 to i3219; CHECK-NEXT:    [[TMP16:%.*]] = icmp eq i32 [[TMP15]], 020; CHECK-NEXT:    [[TMP17:%.*]] = icmp eq i32 [[TMP0]], 021; CHECK-NEXT:    [[TMP18:%.*]] = icmp ult i32 0, 022; CHECK-NEXT:    [[TMP19:%.*]] = icmp ult i32 0, 023; CHECK-NEXT:    [[TMP20:%.*]] = icmp ult i32 0, 024; CHECK-NEXT:    [[TMP21:%.*]] = icmp eq i32 0, 025; CHECK-NEXT:    [[TMP22:%.*]] = extractelement <16 x i32> [[TMP5]], i32 426; CHECK-NEXT:    [[TMP23:%.*]] = icmp eq i32 [[TMP22]], 027; CHECK-NEXT:    [[TMP24:%.*]] = icmp eq i32 [[TMP0]], [[TMP0]]28; CHECK-NEXT:    [[TMP25:%.*]] = bitcast float 0.000000e+00 to i3229; CHECK-NEXT:    [[TMP26:%.*]] = icmp eq i32 [[TMP25]], 030; CHECK-NEXT:    [[TMP27:%.*]] = icmp ult <16 x i32> [[TMP5]], zeroinitializer31; CHECK-NEXT:    [[TMP28:%.*]] = select <16 x i1> [[TMP27]], <16 x i32> zeroinitializer, <16 x i32> zeroinitializer32; CHECK-NEXT:    [[TMP29:%.*]] = sitofp <16 x i32> [[TMP28]] to <16 x float>33; CHECK-NEXT:    [[TMP30:%.*]] = call <16 x float> @llvm.fmuladd.v16f32(<16 x float> [[TMP29]], <16 x float> zeroinitializer, <16 x float> zeroinitializer)34; CHECK-NEXT:    [[TMP31:%.*]] = fadd <16 x float> [[TMP30]], zeroinitializer35; CHECK-NEXT:    [[TMP35:%.*]] = select <16 x i1> zeroinitializer, <16 x float> zeroinitializer, <16 x float> [[TMP31]]36; CHECK-NEXT:    [[TMP36:%.*]] = bitcast <16 x float> [[TMP35]] to <16 x i32>37; CHECK-NEXT:    [[TMP37:%.*]] = and <16 x i32> [[TMP36]], zeroinitializer38; CHECK-NEXT:    [[TMP38:%.*]] = bitcast <16 x i32> [[TMP37]] to <16 x float>39; CHECK-NEXT:    [[TMP53:%.*]] = shufflevector <2 x float> [[TMP6]], <2 x float> 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>40; CHECK-NEXT:    [[TMP39:%.*]] = shufflevector <16 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float poison, float poison>, <16 x float> [[TMP53]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 16, i32 17>41; CHECK-NEXT:    [[TMP40:%.*]] = call <16 x float> @llvm.fmuladd.v16f32(<16 x float> zeroinitializer, <16 x float> [[TMP38]], <16 x float> [[TMP39]])42; CHECK-NEXT:    [[TMP41:%.*]] = extractelement <16 x float> [[TMP29]], i32 043; CHECK-NEXT:    [[TMP42:%.*]] = fcmp olt float [[TMP41]], 0.000000e+0044; CHECK-NEXT:    [[TMP43:%.*]] = extractelement <16 x float> [[TMP29]], i32 1445; CHECK-NEXT:    [[TMP44:%.*]] = fcmp ogt float [[TMP43]], 0.000000e+0046; CHECK-NEXT:    [[TMP45:%.*]] = fcmp olt float [[TMP43]], 0.000000e+0047; CHECK-NEXT:    [[TMP46:%.*]] = extractelement <16 x float> [[TMP29]], i32 1348; CHECK-NEXT:    [[TMP47:%.*]] = fcmp ogt float [[TMP46]], 0.000000e+0049; CHECK-NEXT:    [[TMP48:%.*]] = fcmp olt float [[TMP46]], 0.000000e+0050; CHECK-NEXT:    [[TMP49:%.*]] = fcmp olt float [[TMP41]], 0.000000e+0051; CHECK-NEXT:    [[TMP50:%.*]] = extractelement <16 x float> [[TMP29]], i32 152; CHECK-NEXT:    [[TMP51:%.*]] = fcmp ogt float [[TMP50]], 0.000000e+0053; CHECK-NEXT:    [[TMP52:%.*]] = fcmp oeq <16 x float> [[TMP40]], zeroinitializer54; CHECK-NEXT:    ret <16 x half> zeroinitializer55;56  %4 = bitcast float 0.000000e+00 to i3257  %5 = fcmp olt float 0.000000e+00, 0.000000e+0058  %6 = icmp ult i32 %4, 059  %7 = select i1 %6, i32 0, i32 060  %8 = sitofp i32 %7 to float61  %9 = tail call float @llvm.fmuladd.f32(float %8, float 0.000000e+00, float 0.000000e+00)62  %10 = fadd float %9, 0.000000e+0063  %11 = select i1 %5, float 0.000000e+00, float %1064  %12 = bitcast float %11 to i3265  %13 = and i32 %12, 066  %14 = bitcast i32 %13 to float67  %15 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float 0.000000e+00, float 0.000000e+00)68  %16 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %14, float %15)69  %17 = fcmp oeq float %16, 0.000000e+0070  %18 = fcmp olt float %8, 0.000000e+0071  %19 = icmp ugt i32 %2, 072  %20 = bitcast float 0.000000e+00 to i3273  %21 = icmp eq i32 %0, %074  %22 = icmp ult i32 %20, 075  %23 = select i1 %22, i32 0, i32 076  %24 = sitofp i32 %23 to float77  %25 = tail call float @llvm.fmuladd.f32(float %24, float 0.000000e+00, float 0.000000e+00)78  %26 = fadd float %25, 0.000000e+0079  %27 = select i1 false, float 0.000000e+00, float %2680  %28 = bitcast float %27 to i3281  %29 = and i32 %28, 082  %30 = bitcast i32 %29 to float83  %31 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float 0.000000e+00, float 0.000000e+00)84  %32 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %30, float %31)85  %33 = fcmp ogt float %24, 0.000000e+0086  %34 = fcmp oeq float %32, 0.000000e+0087  %35 = fcmp ogt float %31, 0.000000e+0088  %36 = fcmp olt float %24, 0.000000e+0089  %37 = bitcast float %1 to i3290  %38 = icmp ult i32 %37, 091  %39 = select i1 %38, i32 0, i32 092  %40 = sitofp i32 %39 to float93  %41 = tail call float @llvm.fmuladd.f32(float %40, float 0.000000e+00, float 0.000000e+00)94  %42 = fadd float %41, 0.000000e+0095  %43 = select i1 false, float 0.000000e+00, float %4296  %44 = bitcast float %43 to i3297  %45 = and i32 %44, 098  %46 = bitcast i32 %45 to float99  %47 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %46, float 0.000000e+00)100  %48 = fadd float 0.000000e+00, 0.000000e+00101  %49 = fcmp ogt float %40, 0.000000e+00102  %50 = fcmp oeq float %47, 0.000000e+00103  %51 = fcmp ogt float %48, 0.000000e+00104  %52 = fcmp olt float %40, 0.000000e+00105  %53 = icmp eq i32 0, 0106  %54 = bitcast float 0.000000e+00 to i32107  %55 = icmp eq i32 0, 0108  %56 = icmp ult i32 %54, 0109  %57 = select i1 %56, i32 0, i32 0110  %58 = sitofp i32 %57 to float111  %59 = tail call float @llvm.fmuladd.f32(float %58, float 0.000000e+00, float 0.000000e+00)112  %60 = fadd float %59, 0.000000e+00113  %61 = select i1 %5, float 0.000000e+00, float %60114  %62 = bitcast float %61 to i32115  %63 = and i32 %62, 0116  %64 = bitcast i32 %63 to float117  %65 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %64, float 0.000000e+00)118  %66 = fcmp oeq float %65, 0.000000e+00119  %67 = bitcast float 0.000000e+00 to i32120  %68 = icmp eq i32 %0, 0121  %69 = icmp ult i32 %67, 0122  %70 = select i1 %69, i32 0, i32 0123  %71 = sitofp i32 %70 to float124  %72 = tail call float @llvm.fmuladd.f32(float %71, float 0.000000e+00, float 0.000000e+00)125  %73 = fadd float %72, 0.000000e+00126  %74 = select i1 false, float 0.000000e+00, float %73127  %75 = bitcast float %74 to i32128  %76 = and i32 %75, 0129  %77 = bitcast i32 %76 to float130  %78 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %77, float 0.000000e+00)131  %79 = fadd float 0.000000e+00, 0.000000e+00132  %80 = fcmp oeq float %78, 0.000000e+00133  %81 = fcmp ogt float %79, 0.000000e+00134  %82 = icmp eq i32 %0, 0135  %83 = bitcast float 0.000000e+00 to i32136  %84 = icmp eq i32 %83, 0137  %85 = icmp ult i32 %83, 0138  %86 = select i1 %85, i32 0, i32 0139  %87 = sitofp i32 %86 to float140  %88 = tail call float @llvm.fmuladd.f32(float %87, float 0.000000e+00, float 0.000000e+00)141  %89 = fadd float %88, 0.000000e+00142  %90 = select i1 false, float 0.000000e+00, float %89143  %91 = bitcast float %90 to i32144  %92 = and i32 %91, 0145  %93 = bitcast i32 %92 to float146  %94 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %93, float 0.000000e+00)147  %95 = fcmp oeq float %94, 0.000000e+00148  %96 = bitcast float 0.000000e+00 to i32149  %97 = bitcast float 0.000000e+00 to i32150  %98 = icmp ult i32 %97, 0151  %99 = select i1 %98, i32 0, i32 0152  %100 = sitofp i32 %99 to float153  %101 = tail call float @llvm.fmuladd.f32(float %100, float 0.000000e+00, float 0.000000e+00)154  %102 = fadd float %101, 0.000000e+00155  %103 = select i1 false, float 0.000000e+00, float %102156  %104 = bitcast float %103 to i32157  %105 = and i32 %104, 0158  %106 = bitcast i32 %105 to float159  %107 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %106, float 0.000000e+00)160  %108 = fcmp oeq float %107, 0.000000e+00161  %109 = icmp eq i32 %96, 0162  %110 = icmp eq i32 %0, 0163  %111 = icmp ult i32 0, 0164  %112 = bitcast float 0.000000e+00 to i32165  %113 = icmp ult i32 %112, 0166  %114 = select i1 %113, i32 0, i32 0167  %115 = sitofp i32 %114 to float168  %116 = tail call float @llvm.fmuladd.f32(float %115, float 0.000000e+00, float 0.000000e+00)169  %117 = fadd float %116, 0.000000e+00170  %118 = select i1 false, float 0.000000e+00, float %117171  %119 = bitcast float %118 to i32172  %120 = and i32 %119, 0173  %121 = bitcast i32 %120 to float174  %122 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %121, float 0.000000e+00)175  %123 = fadd float 0.000000e+00, 0.000000e+00176  %124 = fcmp oeq float %122, 0.000000e+00177  %125 = fcmp ogt float %123, 0.000000e+00178  %126 = icmp ult i32 0, 0179  %127 = bitcast float 0.000000e+00 to i32180  %128 = icmp ult i32 %127, 0181  %129 = select i1 %128, i32 0, i32 0182  %130 = sitofp i32 %129 to float183  %131 = tail call float @llvm.fmuladd.f32(float %130, float 0.000000e+00, float 0.000000e+00)184  %132 = fadd float %131, 0.000000e+00185  %133 = select i1 false, float 0.000000e+00, float %132186  %134 = bitcast float %133 to i32187  %135 = and i32 %134, 0188  %136 = bitcast i32 %135 to float189  %137 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %136, float 0.000000e+00)190  %138 = fcmp oeq float %137, 0.000000e+00191  %139 = icmp ult i32 0, 0192  %140 = bitcast float 0.000000e+00 to i32193  %141 = icmp eq i32 0, 0194  %142 = icmp ult i32 %140, 0195  %143 = select i1 %142, i32 0, i32 0196  %144 = sitofp i32 %143 to float197  %145 = tail call float @llvm.fmuladd.f32(float %144, float 0.000000e+00, float 0.000000e+00)198  %146 = fadd float %145, 0.000000e+00199  %147 = select i1 false, float 0.000000e+00, float %146200  %148 = bitcast float %147 to i32201  %149 = and i32 %148, 0202  %150 = bitcast i32 %149 to float203  %151 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %150, float 0.000000e+00)204  %152 = fcmp oeq float %151, 0.000000e+00205  %153 = fcmp olt float 0.000000e+00, 0.000000e+00206  %154 = select i1 %153, float 0.000000e+00, float %10207  %155 = bitcast float %154 to i32208  %156 = and i32 %155, 0209  %157 = bitcast i32 %156 to float210  %158 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %157, float 0.000000e+00)211  %159 = fcmp oeq float %158, 0.000000e+00212  %160 = bitcast float 0.000000e+00 to i32213  %161 = icmp eq i32 %160, 0214  %162 = icmp ult i32 %160, 0215  %163 = select i1 %162, i32 0, i32 0216  %164 = sitofp i32 %163 to float217  %165 = tail call float @llvm.fmuladd.f32(float %164, float 0.000000e+00, float 0.000000e+00)218  %166 = fadd float %165, 0.000000e+00219  %167 = select i1 false, float 0.000000e+00, float %166220  %168 = bitcast float %167 to i32221  %169 = and i32 %168, 0222  %170 = bitcast i32 %169 to float223  %171 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %170, float 0.000000e+00)224  %172 = fcmp oeq float %171, 0.000000e+00225  %173 = tail call float @llvm.fmuladd.f32(float %8, float 0.000000e+00, float 0.000000e+00)226  %174 = fadd float %173, 0.000000e+00227  %175 = select i1 %5, float 0.000000e+00, float %174228  %176 = bitcast float %175 to i32229  %177 = and i32 %176, 0230  %178 = bitcast i32 %177 to float231  %179 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %178, float 0.000000e+00)232  %180 = fadd float 0.000000e+00, 0.000000e+00233  %181 = fcmp oeq float %179, 0.000000e+00234  %182 = fcmp ogt float %180, 0.000000e+00235  %183 = fcmp olt float %8, 0.000000e+00236  %184 = bitcast float 0.000000e+00 to i32237  %185 = icmp eq i32 %0, %0238  %186 = icmp ult i32 %184, 0239  %187 = select i1 %186, i32 0, i32 0240  %188 = sitofp i32 %187 to float241  %189 = tail call float @llvm.fmuladd.f32(float %188, float 0.000000e+00, float 0.000000e+00)242  %190 = fadd float %189, 0.000000e+00243  %191 = select i1 %5, float 0.000000e+00, float %190244  %192 = bitcast float %191 to i32245  %193 = and i32 %192, 0246  %194 = bitcast i32 %193 to float247  %195 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %194, float 0.000000e+00)248  %196 = fcmp oeq float %195, 0.000000e+00249  %197 = bitcast float 0.000000e+00 to i32250  %198 = icmp eq i32 %197, 0251  %199 = icmp ult i32 %197, 0252  %200 = select i1 %199, i32 0, i32 0253  %201 = sitofp i32 %200 to float254  %202 = tail call float @llvm.fmuladd.f32(float %201, float 0.000000e+00, float 0.000000e+00)255  %203 = fadd float %202, 0.000000e+00256  %204 = select i1 false, float 0.000000e+00, float %203257  %205 = bitcast float %204 to i32258  %206 = and i32 %205, 0259  %207 = bitcast i32 %206 to float260  %208 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %207, float 0.000000e+00)261  %209 = fcmp oeq float %208, 0.000000e+00262  %210 = fcmp ogt float %201, 0.000000e+00263  %211 = tail call float @llvm.fmuladd.f32(float 0.000000e+00, float %14, float 0.000000e+00)264  %212 = fcmp oeq float %211, 0.000000e+00265  ret <16 x half> zeroinitializer266}267 268