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

llvm-svn: 235371
This commit is contained in:
Simon Pilgrim 2015-04-21 08:05:43 +00:00
parent b046734bb1
commit d5bdbd921b
2 changed files with 383 additions and 1 deletions

View File

@ -3198,6 +3198,18 @@ SDValue SelectionDAG::getNode(unsigned Opcode, SDLoc DL, EVT VT, SDValue N1,
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;

View File

@ -13,4 +13,374 @@ CF:
CF247:
%I171 = insertelement <8 x i32> %Shuff20, i32 %0, i32 0
br i1 undef, label %CF, label %CF247
}
}
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
}