[llvm] r235371 - CONCAT_VECTOR of BUILD_VECTOR - minor fix

Simon Pilgrim llvm-dev at redking.me.uk
Tue Apr 21 01:05:43 PDT 2015


Author: rksimon
Date: Tue Apr 21 03:05:43 2015
New Revision: 235371

URL: http://llvm.org/viewvc/llvm-project?rev=235371&view=rev
Log:
CONCAT_VECTOR of BUILD_VECTOR - minor fix

Fixed issue with the combine of CONCAT_VECTOR of 2 BUILD_VECTOR nodes - the optimisation wasn't ensuring that the scalar operands of both nodes were the same type/size for implicit truncation.

Test case spotted by Patrik Hagglund

Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    llvm/trunk/test/CodeGen/X86/fold-vector-shuffle-crash.ll

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=235371&r1=235370&r2=235371&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Tue Apr 21 03:05:43 2015
@@ -3198,6 +3198,18 @@ SDValue SelectionDAG::getNode(unsigned O
       SmallVector<SDValue, 16> Elts(N1.getNode()->op_begin(),
                                     N1.getNode()->op_end());
       Elts.append(N2.getNode()->op_begin(), N2.getNode()->op_end());
+
+      // BUILD_VECTOR requires all inputs to be of the same type, find the
+      // maximum type and extend them all.
+      EVT SVT = VT.getScalarType();
+      for (SDValue Op : Elts)
+        SVT = (SVT.bitsLT(Op.getValueType()) ? Op.getValueType() : SVT);
+      if (SVT.bitsGT(VT.getScalarType()))
+        for (SDValue &Op : Elts)
+          Op = TLI->isZExtFree(Op.getValueType(), SVT)
+             ? getZExtOrTrunc(Op, DL, SVT)
+             : getSExtOrTrunc(Op, DL, SVT);
+
       return getNode(ISD::BUILD_VECTOR, DL, VT, Elts);
     }
     break;

Modified: llvm/trunk/test/CodeGen/X86/fold-vector-shuffle-crash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fold-vector-shuffle-crash.ll?rev=235371&r1=235370&r2=235371&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/fold-vector-shuffle-crash.ll (original)
+++ llvm/trunk/test/CodeGen/X86/fold-vector-shuffle-crash.ll Tue Apr 21 03:05:43 2015
@@ -13,4 +13,374 @@ CF:
 CF247:
  %I171 = insertelement <8 x i32> %Shuff20, i32 %0, i32 0
  br i1 undef, label %CF, label %CF247
