Dale Johannesen | baceb5e | 2008-07-01 21:50:49 +0000 | [diff] [blame^] | 1 | ; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -stats |& grep {Number of block tails merged} | grep 9 |
Evan Cheng | efe3973 | 2008-02-19 02:09:58 +0000 | [diff] [blame] | 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 | |
| 6 | define void @minmax(float* %result) nounwind { |
| 7 | entry: |
| 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 | |
| 18 | bb: ; preds = %entry |
| 19 | %tmp23469 = fcmp olt float %tmp5, %tmp8 ; <i1> [#uses=1] |
| 20 | br i1 %tmp23469, label %bb26, label %bb30 |
| 21 | |
| 22 | bb21: ; preds = %entry |
| 23 | %tmp23 = fcmp olt float %tmp5, %tmp11 ; <i1> [#uses=1] |
| 24 | br i1 %tmp23, label %bb26, label %bb30 |
| 25 | |
| 26 | bb26: ; preds = %bb21, %bb |
| 27 | %tmp52471 = fcmp olt float %tmp2, %tmp5 ; <i1> [#uses=1] |
| 28 | br i1 %tmp52471, label %bb111, label %bb59 |
| 29 | |
| 30 | bb30: ; preds = %bb21, %bb |
| 31 | br i1 %tmp12, label %bb40, label %bb50 |
| 32 | |
| 33 | bb40: ; preds = %bb30 |
| 34 | %tmp52473 = fcmp olt float %tmp2, %tmp8 ; <i1> [#uses=1] |
| 35 | br i1 %tmp52473, label %bb111, label %bb59 |
| 36 | |
| 37 | bb50: ; preds = %bb30 |
| 38 | %tmp52 = fcmp olt float %tmp2, %tmp11 ; <i1> [#uses=1] |
| 39 | br i1 %tmp52, label %bb111, label %bb59 |
| 40 | |
| 41 | bb59: ; preds = %bb50, %bb40, %bb26 |
| 42 | br i1 %tmp12, label %bb72, label %bb80 |
| 43 | |
| 44 | bb72: ; 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 | |
| 50 | bb80: ; 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 | |
| 56 | bb103: ; preds = %bb80, %bb72 |
| 57 | br label %bb111 |
| 58 | |
| 59 | bb111: ; 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 | |
| 65 | bb128: ; preds = %bb111 |
| 66 | %tmp138477 = fcmp ogt float %tmp5, %tmp8 ; <i1> [#uses=1] |
| 67 | br i1 %tmp138477, label %bb141, label %bb145 |
| 68 | |
| 69 | bb136: ; preds = %bb111 |
| 70 | %tmp138 = fcmp ogt float %tmp5, %tmp11 ; <i1> [#uses=1] |
| 71 | br i1 %tmp138, label %bb141, label %bb145 |
| 72 | |
| 73 | bb141: ; preds = %bb136, %bb128 |
| 74 | %tmp167479 = fcmp ogt float %tmp2, %tmp5 ; <i1> [#uses=1] |
| 75 | br i1 %tmp167479, label %bb226, label %bb174 |
| 76 | |
| 77 | bb145: ; preds = %bb136, %bb128 |
| 78 | br i1 %tmp125, label %bb155, label %bb165 |
| 79 | |
| 80 | bb155: ; preds = %bb145 |
| 81 | %tmp167481 = fcmp ogt float %tmp2, %tmp8 ; <i1> [#uses=1] |
| 82 | br i1 %tmp167481, label %bb226, label %bb174 |
| 83 | |
| 84 | bb165: ; preds = %bb145 |
| 85 | %tmp167 = fcmp ogt float %tmp2, %tmp11 ; <i1> [#uses=1] |
| 86 | br i1 %tmp167, label %bb226, label %bb174 |
| 87 | |
| 88 | bb174: ; preds = %bb165, %bb155, %bb141 |
| 89 | br i1 %tmp125, label %bb187, label %bb195 |
| 90 | |
| 91 | bb187: ; 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 | |
| 97 | bb195: ; 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 | |
| 103 | bb218: ; preds = %bb195, %bb187 |
| 104 | br label %bb226 |
| 105 | |
| 106 | bb226: ; 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 | |
| 120 | bb243: ; preds = %bb226 |
| 121 | %tmp253485 = fcmp olt float %tmp233, %tmp236 ; <i1> [#uses=1] |
| 122 | br i1 %tmp253485, label %bb256, label %bb260 |
| 123 | |
| 124 | bb251: ; preds = %bb226 |
| 125 | %tmp253 = fcmp olt float %tmp233, %tmp239 ; <i1> [#uses=1] |
| 126 | br i1 %tmp253, label %bb256, label %bb260 |
| 127 | |
| 128 | bb256: ; preds = %bb251, %bb243 |
| 129 | %tmp282487 = fcmp olt float %tmp230, %tmp233 ; <i1> [#uses=1] |
| 130 | br i1 %tmp282487, label %bb341, label %bb289 |
| 131 | |
| 132 | bb260: ; preds = %bb251, %bb243 |
| 133 | br i1 %tmp240, label %bb270, label %bb280 |
| 134 | |
| 135 | bb270: ; preds = %bb260 |
| 136 | %tmp282489 = fcmp olt float %tmp230, %tmp236 ; <i1> [#uses=1] |
| 137 | br i1 %tmp282489, label %bb341, label %bb289 |
| 138 | |
| 139 | bb280: ; preds = %bb260 |
| 140 | %tmp282 = fcmp olt float %tmp230, %tmp239 ; <i1> [#uses=1] |
| 141 | br i1 %tmp282, label %bb341, label %bb289 |
| 142 | |
| 143 | bb289: ; preds = %bb280, %bb270, %bb256 |
| 144 | br i1 %tmp240, label %bb302, label %bb310 |
| 145 | |
| 146 | bb302: ; 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 | |
| 152 | bb310: ; 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 | |
| 158 | bb333: ; preds = %bb310, %bb302 |
| 159 | br label %bb341 |
| 160 | |
| 161 | bb341: ; 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 | |
| 167 | bb358: ; preds = %bb341 |
| 168 | %tmp368493 = fcmp ogt float %tmp233, %tmp236 ; <i1> [#uses=1] |
| 169 | br i1 %tmp368493, label %bb371, label %bb375 |
| 170 | |
| 171 | bb366: ; preds = %bb341 |
| 172 | %tmp368 = fcmp ogt float %tmp233, %tmp239 ; <i1> [#uses=1] |
| 173 | br i1 %tmp368, label %bb371, label %bb375 |
| 174 | |
| 175 | bb371: ; preds = %bb366, %bb358 |
| 176 | %tmp397495 = fcmp ogt float %tmp230, %tmp233 ; <i1> [#uses=1] |
| 177 | br i1 %tmp397495, label %bb456, label %bb404 |
| 178 | |
| 179 | bb375: ; preds = %bb366, %bb358 |
| 180 | br i1 %tmp355, label %bb385, label %bb395 |
| 181 | |
| 182 | bb385: ; preds = %bb375 |
| 183 | %tmp397497 = fcmp ogt float %tmp230, %tmp236 ; <i1> [#uses=1] |
| 184 | br i1 %tmp397497, label %bb456, label %bb404 |
| 185 | |
| 186 | bb395: ; preds = %bb375 |
| 187 | %tmp397 = fcmp ogt float %tmp230, %tmp239 ; <i1> [#uses=1] |
| 188 | br i1 %tmp397, label %bb456, label %bb404 |
| 189 | |
| 190 | bb404: ; preds = %bb395, %bb385, %bb371 |
| 191 | br i1 %tmp355, label %bb417, label %bb425 |
| 192 | |
| 193 | bb417: ; 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 | |
| 199 | bb425: ; 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 | |
| 205 | bb448: ; preds = %bb425, %bb417 |
| 206 | br label %bb456 |
| 207 | |
| 208 | bb456: ; 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 | |
| 219 | declare i32 @printf(i8*, ...) nounwind |