316 lines · plain
1; RUN: opt < %s -passes=simplifycfg,instcombine -simplifycfg-require-and-preserve-domtree=1 -S | grep 0x7FF8000000000000 | count 122; RUN: opt < %s -passes=simplifycfg,instcombine -simplifycfg-require-and-preserve-domtree=1 -S | grep "0\.0" | count 33; RUN: opt < %s -passes=simplifycfg,instcombine -simplifycfg-require-and-preserve-domtree=1 -S | grep "3\.5" | count 14;5 6; ModuleID = 'apf.c'7target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"8target triple = "i386-apple-darwin9.6"9@"\01LC" = internal constant [4 x i8] c"%f\0A\00" ; <ptr> [#uses=1]10 11define void @foo1() nounwind {12entry:13 %y = alloca float ; <ptr> [#uses=2]14 %x = alloca float ; <ptr> [#uses=2]15 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]16 store float 0x7FF0000000000000, ptr %x, align 417 store float 0x7FF8000000000000, ptr %y, align 418 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]19 %1 = fpext float %0 to double ; <double> [#uses=1]20 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]21 %3 = fpext float %2 to double ; <double> [#uses=1]22 %4 = frem double %3, %1 ; <double> [#uses=1]23 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]24 br label %return25 26return: ; preds = %entry27 ret void28}29 30declare i32 @printf(ptr, ...) nounwind31 32define void @foo2() nounwind {33entry:34 %y = alloca float ; <ptr> [#uses=2]35 %x = alloca float ; <ptr> [#uses=2]36 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]37 store float 0x7FF0000000000000, ptr %x, align 438 store float 0.000000e+00, ptr %y, align 439 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]40 %1 = fpext float %0 to double ; <double> [#uses=1]41 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]42 %3 = fpext float %2 to double ; <double> [#uses=1]43 %4 = frem double %3, %1 ; <double> [#uses=1]44 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]45 br label %return46 47return: ; preds = %entry48 ret void49}50 51define void @foo3() nounwind {52entry:53 %y = alloca float ; <ptr> [#uses=2]54 %x = alloca float ; <ptr> [#uses=2]55 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]56 store float 0x7FF0000000000000, ptr %x, align 457 store float 3.500000e+00, ptr %y, align 458 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]59 %1 = fpext float %0 to double ; <double> [#uses=1]60 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]61 %3 = fpext float %2 to double ; <double> [#uses=1]62 %4 = frem double %3, %1 ; <double> [#uses=1]63 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]64 br label %return65 66return: ; preds = %entry67 ret void68}69 70define void @foo4() nounwind {71entry:72 %y = alloca float ; <ptr> [#uses=2]73 %x = alloca float ; <ptr> [#uses=2]74 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]75 store float 0x7FF0000000000000, ptr %x, align 476 store float 0x7FF0000000000000, ptr %y, align 477 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]78 %1 = fpext float %0 to double ; <double> [#uses=1]79 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]80 %3 = fpext float %2 to double ; <double> [#uses=1]81 %4 = frem double %3, %1 ; <double> [#uses=1]82 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]83 br label %return84 85return: ; preds = %entry86 ret void87}88 89define void @foo5() nounwind {90entry:91 %y = alloca float ; <ptr> [#uses=2]92 %x = alloca float ; <ptr> [#uses=2]93 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]94 store float 0x7FF8000000000000, ptr %x, align 495 store float 0x7FF0000000000000, ptr %y, align 496 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]97 %1 = fpext float %0 to double ; <double> [#uses=1]98 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]99 %3 = fpext float %2 to double ; <double> [#uses=1]100 %4 = frem double %3, %1 ; <double> [#uses=1]101 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]102 br label %return103 104return: ; preds = %entry105 ret void106}107 108define void @foo6() nounwind {109entry:110 %y = alloca float ; <ptr> [#uses=2]111 %x = alloca float ; <ptr> [#uses=2]112 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]113 store float 0x7FF8000000000000, ptr %x, align 4114 store float 0.000000e+00, ptr %y, align 4115 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]116 %1 = fpext float %0 to double ; <double> [#uses=1]117 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]118 %3 = fpext float %2 to double ; <double> [#uses=1]119 %4 = frem double %3, %1 ; <double> [#uses=1]120 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]121 br label %return122 123return: ; preds = %entry124 ret void125}126 127define void @foo7() nounwind {128entry:129 %y = alloca float ; <ptr> [#uses=2]130 %x = alloca float ; <ptr> [#uses=2]131 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]132 store float 0x7FF8000000000000, ptr %x, align 4133 store float 3.500000e+00, ptr %y, align 4134 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]135 %1 = fpext float %0 to double ; <double> [#uses=1]136 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]137 %3 = fpext float %2 to double ; <double> [#uses=1]138 %4 = frem double %3, %1 ; <double> [#uses=1]139 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]140 br label %return141 142return: ; preds = %entry143 ret void144}145 146define void @foo8() nounwind {147entry:148 %y = alloca float ; <ptr> [#uses=2]149 %x = alloca float ; <ptr> [#uses=2]150 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]151 store float 0x7FF8000000000000, ptr %x, align 4152 store float 0x7FF8000000000000, ptr %y, align 4153 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]154 %1 = fpext float %0 to double ; <double> [#uses=1]155 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]156 %3 = fpext float %2 to double ; <double> [#uses=1]157 %4 = frem double %3, %1 ; <double> [#uses=1]158 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]159 br label %return160 161return: ; preds = %entry162 ret void163}164 165define void @foo9() nounwind {166entry:167 %y = alloca float ; <ptr> [#uses=2]168 %x = alloca float ; <ptr> [#uses=2]169 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]170 store float 0.000000e+00, ptr %x, align 4171 store float 0x7FF8000000000000, ptr %y, align 4172 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]173 %1 = fpext float %0 to double ; <double> [#uses=1]174 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]175 %3 = fpext float %2 to double ; <double> [#uses=1]176 %4 = frem double %3, %1 ; <double> [#uses=1]177 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]178 br label %return179 180return: ; preds = %entry181 ret void182}183 184define void @foo10() nounwind {185entry:186 %y = alloca float ; <ptr> [#uses=2]187 %x = alloca float ; <ptr> [#uses=2]188 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]189 store float 0.000000e+00, ptr %x, align 4190 store float 0x7FF0000000000000, ptr %y, align 4191 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]192 %1 = fpext float %0 to double ; <double> [#uses=1]193 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]194 %3 = fpext float %2 to double ; <double> [#uses=1]195 %4 = frem double %3, %1 ; <double> [#uses=1]196 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]197 br label %return198 199return: ; preds = %entry200 ret void201}202 203define void @foo11() nounwind {204entry:205 %y = alloca float ; <ptr> [#uses=2]206 %x = alloca float ; <ptr> [#uses=2]207 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]208 store float 0.000000e+00, ptr %x, align 4209 store float 0.000000e+00, ptr %y, align 4210 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]211 %1 = fpext float %0 to double ; <double> [#uses=1]212 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]213 %3 = fpext float %2 to double ; <double> [#uses=1]214 %4 = frem double %3, %1 ; <double> [#uses=1]215 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]216 br label %return217 218return: ; preds = %entry219 ret void220}221 222define void @foo12() nounwind {223entry:224 %y = alloca float ; <ptr> [#uses=2]225 %x = alloca float ; <ptr> [#uses=2]226 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]227 store float 0.000000e+00, ptr %x, align 4228 store float 3.500000e+00, ptr %y, align 4229 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]230 %1 = fpext float %0 to double ; <double> [#uses=1]231 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]232 %3 = fpext float %2 to double ; <double> [#uses=1]233 %4 = frem double %3, %1 ; <double> [#uses=1]234 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]235 br label %return236 237return: ; preds = %entry238 ret void239}240 241define void @foo13() nounwind {242entry:243 %y = alloca float ; <ptr> [#uses=2]244 %x = alloca float ; <ptr> [#uses=2]245 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]246 store float 3.500000e+00, ptr %x, align 4247 store float 0x7FF8000000000000, ptr %y, align 4248 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]249 %1 = fpext float %0 to double ; <double> [#uses=1]250 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]251 %3 = fpext float %2 to double ; <double> [#uses=1]252 %4 = frem double %3, %1 ; <double> [#uses=1]253 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]254 br label %return255 256return: ; preds = %entry257 ret void258}259 260define void @foo14() nounwind {261entry:262 %y = alloca float ; <ptr> [#uses=2]263 %x = alloca float ; <ptr> [#uses=2]264 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]265 store float 3.500000e+00, ptr %x, align 4266 store float 0x7FF0000000000000, ptr %y, align 4267 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]268 %1 = fpext float %0 to double ; <double> [#uses=1]269 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]270 %3 = fpext float %2 to double ; <double> [#uses=1]271 %4 = frem double %3, %1 ; <double> [#uses=1]272 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]273 br label %return274 275return: ; preds = %entry276 ret void277}278 279define void @foo15() nounwind {280entry:281 %y = alloca float ; <ptr> [#uses=2]282 %x = alloca float ; <ptr> [#uses=2]283 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]284 store float 3.500000e+00, ptr %x, align 4285 store float 0.000000e+00, ptr %y, align 4286 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]287 %1 = fpext float %0 to double ; <double> [#uses=1]288 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]289 %3 = fpext float %2 to double ; <double> [#uses=1]290 %4 = frem double %3, %1 ; <double> [#uses=1]291 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]292 br label %return293 294return: ; preds = %entry295 ret void296}297 298define void @foo16() nounwind {299entry:300 %y = alloca float ; <ptr> [#uses=2]301 %x = alloca float ; <ptr> [#uses=2]302 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]303 store float 3.500000e+00, ptr %x, align 4304 store float 3.500000e+00, ptr %y, align 4305 %0 = load float, ptr %y, align 4 ; <float> [#uses=1]306 %1 = fpext float %0 to double ; <double> [#uses=1]307 %2 = load float, ptr %x, align 4 ; <float> [#uses=1]308 %3 = fpext float %2 to double ; <double> [#uses=1]309 %4 = frem double %3, %1 ; <double> [#uses=1]310 %5 = call i32 (ptr, ...) @printf(ptr @"\01LC", double %4) nounwind ; <i32> [#uses=0]311 br label %return312 313return: ; preds = %entry314 ret void315}316