-}
\ No newline at end of file
+}
+
+define void @autogen_SD13800(i8*, i32*, i64*, i32, i64, i8) {
+BB:
+  %A4 = alloca <8 x i1>
+  %A3 = alloca i32
+  %A2 = alloca <2 x float>
+  %A1 = alloca <2 x double>
+  %A = alloca <8 x float>
+  %L = load <8 x i1>, <8 x i1>* %A4
+  store i8 %5, i8* %0
+  %E = extractelement <2 x i64> zeroinitializer, i32 0
+  %Shuff = shufflevector <4 x i64> zeroinitializer, <4 x i64> zeroinitializer, <4 x i32> <i32 7, i32 undef, i32 undef, i32 5>
+  %I = insertelement <8 x i64> zeroinitializer, i64 419346, i32 1
+  %B = shl i64 426618, 419346
+  %Tr = trunc <8 x i64> %I to <8 x i16>
+  %Sl = select i1 false, <4 x i64> zeroinitializer, <4 x i64> zeroinitializer
+  %Cmp = icmp eq <16 x i64> zeroinitializer, zeroinitializer
+  %L5 = load i8, i8* %0
+  store i8 17, i8* %0
+  %E6 = extractelement <4 x i64> zeroinitializer, i32 1
+  %Shuff7 = shufflevector <2 x i64> zeroinitializer, <2 x i64> <i64 -1, i64 -1>, <2 x i32> <i32 0, i32 2>
+  %I8 = insertelement <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, i8 %L5, i32 2
+  %B9 = mul <8 x i16> %Tr, %Tr
+  %FC = fptosi float 0xBDF7B90B80000000 to i32
+  %Sl10 = select i1 false, float 0xBDF7B90B80000000, float 0xB875A90980000000
+  %Cmp11 = icmp slt <2 x i64> zeroinitializer, %Shuff7
+  %L12 = load <8 x float>, <8 x float>* %A
+  store <2 x double> <double 0xFFFFFFFFFFFFFFFF, double 0.000000e+00>, <2 x double>* %A1
+  %E13 = extractelement <4 x i64> zeroinitializer, i32 2
+  %Shuff14 = shufflevector <2 x i32> zeroinitializer, <2 x i32> zeroinitializer, <2 x i32> <i32 1, i32 3>
+  %I15 = insertelement <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, i8 %L5, i32 15
+  %B16 = add <2 x i64> zeroinitializer, <i64 -1, i64 -1>
+  %BC = bitcast i64 426618 to double
+  %Sl17 = select i1 false, <2 x i32> zeroinitializer, <2 x i32> zeroinitializer
+  %Cmp18 = icmp slt <8 x i1> %L, %L
+  %L19 = load i8, i8* %0
+  store i8 %L5, i8* %0
+  %E20 = extractelement <16 x i8> %I8, i32 1
+  %Shuff21 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %I, <8 x i32> <i32 undef, i32 6, i32 8, i32 10, i32 12, i32 14, i32 0, i32 2>
+  %I22 = insertelement <8 x i16> %Tr, i16 18460, i32 6
+  %B23 = sub i64 419346, %4
+  %FC24 = fptosi double 0xE603EE221901D6A0 to i32
+  %Sl25 = select i1 false, i8 %L5, i8 %5
+  %Cmp26 = icmp ugt i64 %B, %B23
+  br label %CF253
+
+CF253:                                            ; preds = %CF253, %CF271, %CF260, %BB
+  %L27 = load i8, i8* %0
+  store i8 %L5, i8* %0
+  %E28 = extractelement <2 x i64> zeroinitializer, i32 0
+  %Shuff29 = shufflevector <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8> %I8, <16 x i32> <i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 undef, i32 31, i32 undef, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13>
+  %I30 = insertelement <8 x i1> %Cmp18, i1 false, i32 1
+  %B31 = fsub double 0xE603EE221901D6A0, %BC
+  %Tr32 = trunc <2 x i64> <i64 -1, i64 -1> to <2 x i32>
+  %Sl33 = select i1 false, double %BC, double %B31
+  %Cmp34 = icmp sgt <2 x i32> zeroinitializer, %Shuff14
+  %L35 = load i8, i8* %0
+  store i8 %L5, i8* %0
+  %E36 = extractelement <16 x i8> %Shuff29, i32 5
+  %Shuff37 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %I, <8 x i32> <i32 8, i32 undef, i32 undef, i32 14, i32 0, i32 undef, i32 4, i32 6>
+  %I38 = insertelement <4 x i64> zeroinitializer, i64 %E28, i32 2
+  %FC39 = uitofp i8 %5 to double
+  %Sl40 = select i1 %Cmp26, i32 %3, i32 %FC
+  %Cmp41 = icmp sgt <2 x i64> zeroinitializer, <i64 -1, i64 -1>
+  %L42 = load i8, i8* %0
+  store i8 17, i8* %0
+  %E43 = extractelement <2 x i1> %Cmp41, i32 1
+  br i1 %E43, label %CF253, label %CF256
+
+CF256:                                            ; preds = %CF256, %CF253
+  %Shuff44 = shufflevector <8 x i64> zeroinitializer, <8 x i64> zeroinitializer, <8 x i32> <i32 14, i32 0, i32 2, i32 4, i32 6, i32 undef, i32 undef, i32 12>
+  %I45 = insertelement <8 x i32> zeroinitializer, i32 %FC, i32 0
+  %ZE = zext i8 %L19 to i32
+  %Sl46 = select i1 %E43, i8 %L35, i8 %L35
+  %Cmp47 = icmp ult i64 %E6, 426618
+  br i1 %Cmp47, label %CF256, label %CF271
+
+CF271:                                            ; preds = %CF256
+  %L48 = load i8, i8* %0
+  store i8 %L27, i8* %0
+  %E49 = extractelement <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, i32 2
+  %Shuff50 = shufflevector <8 x i64> zeroinitializer, <8 x i64> zeroinitializer, <8 x i32> <i32 undef, i32 7, i32 undef, i32 11, i32 13, i32 15, i32 1, i32 3>
+  %I51 = insertelement <8 x i64> zeroinitializer, i64 %4, i32 7
+  %B52 = xor <8 x i32> %I45, zeroinitializer
+  %BC53 = bitcast <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1> to <4 x float>
+  %Sl54 = select i1 false, <2 x i64> <i64 -1, i64 -1>, <2 x i64> <i64 -1, i64 -1>
+  %Cmp55 = icmp sgt i16 0, 18460
+  br i1 %Cmp55, label %CF253, label %CF255
+
+CF255:                                            ; preds = %CF255, %CF266, %CF270, %CF271
+  %L56 = load i8, i8* %0
+  store i8 %L35, i8* %0
+  %E57 = extractelement <4 x i64> zeroinitializer, i32 3
+  %Shuff58 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %Shuff37, <8 x i32> <i32 undef, i32 undef, i32 10, i32 12, i32 14, i32 0, i32 2, i32 4>
+  %I59 = insertelement <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, i32 %FC, i32 0
+  %B60 = lshr <4 x i64> %I38, zeroinitializer
+  %FC61 = sitofp <8 x i1> %L to <8 x float>
+  %Sl62 = select i1 false, i8 %L19, i8 17
+  %Cmp63 = icmp ult i64 %E6, %E57
+  br i1 %Cmp63, label %CF255, label %CF266
+
+CF266:                                            ; preds = %CF255
+  %L64 = load i64, i64* %2
+  store i8 17, i8* %0
+  %E65 = extractelement <8 x i64> %Shuff21, i32 6
+  %Shuff66 = shufflevector <2 x i1> %Cmp11, <2 x i1> %Cmp41, <2 x i32> <i32 1, i32 3>
+  %I67 = insertelement <8 x i1> %I30, i1 false, i32 7
+  %FC68 = uitofp i8 %Sl62 to float
+  %Sl69 = select i1 false, i8 %L42, i8 17
+  %Cmp70 = icmp eq <2 x i32> zeroinitializer, zeroinitializer
+  %L71 = load i8, i8* %0
+  store i8 %5, i8* %0
+  %E72 = extractelement <2 x i64> <i64 -1, i64 -1>, i32 1
+  %Shuff73 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %Shuff44, <8 x i32> <i32 undef, i32 14, i32 0, i32 2, i32 4, i32 6, i32 undef, i32 10>
+  %I74 = insertelement <2 x i1> %Cmp70, i1 %Cmp55, i32 0
+  %B75 = add <16 x i8> %I15, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
+  %FC76 = sitofp i8 33 to double
+  %Sl77 = select i1 %E43, double %BC, double %B31
+  %Cmp78 = icmp ult <8 x i64> %Shuff44, %I
+  %L79 = load i8, i8* %0
+  store i8 17, i8* %0
+  %E80 = extractelement <2 x i64> %Shuff7, i32 0
+  %Shuff81 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %Shuff73, <8 x i32> <i32 undef, i32 5, i32 7, i32 9, i32 undef, i32 13, i32 15, i32 1>
+  %I82 = insertelement <8 x i64> %Shuff81, i64 %E57, i32 5
+  %FC83 = fptosi float %FC68 to i32
+  %Sl84 = select i1 %Cmp26, <2 x i64> <i64 -1, i64 -1>, <2 x i64> <i64 -1, i64 -1>
+  %Cmp85 = icmp ugt i64 %E6, %E57
+  br i1 %Cmp85, label %CF255, label %CF261
+
+CF261:                                            ; preds = %CF261, %CF266
+  %L86 = load i8, i8* %0
+  store i8 %L42, i8* %0
+  %E87 = extractelement <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, i32 7
+  %Shuff88 = shufflevector <16 x i8> %Shuff29, <16 x i8> %I15, <16 x i32> <i32 26, i32 28, i32 30, i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24>
+  %I89 = insertelement <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, i8 %L35, i32 12
+  %B90 = shl i32 %3, %E49
+  %BC91 = bitcast <2 x i64> %Sl84 to <2 x double>
+  %Sl92 = select i1 false, i8 %L5, i8 %L19
+  %Cmp93 = icmp ugt i32 -1, %FC24
+  br i1 %Cmp93, label %CF261, label %CF268
+
+CF268:                                            ; preds = %CF268, %CF261
+  %L94 = load i8, i8* %0
+  store i8 %L5, i8* %0
+  %E95 = extractelement <8 x i64> %Shuff58, i32 0
+  %Shuff96 = shufflevector <8 x i64> %Shuff73, <8 x i64> %Shuff73, <8 x i32> <i32 3, i32 5, i32 undef, i32 9, i32 undef, i32 undef, i32 15, i32 1>
+  %I97 = insertelement <4 x i64> zeroinitializer, i64 %B23, i32 1
+  %B98 = or <8 x i64> %Shuff58, %Shuff50
+  %FC99 = sitofp <2 x i1> %Cmp34 to <2 x float>
+  %Sl100 = select i1 %Cmp85, i64 %4, i64 %E
+  %Cmp101 = icmp ne <2 x i64> %B16, zeroinitializer
+  %L102 = load i8, i8* %0
+  store i8 %L56, i8* %0
+  %E103 = extractelement <8 x i16> %I22, i32 6
+  %Shuff104 = shufflevector <2 x double> %BC91, <2 x double> %BC91, <2 x i32> <i32 1, i32 3>
+  %I105 = insertelement <8 x i64> %Shuff96, i64 198384, i32 7
+  %B106 = sdiv <8 x i32> %B52, %I45
+  %ZE107 = zext i16 0 to i32
+  %Sl108 = select i1 %E43, <16 x i8> %Shuff29, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
+  %Cmp109 = icmp slt <16 x i64> zeroinitializer, zeroinitializer
+  %L110 = load <8 x float>, <8 x float>* %A
+  store i8 %L56, i8* %0
+  %E111 = extractelement <8 x i64> zeroinitializer, i32 3
+  %Shuff112 = shufflevector <2 x i1> %Shuff66, <2 x i1> %Cmp11, <2 x i32> <i32 2, i32 0>
+  %I113 = insertelement <2 x i64> %B16, i64 %E95, i32 0
+  %B114 = mul i8 %E20, %Sl25
+  %Tr115 = trunc <8 x i64> %I105 to <8 x i16>
+  %Sl116 = select i1 %Cmp26, <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
+  %Cmp117 = icmp ult <8 x i16> %Tr, %Tr115
+  %L118 = load i8, i8* %0
+  store i8 %L19, i8* %0
+  %E119 = extractelement <4 x i32> %I59, i32 3
+  %Shuff120 = shufflevector <2 x i64> <i64 -1, i64 -1>, <2 x i64> %I113, <2 x i32> <i32 2, i32 0>
+  %I121 = insertelement <2 x i1> %Shuff66, i1 %Cmp26, i32 0
+  %B122 = fmul double 0.000000e+00, 0xE603EE221901D6A0
+  %FC123 = sitofp i64 %E6 to float
+  %Sl124 = select i1 false, <2 x i1> %Cmp41, <2 x i1> %Shuff66
+  %Cmp125 = icmp ult <4 x i64> %I38, %I38
+  %L126 = load i8, i8* %0
+  store i8 %L126, i8* %0
+  %E127 = extractelement <8 x i64> zeroinitializer, i32 7
+  %Shuff128 = shufflevector <2 x i1> %Cmp101, <2 x i1> %Cmp11, <2 x i32> <i32 undef, i32 0>
+  %I129 = insertelement <8 x i1> %Cmp18, i1 %E43, i32 0
+  %B130 = lshr i8 %L71, %L56
+  %FC131 = sitofp i32 %3 to float
+  %Sl132 = select i1 false, <2 x i64> %Shuff7, <2 x i64> %Sl84
+  %Cmp133 = icmp sge <8 x i16> %Tr, %Tr115
+  %L134 = load i8, i8* %0
+  store i8 %L102, i8* %0
+  %E135 = extractelement <16 x i8> %Shuff88, i32 3
+  %Shuff136 = shufflevector <8 x i64> %Shuff21, <8 x i64> zeroinitializer, <8 x i32> <i32 6, i32 8, i32 undef, i32 12, i32 14, i32 0, i32 2, i32 4>
+  %I137 = insertelement <2 x i64> zeroinitializer, i64 %E111, i32 0
+  %B138 = shl <8 x i64> %I51, %Shuff136
+  %Se = sext <2 x i32> %Tr32 to <2 x i64>
+  %Sl139 = select i1 %E43, <8 x i16> %Tr, <8 x i16> %Tr115
+  %Cmp140 = icmp sge <2 x i32> %Sl17, %Tr32
+  %L141 = load i8, i8* %0
+  store i8 17, i8* %0
+  %E142 = extractelement <8 x i16> %Tr115, i32 6
+  %Shuff143 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %Shuff21, <8 x i32> <i32 1, i32 3, i32 undef, i32 7, i32 undef, i32 11, i32 13, i32 15>
+  %I144 = insertelement <4 x i64> %Shuff, i64 %4, i32 3
+  %B145 = sub <2 x i64> <i64 -1, i64 -1>, %I113
+  %Se146 = sext i8 %E135 to i32
+  %Sl147 = select i1 %Cmp55, <2 x i32> %Tr32, <2 x i32> zeroinitializer
+  %Cmp148 = icmp eq <8 x i1> %I30, %Cmp18
+  %L149 = load i8, i8* %0
+  store i8 %L56, i8* %0
+  %E150 = extractelement <2 x i64> %I113, i32 0
+  %Shuff151 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %I, <8 x i32> <i32 9, i32 11, i32 13, i32 15, i32 1, i32 3, i32 undef, i32 7>
+  %I152 = insertelement <8 x i64> %Shuff136, i64 %E6, i32 3
+  %B153 = frem float %FC68, %FC123
+  %Se154 = sext i1 false to i32
+  %Sl155 = select i1 %Cmp26, i8 %E20, i8 %L19
+  %Cmp156 = icmp eq i64 198384, %4
+  br i1 %Cmp156, label %CF268, label %CF270
+
+CF270:                                            ; preds = %CF268
+  %L157 = load i8, i8* %0
+  store i8 %L157, i8* %0
+  %E158 = extractelement <8 x i1> %Cmp78, i32 1
+  br i1 %E158, label %CF255, label %CF260
+
+CF260:                                            ; preds = %CF270
+  %Shuff159 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %Shuff81, <8 x i32> <i32 undef, i32 6, i32 8, i32 undef, i32 12, i32 14, i32 0, i32 2>
+  %I160 = insertelement <2 x i1> %Cmp11, i1 %Cmp156, i32 0
+  %B161 = urem <2 x i32> zeroinitializer, %Sl147
+  %Se162 = sext i8 %L48 to i16
+  %Sl163 = select i1 %Cmp93, i32 %FC83, i32 378892
+  %Cmp164 = fcmp uge double 0xE603EE221901D6A0, 0xE603EE221901D6A0
+  br i1 %Cmp164, label %CF253, label %CF254
+
+CF254:                                            ; preds = %CF254, %CF265, %CF263, %CF260
+  %L165 = load i8, i8* %0
+  store i8 %Sl62, i8* %0
+  %E166 = extractelement <8 x i64> %Shuff58, i32 1
+  %Shuff167 = shufflevector <8 x i64> %Shuff58, <8 x i64> %Shuff96, <8 x i32> <i32 12, i32 14, i32 0, i32 undef, i32 4, i32 undef, i32 8, i32 10>
+  %I168 = insertelement <2 x double> %BC91, double %BC, i32 0
+  %B169 = ashr i16 %E142, %E103
+  %FC170 = sitofp <2 x i64> %Sl84 to <2 x float>
+  %Sl171 = select i1 %Cmp156, i8 %L165, i8 %5
+  %Cmp172 = icmp ugt i8 %E20, %L102
+  br i1 %Cmp172, label %CF254, label %CF262
+
+CF262:                                            ; preds = %CF262, %CF254
+  %L173 = load i8, i8* %0
+  store i8 %L94, i8* %0
+  %E174 = extractelement <2 x i1> %Cmp70, i32 0
+  br i1 %E174, label %CF262, label %CF264
+
+CF264:                                            ; preds = %CF264, %CF262
+  %Shuff175 = shufflevector <16 x i1> %Cmp, <16 x i1> %Cmp, <16 x i32> <i32 undef, i32 9, i32 undef, i32 13, i32 undef, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 undef, i32 1, i32 3, i32 5>
+  %I176 = insertelement <8 x i64> %Shuff21, i64 419346, i32 1
+  %B177 = lshr <2 x i32> %Sl17, zeroinitializer
+  %FC178 = sitofp <8 x i32> %B106 to <8 x float>
+  %Sl179 = select i1 %Cmp156, i8 %B114, i8 %Sl171
+  %Cmp180 = icmp ugt <4 x i64> %B60, zeroinitializer
+  %L181 = load i8, i8* %0
+  store i8 %L102, i8* %0
+  %E182 = extractelement <8 x i64> zeroinitializer, i32 0
+  %Shuff183 = shufflevector <8 x i64> zeroinitializer, <8 x i64> %I176, <8 x i32> <i32 3, i32 5, i32 undef, i32 undef, i32 11, i32 13, i32 undef, i32 1>
+  %I184 = insertelement <2 x i1> %Cmp34, i1 %Cmp63, i32 1
+  %B185 = urem i32 %Sl163, %Se146
+  %FC186 = sitofp i64 %E166 to float
+  %Sl187 = select i1 %Cmp156, i1 %E43, i1 %Cmp26
+  br i1 %Sl187, label %CF264, label %CF265
+
+CF265:                                            ; preds = %CF264
+  %Cmp188 = icmp uge <16 x i1> %Shuff175, %Cmp
+  %L189 = load i8, i8* %0
+  store i8 %L19, i8* %0
+  %E190 = extractelement <2 x i1> %Cmp11, i32 0
+  br i1 %E190, label %CF254, label %CF259
+
+CF259:                                            ; preds = %CF259, %CF265
+  %Shuff191 = shufflevector <8 x i1> %Cmp117, <8 x i1> %I30, <8 x i32> <i32 11, i32 13, i32 15, i32 1, i32 3, i32 5, i32 7, i32 9>
+  %I192 = insertelement <16 x i1> %Cmp188, i1 %Cmp85, i32 13
+  %B193 = urem <2 x i64> %Sl132, %Sl54
+  %Tr194 = trunc i64 %E166 to i8
+  %Sl195 = select i1 %Cmp93, <2 x i1> %I160, <2 x i1> %Shuff66
+  %Cmp196 = icmp ult <2 x i1> %Shuff66, %Cmp11
+  %L197 = load i8, i8* %0
+  store i8 %L5, i8* %0
+  %E198 = extractelement <8 x i64> %Shuff183, i32 0
+  %Shuff199 = shufflevector <8 x i16> %I22, <8 x i16> %Tr115, <8 x i32> <i32 3, i32 5, i32 undef, i32 9, i32 11, i32 13, i32 15, i32 undef>
+  %I200 = insertelement <16 x i8> %Shuff29, i8 %L197, i32 5
+  %B201 = and <2 x i64> %B145, %I113
+  %ZE202 = zext <2 x i1> %I74 to <2 x i64>
+  %Sl203 = select i1 %Cmp26, i8 %L126, i8 %L102
+  %Cmp204 = fcmp oeq <4 x float> %BC53, %BC53
+  %L205 = load i8, i8* %0
+  store i8 %5, i8* %0
+  %E206 = extractelement <2 x double> %Shuff104, i32 0
+  %Shuff207 = shufflevector <4 x i64> %I38, <4 x i64> zeroinitializer, <4 x i32> <i32 7, i32 undef, i32 3, i32 5>
+  %I208 = insertelement <8 x i64> %I82, i64 323142, i32 1
+  %B209 = lshr i8 %L56, %L5
+  %FC210 = fptoui double 0xE603EE221901D6A0 to i1
+  br i1 %FC210, label %CF259, label %CF263
+
+CF263:                                            ; preds = %CF259
+  %Sl211 = select i1 %E174, i32 %ZE, i32 %ZE107
+  %Cmp212 = icmp ne i32 %Se154, %Sl163
+  br i1 %Cmp212, label %CF254, label %CF257
+
+CF257:                                            ; preds = %CF263
+  %L213 = load i8, i8* %0
+  store i8 %L213, i8* %0
+  %E214 = extractelement <8 x i64> %Shuff81, i32 3
+  %Shuff215 = shufflevector <8 x i64> %Shuff159, <8 x i64> %Shuff136, <8 x i32> <i32 14, i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12>
+  %I216 = insertelement <8 x i64> %Shuff215, i64 323142, i32 0
+  %Se217 = sext i8 %L71 to i64
+  %Sl218 = select i1 %Cmp156, <8 x i16> %Tr115, <8 x i16> %Tr115
+  %Cmp219 = fcmp ole <2 x float> %FC170, %FC99
+  %L220 = load i8, i8* %0
+  store i8 %L19, i8* %0
+  %E221 = extractelement <8 x i64> zeroinitializer, i32 6
+  %Shuff222 = shufflevector <4 x i1> %Cmp204, <4 x i1> %Cmp125, <4 x i32> <i32 1, i32 undef, i32 5, i32 7>
+  %I223 = insertelement <8 x i1> %Cmp18, i1 %FC210, i32 3
+  %B224 = lshr i32 %E49, %FC24
+  %FC225 = sitofp <4 x i1> %Cmp180 to <4 x float>
+  %Sl226 = select i1 %Cmp93, i64 %E28, i64 %B23
+  %Cmp227 = icmp ugt <4 x i64> zeroinitializer, %B60
+  %L228 = load i8, i8* %0
+  store i8 %Sl46, i8* %0
+  %E229 = extractelement <1 x i32> zeroinitializer, i32 0
+  %Shuff230 = shufflevector <16 x i8> %Shuff29, <16 x i8> %I200, <16 x i32> <i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 undef, i32 undef, i32 29, i32 31, i32 1, i32 undef, i32 5, i32 undef, i32 9>
+  %I231 = insertelement <8 x i64> %Shuff183, i64 %L64, i32 5
+  %B232 = fadd float %FC68, %FC68
+  %Se233 = sext i1 %Cmp172 to i64
+  %Sl234 = select i1 false, i1 %Cmp164, i1 %E43
+  br label %CF
+
+CF:                                               ; preds = %CF, %CF257
+  %Cmp235 = icmp ule i32 %Sl163, %Sl211
+  br i1 %Cmp235, label %CF, label %CF252
+
+CF252:                                            ; preds = %CF252, %CF269, %CF
+  %L236 = load i8, i8* %0
+  store i8 %L19, i8* %0
+  %E237 = extractelement <16 x i1> %Shuff175, i32 15
+  br i1 %E237, label %CF252, label %CF269
+
+CF269:                                            ; preds = %CF252
+  %Shuff238 = shufflevector <2 x i1> %I160, <2 x i1> %Cmp101, <2 x i32> undef
+  %I239 = insertelement <8 x i64> zeroinitializer, i64 %4, i32 0
+  %B240 = add i8 %L56, %Sl155
+  %Tr241 = trunc <2 x i32> %Sl147 to <2 x i1>
+  %Sl242 = select i1 %Sl234, <2 x float> %FC99, <2 x float> %FC99
+  %Cmp243 = icmp eq i8 %L5, %L118
+  br i1 %Cmp243, label %CF252, label %CF258
+
+CF258:                                            ; preds = %CF258, %CF269
+  %L244 = load i8, i8* %0
+  store i8 %L19, i8* %0
+  %E245 = extractelement <2 x i64> %B201, i32 1
+  %Shuff246 = shufflevector <4 x i64> zeroinitializer, <4 x i64> %I144, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
+  %I247 = insertelement <8 x i64> %Shuff73, i64 %E182, i32 2
+  %B248 = or i64 %Sl226, %E245
+  %Tr249 = trunc <2 x i64> <i64 -1, i64 -1> to <2 x i16>
+  %Sl250 = select i1 %FC210, i64 %E57, i64 %L64
+  %Cmp251 = icmp eq i32 %FC24, %FC
+  br i1 %Cmp251, label %CF258, label %CF267
+
+CF267:                                            ; preds = %CF258
+  store i8 %L42, i8* %0
+  store i8 %Sl69, i8* %0
+  store i8 %L5, i8* %0
+  store i8 %L134, i8* %0
+  store i8 %L141, i8* %0
+  ret void
+}





More information about the llvm-commits mailing list