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