1*9880d681SAndroid Build Coastguard Worker; REQUIRES: asserts 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 -mcpu=yonah -stats 2>&1 | grep "Number of block tails merged" | grep 16 3*9880d681SAndroid Build Coastguard Worker; PR1909 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker@.str = internal constant [48 x i8] c"transformed bounds: (%.2f, %.2f), (%.2f, %.2f)\0A\00" ; <[48 x i8]*> [#uses=1] 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine void @minmax(float* %result) nounwind optsize { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker %tmp2 = load float, float* %result, align 4 ; <float> [#uses=6] 10*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr float, float* %result, i32 2 ; <float*> [#uses=5] 11*9880d681SAndroid Build Coastguard Worker %tmp5 = load float, float* %tmp4, align 4 ; <float> [#uses=10] 12*9880d681SAndroid Build Coastguard Worker %tmp7 = getelementptr float, float* %result, i32 4 ; <float*> [#uses=5] 13*9880d681SAndroid Build Coastguard Worker %tmp8 = load float, float* %tmp7, align 4 ; <float> [#uses=8] 14*9880d681SAndroid Build Coastguard Worker %tmp10 = getelementptr float, float* %result, i32 6 ; <float*> [#uses=3] 15*9880d681SAndroid Build Coastguard Worker %tmp11 = load float, float* %tmp10, align 4 ; <float> [#uses=8] 16*9880d681SAndroid Build Coastguard Worker %tmp12 = fcmp olt float %tmp8, %tmp11 ; <i1> [#uses=5] 17*9880d681SAndroid Build Coastguard Worker br i1 %tmp12, label %bb, label %bb21 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerbb: ; preds = %entry 20*9880d681SAndroid Build Coastguard Worker %tmp23469 = fcmp olt float %tmp5, %tmp8 ; <i1> [#uses=1] 21*9880d681SAndroid Build Coastguard Worker br i1 %tmp23469, label %bb26, label %bb30 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerbb21: ; preds = %entry 24*9880d681SAndroid Build Coastguard Worker %tmp23 = fcmp olt float %tmp5, %tmp11 ; <i1> [#uses=1] 25*9880d681SAndroid Build Coastguard Worker br i1 %tmp23, label %bb26, label %bb30 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerbb26: ; preds = %bb21, %bb 28*9880d681SAndroid Build Coastguard Worker %tmp52471 = fcmp olt float %tmp2, %tmp5 ; <i1> [#uses=1] 29*9880d681SAndroid Build Coastguard Worker br i1 %tmp52471, label %bb111, label %bb59 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerbb30: ; preds = %bb21, %bb 32*9880d681SAndroid Build Coastguard Worker br i1 %tmp12, label %bb40, label %bb50 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerbb40: ; preds = %bb30 35*9880d681SAndroid Build Coastguard Worker %tmp52473 = fcmp olt float %tmp2, %tmp8 ; <i1> [#uses=1] 36*9880d681SAndroid Build Coastguard Worker br i1 %tmp52473, label %bb111, label %bb59 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerbb50: ; preds = %bb30 39*9880d681SAndroid Build Coastguard Worker %tmp52 = fcmp olt float %tmp2, %tmp11 ; <i1> [#uses=1] 40*9880d681SAndroid Build Coastguard Worker br i1 %tmp52, label %bb111, label %bb59 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerbb59: ; preds = %bb50, %bb40, %bb26 43*9880d681SAndroid Build Coastguard Worker br i1 %tmp12, label %bb72, label %bb80 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerbb72: ; preds = %bb59 46*9880d681SAndroid Build Coastguard Worker %tmp82475 = fcmp olt float %tmp5, %tmp8 ; <i1> [#uses=2] 47*9880d681SAndroid Build Coastguard Worker %brmerge786 = or i1 %tmp82475, %tmp12 ; <i1> [#uses=1] 48*9880d681SAndroid Build Coastguard Worker %tmp4.mux787 = select i1 %tmp82475, float* %tmp4, float* %tmp7 ; <float*> [#uses=1] 49*9880d681SAndroid Build Coastguard Worker br i1 %brmerge786, label %bb111, label %bb103 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerbb80: ; preds = %bb59 52*9880d681SAndroid Build Coastguard Worker %tmp82 = fcmp olt float %tmp5, %tmp11 ; <i1> [#uses=2] 53*9880d681SAndroid Build Coastguard Worker %brmerge = or i1 %tmp82, %tmp12 ; <i1> [#uses=1] 54*9880d681SAndroid Build Coastguard Worker %tmp4.mux = select i1 %tmp82, float* %tmp4, float* %tmp7 ; <float*> [#uses=1] 55*9880d681SAndroid Build Coastguard Worker br i1 %brmerge, label %bb111, label %bb103 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerbb103: ; preds = %bb80, %bb72 58*9880d681SAndroid Build Coastguard Worker br label %bb111 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerbb111: ; preds = %bb103, %bb80, %bb72, %bb50, %bb40, %bb26 61*9880d681SAndroid Build Coastguard Worker %iftmp.0.0.in = phi float* [ %tmp10, %bb103 ], [ %result, %bb26 ], [ %result, %bb40 ], [ %result, %bb50 ], [ %tmp4.mux, %bb80 ], [ %tmp4.mux787, %bb72 ] ; <float*> [#uses=1] 62*9880d681SAndroid Build Coastguard Worker %iftmp.0.0 = load float, float* %iftmp.0.0.in ; <float> [#uses=1] 63*9880d681SAndroid Build Coastguard Worker %tmp125 = fcmp ogt float %tmp8, %tmp11 ; <i1> [#uses=5] 64*9880d681SAndroid Build Coastguard Worker br i1 %tmp125, label %bb128, label %bb136 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerbb128: ; preds = %bb111 67*9880d681SAndroid Build Coastguard Worker %tmp138477 = fcmp ogt float %tmp5, %tmp8 ; <i1> [#uses=1] 68*9880d681SAndroid Build Coastguard Worker br i1 %tmp138477, label %bb141, label %bb145 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerbb136: ; preds = %bb111 71*9880d681SAndroid Build Coastguard Worker %tmp138 = fcmp ogt float %tmp5, %tmp11 ; <i1> [#uses=1] 72*9880d681SAndroid Build Coastguard Worker br i1 %tmp138, label %bb141, label %bb145 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerbb141: ; preds = %bb136, %bb128 75*9880d681SAndroid Build Coastguard Worker %tmp167479 = fcmp ogt float %tmp2, %tmp5 ; <i1> [#uses=1] 76*9880d681SAndroid Build Coastguard Worker br i1 %tmp167479, label %bb226, label %bb174 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerbb145: ; preds = %bb136, %bb128 79*9880d681SAndroid Build Coastguard Worker br i1 %tmp125, label %bb155, label %bb165 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Workerbb155: ; preds = %bb145 82*9880d681SAndroid Build Coastguard Worker %tmp167481 = fcmp ogt float %tmp2, %tmp8 ; <i1> [#uses=1] 83*9880d681SAndroid Build Coastguard Worker br i1 %tmp167481, label %bb226, label %bb174 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerbb165: ; preds = %bb145 86*9880d681SAndroid Build Coastguard Worker %tmp167 = fcmp ogt float %tmp2, %tmp11 ; <i1> [#uses=1] 87*9880d681SAndroid Build Coastguard Worker br i1 %tmp167, label %bb226, label %bb174 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerbb174: ; preds = %bb165, %bb155, %bb141 90*9880d681SAndroid Build Coastguard Worker br i1 %tmp125, label %bb187, label %bb195 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerbb187: ; preds = %bb174 93*9880d681SAndroid Build Coastguard Worker %tmp197483 = fcmp ogt float %tmp5, %tmp8 ; <i1> [#uses=2] 94*9880d681SAndroid Build Coastguard Worker %brmerge790 = or i1 %tmp197483, %tmp125 ; <i1> [#uses=1] 95*9880d681SAndroid Build Coastguard Worker %tmp4.mux791 = select i1 %tmp197483, float* %tmp4, float* %tmp7 ; <float*> [#uses=1] 96*9880d681SAndroid Build Coastguard Worker br i1 %brmerge790, label %bb226, label %bb218 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerbb195: ; preds = %bb174 99*9880d681SAndroid Build Coastguard Worker %tmp197 = fcmp ogt float %tmp5, %tmp11 ; <i1> [#uses=2] 100*9880d681SAndroid Build Coastguard Worker %brmerge788 = or i1 %tmp197, %tmp125 ; <i1> [#uses=1] 101*9880d681SAndroid Build Coastguard Worker %tmp4.mux789 = select i1 %tmp197, float* %tmp4, float* %tmp7 ; <float*> [#uses=1] 102*9880d681SAndroid Build Coastguard Worker br i1 %brmerge788, label %bb226, label %bb218 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerbb218: ; preds = %bb195, %bb187 105*9880d681SAndroid Build Coastguard Worker br label %bb226 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Workerbb226: ; preds = %bb218, %bb195, %bb187, %bb165, %bb155, %bb141 108*9880d681SAndroid Build Coastguard Worker %iftmp.7.0.in = phi float* [ %tmp10, %bb218 ], [ %result, %bb141 ], [ %result, %bb155 ], [ %result, %bb165 ], [ %tmp4.mux789, %bb195 ], [ %tmp4.mux791, %bb187 ] ; <float*> [#uses=1] 109*9880d681SAndroid Build Coastguard Worker %iftmp.7.0 = load float, float* %iftmp.7.0.in ; <float> [#uses=1] 110*9880d681SAndroid Build Coastguard Worker %tmp229 = getelementptr float, float* %result, i32 1 ; <float*> [#uses=7] 111*9880d681SAndroid Build Coastguard Worker %tmp230 = load float, float* %tmp229, align 4 ; <float> [#uses=6] 112*9880d681SAndroid Build Coastguard Worker %tmp232 = getelementptr float, float* %result, i32 3 ; <float*> [#uses=5] 113*9880d681SAndroid Build Coastguard Worker %tmp233 = load float, float* %tmp232, align 4 ; <float> [#uses=10] 114*9880d681SAndroid Build Coastguard Worker %tmp235 = getelementptr float, float* %result, i32 5 ; <float*> [#uses=5] 115*9880d681SAndroid Build Coastguard Worker %tmp236 = load float, float* %tmp235, align 4 ; <float> [#uses=8] 116*9880d681SAndroid Build Coastguard Worker %tmp238 = getelementptr float, float* %result, i32 7 ; <float*> [#uses=3] 117*9880d681SAndroid Build Coastguard Worker %tmp239 = load float, float* %tmp238, align 4 ; <float> [#uses=8] 118*9880d681SAndroid Build Coastguard Worker %tmp240 = fcmp olt float %tmp236, %tmp239 ; <i1> [#uses=5] 119*9880d681SAndroid Build Coastguard Worker br i1 %tmp240, label %bb243, label %bb251 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Workerbb243: ; preds = %bb226 122*9880d681SAndroid Build Coastguard Worker %tmp253485 = fcmp olt float %tmp233, %tmp236 ; <i1> [#uses=1] 123*9880d681SAndroid Build Coastguard Worker br i1 %tmp253485, label %bb256, label %bb260 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerbb251: ; preds = %bb226 126*9880d681SAndroid Build Coastguard Worker %tmp253 = fcmp olt float %tmp233, %tmp239 ; <i1> [#uses=1] 127*9880d681SAndroid Build Coastguard Worker br i1 %tmp253, label %bb256, label %bb260 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Workerbb256: ; preds = %bb251, %bb243 130*9880d681SAndroid Build Coastguard Worker %tmp282487 = fcmp olt float %tmp230, %tmp233 ; <i1> [#uses=1] 131*9880d681SAndroid Build Coastguard Worker br i1 %tmp282487, label %bb341, label %bb289 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerbb260: ; preds = %bb251, %bb243 134*9880d681SAndroid Build Coastguard Worker br i1 %tmp240, label %bb270, label %bb280 135*9880d681SAndroid Build Coastguard Worker 136*9880d681SAndroid Build Coastguard Workerbb270: ; preds = %bb260 137*9880d681SAndroid Build Coastguard Worker %tmp282489 = fcmp olt float %tmp230, %tmp236 ; <i1> [#uses=1] 138*9880d681SAndroid Build Coastguard Worker br i1 %tmp282489, label %bb341, label %bb289 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Workerbb280: ; preds = %bb260 141*9880d681SAndroid Build Coastguard Worker %tmp282 = fcmp olt float %tmp230, %tmp239 ; <i1> [#uses=1] 142*9880d681SAndroid Build Coastguard Worker br i1 %tmp282, label %bb341, label %bb289 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Workerbb289: ; preds = %bb280, %bb270, %bb256 145*9880d681SAndroid Build Coastguard Worker br i1 %tmp240, label %bb302, label %bb310 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Workerbb302: ; preds = %bb289 148*9880d681SAndroid Build Coastguard Worker %tmp312491 = fcmp olt float %tmp233, %tmp236 ; <i1> [#uses=2] 149*9880d681SAndroid Build Coastguard Worker %brmerge793 = or i1 %tmp312491, %tmp240 ; <i1> [#uses=1] 150*9880d681SAndroid Build Coastguard Worker %tmp232.mux794 = select i1 %tmp312491, float* %tmp232, float* %tmp235 ; <float*> [#uses=1] 151*9880d681SAndroid Build Coastguard Worker br i1 %brmerge793, label %bb341, label %bb333 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Workerbb310: ; preds = %bb289 154*9880d681SAndroid Build Coastguard Worker %tmp312 = fcmp olt float %tmp233, %tmp239 ; <i1> [#uses=2] 155*9880d681SAndroid Build Coastguard Worker %brmerge792 = or i1 %tmp312, %tmp240 ; <i1> [#uses=1] 156*9880d681SAndroid Build Coastguard Worker %tmp232.mux = select i1 %tmp312, float* %tmp232, float* %tmp235 ; <float*> [#uses=1] 157*9880d681SAndroid Build Coastguard Worker br i1 %brmerge792, label %bb341, label %bb333 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Workerbb333: ; preds = %bb310, %bb302 160*9880d681SAndroid Build Coastguard Worker br label %bb341 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Workerbb341: ; preds = %bb333, %bb310, %bb302, %bb280, %bb270, %bb256 163*9880d681SAndroid Build Coastguard Worker %iftmp.14.0.in = phi float* [ %tmp238, %bb333 ], [ %tmp229, %bb280 ], [ %tmp229, %bb270 ], [ %tmp229, %bb256 ], [ %tmp232.mux, %bb310 ], [ %tmp232.mux794, %bb302 ] ; <float*> [#uses=1] 164*9880d681SAndroid Build Coastguard Worker %iftmp.14.0 = load float, float* %iftmp.14.0.in ; <float> [#uses=1] 165*9880d681SAndroid Build Coastguard Worker %tmp355 = fcmp ogt float %tmp236, %tmp239 ; <i1> [#uses=5] 166*9880d681SAndroid Build Coastguard Worker br i1 %tmp355, label %bb358, label %bb366 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Workerbb358: ; preds = %bb341 169*9880d681SAndroid Build Coastguard Worker %tmp368493 = fcmp ogt float %tmp233, %tmp236 ; <i1> [#uses=1] 170*9880d681SAndroid Build Coastguard Worker br i1 %tmp368493, label %bb371, label %bb375 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Workerbb366: ; preds = %bb341 173*9880d681SAndroid Build Coastguard Worker %tmp368 = fcmp ogt float %tmp233, %tmp239 ; <i1> [#uses=1] 174*9880d681SAndroid Build Coastguard Worker br i1 %tmp368, label %bb371, label %bb375 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Workerbb371: ; preds = %bb366, %bb358 177*9880d681SAndroid Build Coastguard Worker %tmp397495 = fcmp ogt float %tmp230, %tmp233 ; <i1> [#uses=1] 178*9880d681SAndroid Build Coastguard Worker br i1 %tmp397495, label %bb456, label %bb404 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Workerbb375: ; preds = %bb366, %bb358 181*9880d681SAndroid Build Coastguard Worker br i1 %tmp355, label %bb385, label %bb395 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Workerbb385: ; preds = %bb375 184*9880d681SAndroid Build Coastguard Worker %tmp397497 = fcmp ogt float %tmp230, %tmp236 ; <i1> [#uses=1] 185*9880d681SAndroid Build Coastguard Worker br i1 %tmp397497, label %bb456, label %bb404 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Workerbb395: ; preds = %bb375 188*9880d681SAndroid Build Coastguard Worker %tmp397 = fcmp ogt float %tmp230, %tmp239 ; <i1> [#uses=1] 189*9880d681SAndroid Build Coastguard Worker br i1 %tmp397, label %bb456, label %bb404 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Workerbb404: ; preds = %bb395, %bb385, %bb371 192*9880d681SAndroid Build Coastguard Worker br i1 %tmp355, label %bb417, label %bb425 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Workerbb417: ; preds = %bb404 195*9880d681SAndroid Build Coastguard Worker %tmp427499 = fcmp ogt float %tmp233, %tmp236 ; <i1> [#uses=2] 196*9880d681SAndroid Build Coastguard Worker %brmerge797 = or i1 %tmp427499, %tmp355 ; <i1> [#uses=1] 197*9880d681SAndroid Build Coastguard Worker %tmp232.mux798 = select i1 %tmp427499, float* %tmp232, float* %tmp235 ; <float*> [#uses=1] 198*9880d681SAndroid Build Coastguard Worker br i1 %brmerge797, label %bb456, label %bb448 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Workerbb425: ; preds = %bb404 201*9880d681SAndroid Build Coastguard Worker %tmp427 = fcmp ogt float %tmp233, %tmp239 ; <i1> [#uses=2] 202*9880d681SAndroid Build Coastguard Worker %brmerge795 = or i1 %tmp427, %tmp355 ; <i1> [#uses=1] 203*9880d681SAndroid Build Coastguard Worker %tmp232.mux796 = select i1 %tmp427, float* %tmp232, float* %tmp235 ; <float*> [#uses=1] 204*9880d681SAndroid Build Coastguard Worker br i1 %brmerge795, label %bb456, label %bb448 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Workerbb448: ; preds = %bb425, %bb417 207*9880d681SAndroid Build Coastguard Worker br label %bb456 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Workerbb456: ; preds = %bb448, %bb425, %bb417, %bb395, %bb385, %bb371 210*9880d681SAndroid Build Coastguard Worker %iftmp.21.0.in = phi float* [ %tmp238, %bb448 ], [ %tmp229, %bb395 ], [ %tmp229, %bb385 ], [ %tmp229, %bb371 ], [ %tmp232.mux796, %bb425 ], [ %tmp232.mux798, %bb417 ] ; <float*> [#uses=1] 211*9880d681SAndroid Build Coastguard Worker %iftmp.21.0 = load float, float* %iftmp.21.0.in ; <float> [#uses=1] 212*9880d681SAndroid Build Coastguard Worker %tmp458459 = fpext float %iftmp.21.0 to double ; <double> [#uses=1] 213*9880d681SAndroid Build Coastguard Worker %tmp460461 = fpext float %iftmp.7.0 to double ; <double> [#uses=1] 214*9880d681SAndroid Build Coastguard Worker %tmp462463 = fpext float %iftmp.14.0 to double ; <double> [#uses=1] 215*9880d681SAndroid Build Coastguard Worker %tmp464465 = fpext float %iftmp.0.0 to double ; <double> [#uses=1] 216*9880d681SAndroid Build Coastguard Worker %tmp467 = tail call i32 (i8*, ...) @printf( i8* getelementptr ([48 x i8], [48 x i8]* @.str, i32 0, i32 0), double %tmp464465, double %tmp462463, double %tmp460461, double %tmp458459 ) nounwind ; <i32> [#uses=0] 217*9880d681SAndroid Build Coastguard Worker ret void 218*9880d681SAndroid Build Coastguard Worker} 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerdeclare i32 @printf(i8*, ...) nounwind 221