605 lines · plain
1; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-unknown \2; RUN: -ppc-reduce-cr-logicals=false < %s | FileCheck %s3; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \4; RUN: -ppc-reduce-cr-logicals=false < %s | FileCheck %s5 6define signext i32 @testi32slt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {7; CHECK-LABEL: testi32slt8; CHECK: crorc [[REG:[0-9]+]], 2, 69; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}10entry:11 %cmp1 = icmp eq i32 %c3, %c412 %cmp3tmp = icmp eq i32 %c1, %c213 %cmp3 = icmp slt i1 %cmp3tmp, %cmp114 br i1 %cmp3, label %iftrue, label %iffalse15iftrue:16 ret i32 %a117iffalse:18 ret i32 %a219}20 21define signext i32 @testi32ult(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {22; CHECK-LABEL: testi32ult23; CHECK: crorc [[REG:[0-9]+]], 6, 224; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}25entry:26 %cmp1 = icmp eq i32 %c3, %c427 %cmp3tmp = icmp eq i32 %c1, %c228 %cmp3 = icmp ult i1 %cmp3tmp, %cmp129 br i1 %cmp3, label %iftrue, label %iffalse30iftrue:31 ret i32 %a132iffalse:33 ret i32 %a234}35 36define signext i32 @testi32sle(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {37; CHECK-LABEL: testi32sle38; CHECK: crandc [[REG:[0-9]+]], 2, 639; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}40entry:41 %cmp1 = icmp eq i32 %c3, %c442 %cmp3tmp = icmp eq i32 %c1, %c243 %cmp3 = icmp sle i1 %cmp3tmp, %cmp144 br i1 %cmp3, label %iftrue, label %iffalse45iftrue:46 ret i32 %a147iffalse:48 ret i32 %a249}50 51define signext i32 @testi32ule(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {52; CHECK-LABEL: testi32ule53; CHECK: crandc [[REG:[0-9]+]], 6, 254; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}55entry:56 %cmp1 = icmp eq i32 %c3, %c457 %cmp3tmp = icmp eq i32 %c1, %c258 %cmp3 = icmp ule i1 %cmp3tmp, %cmp159 br i1 %cmp3, label %iftrue, label %iffalse60iftrue:61 ret i32 %a162iffalse:63 ret i32 %a264}65 66define signext i32 @testi32eq(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {67; CHECK-LABEL: testi32eq:68; CHECK: crxor [[REG:[0-9]+]], 6, 269; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}70entry:71 %cmp1 = icmp eq i32 %c3, %c472 %cmp3tmp = icmp eq i32 %c1, %c273 %cmp3 = icmp eq i1 %cmp3tmp, %cmp174 br i1 %cmp3, label %iftrue, label %iffalse75iftrue:76 ret i32 %a177iffalse:78 ret i32 %a279}80 81define signext i32 @testi32sge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {82; CHECK-LABEL: testi32sge:83; CHECK: crandc [[REG:[0-9]+]], 6, 284; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}85entry:86 %cmp1 = icmp eq i32 %c3, %c487 %cmp3tmp = icmp eq i32 %c1, %c288 %cmp3 = icmp sge i1 %cmp3tmp, %cmp189 br i1 %cmp3, label %iftrue, label %iffalse90iftrue:91 ret i32 %a192iffalse:93 ret i32 %a294}95 96define signext i32 @testi32uge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {97; CHECK-LABEL: testi32uge:98; CHECK: crandc [[REG:[0-9]+]], 2, 699; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}100entry:101 %cmp1 = icmp eq i32 %c3, %c4102 %cmp3tmp = icmp eq i32 %c1, %c2103 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1104 br i1 %cmp3, label %iftrue, label %iffalse105iftrue:106 ret i32 %a1107iffalse:108 ret i32 %a2109}110 111define signext i32 @testi32sgt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {112; CHECK-LABEL: testi32sgt:113; CHECK: crorc [[REG:[0-9]+]], 6, 2114; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}115entry:116 %cmp1 = icmp eq i32 %c3, %c4117 %cmp3tmp = icmp eq i32 %c1, %c2118 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1119 br i1 %cmp3, label %iftrue, label %iffalse120iftrue:121 ret i32 %a1122iffalse:123 ret i32 %a2124}125 126define signext i32 @testi32ugt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {127; CHECK-LABEL: testi32ugt:128; CHECK: crorc [[REG:[0-9]+]], 2, 6129; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}130entry:131 %cmp1 = icmp eq i32 %c3, %c4132 %cmp3tmp = icmp eq i32 %c1, %c2133 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1134 br i1 %cmp3, label %iftrue, label %iffalse135iftrue:136 ret i32 %a1137iffalse:138 ret i32 %a2139}140 141define signext i32 @testi32ne(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 {142; CHECK-LABEL: testi32ne:143; CHECK: creqv [[REG:[0-9]+]], 6, 2144; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}145entry:146 %cmp1 = icmp eq i32 %c3, %c4147 %cmp3tmp = icmp eq i32 %c1, %c2148 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1149 br i1 %cmp3, label %iftrue, label %iffalse150iftrue:151 ret i32 %a1152iffalse:153 ret i32 %a2154}155 156define i64 @testi64slt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {157; CHECK-LABEL: testi64slt158; CHECK: crorc [[REG:[0-9]+]], 2, 6159; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}160entry:161 %cmp1 = icmp eq i64 %c3, %c4162 %cmp3tmp = icmp eq i64 %c1, %c2163 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1164 br i1 %cmp3, label %iftrue, label %iffalse165iftrue:166 ret i64 %a1167iffalse:168 ret i64 %a2169}170 171define i64 @testi64ult(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {172; CHECK-LABEL: testi64ult173; CHECK: crorc [[REG:[0-9]+]], 6, 2174; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}175entry:176 %cmp1 = icmp eq i64 %c3, %c4177 %cmp3tmp = icmp eq i64 %c1, %c2178 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1179 br i1 %cmp3, label %iftrue, label %iffalse180iftrue:181 ret i64 %a1182iffalse:183 ret i64 %a2184}185 186define i64 @testi64sle(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {187; CHECK-LABEL: testi64sle188; CHECK: crandc [[REG:[0-9]+]], 2, 6189; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}190entry:191 %cmp1 = icmp eq i64 %c3, %c4192 %cmp3tmp = icmp eq i64 %c1, %c2193 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1194 br i1 %cmp3, label %iftrue, label %iffalse195iftrue:196 ret i64 %a1197iffalse:198 ret i64 %a2199}200 201define i64 @testi64ule(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {202; CHECK-LABEL: testi64ule203; CHECK: crandc [[REG:[0-9]+]], 6, 2204; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}205entry:206 %cmp1 = icmp eq i64 %c3, %c4207 %cmp3tmp = icmp eq i64 %c1, %c2208 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1209 br i1 %cmp3, label %iftrue, label %iffalse210iftrue:211 ret i64 %a1212iffalse:213 ret i64 %a2214}215 216define i64 @testi64eq(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {217; CHECK-LABEL: testi64eq218; CHECK: crxor [[REG:[0-9]+]], 6, 2219; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}220entry:221 %cmp1 = icmp eq i64 %c3, %c4222 %cmp3tmp = icmp eq i64 %c1, %c2223 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1224 br i1 %cmp3, label %iftrue, label %iffalse225iftrue:226 ret i64 %a1227iffalse:228 ret i64 %a2229}230 231define i64 @testi64sge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {232; CHECK-LABEL: testi64sge233; CHECK: crandc [[REG:[0-9]+]], 6, 2234; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}235entry:236 %cmp1 = icmp eq i64 %c3, %c4237 %cmp3tmp = icmp eq i64 %c1, %c2238 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1239 br i1 %cmp3, label %iftrue, label %iffalse240iftrue:241 ret i64 %a1242iffalse:243 ret i64 %a2244}245 246define i64 @testi64uge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {247; CHECK-LABEL: testi64uge248; CHECK: crandc [[REG:[0-9]+]], 2, 6249; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}250entry:251 %cmp1 = icmp eq i64 %c3, %c4252 %cmp3tmp = icmp eq i64 %c1, %c2253 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1254 br i1 %cmp3, label %iftrue, label %iffalse255iftrue:256 ret i64 %a1257iffalse:258 ret i64 %a2259}260 261define i64 @testi64sgt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {262; CHECK-LABEL: testi64sgt263; CHECK: crorc [[REG:[0-9]+]], 6, 2264; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}265entry:266 %cmp1 = icmp eq i64 %c3, %c4267 %cmp3tmp = icmp eq i64 %c1, %c2268 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1269 br i1 %cmp3, label %iftrue, label %iffalse270iftrue:271 ret i64 %a1272iffalse:273 ret i64 %a2274}275 276define i64 @testi64ugt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {277; CHECK-LABEL: testi64ugt278; CHECK: crorc [[REG:[0-9]+]], 2, 6279; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}280entry:281 %cmp1 = icmp eq i64 %c3, %c4282 %cmp3tmp = icmp eq i64 %c1, %c2283 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1284 br i1 %cmp3, label %iftrue, label %iffalse285iftrue:286 ret i64 %a1287iffalse:288 ret i64 %a2289}290 291define i64 @testi64ne(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 {292; CHECK-LABEL: testi64ne293; CHECK: creqv [[REG:[0-9]+]], 6, 2294; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}295entry:296 %cmp1 = icmp eq i64 %c3, %c4297 %cmp3tmp = icmp eq i64 %c1, %c2298 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1299 br i1 %cmp3, label %iftrue, label %iffalse300iftrue:301 ret i64 %a1302iffalse:303 ret i64 %a2304}305 306define float @testfloatslt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {307; CHECK-LABEL: testfloatslt308; CHECK: crorc [[REG:[0-9]+]], 2, 6309; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}310entry:311 %cmp1 = fcmp oeq float %c3, %c4312 %cmp3tmp = fcmp oeq float %c1, %c2313 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1314 br i1 %cmp3, label %iftrue, label %iffalse315iftrue:316 ret float %a1317iffalse:318 ret float %a2319}320 321define float @testfloatult(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {322; CHECK-LABEL: testfloatult323; CHECK: crorc [[REG:[0-9]+]], 6, 2324; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}325entry:326 %cmp1 = fcmp oeq float %c3, %c4327 %cmp3tmp = fcmp oeq float %c1, %c2328 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1329 br i1 %cmp3, label %iftrue, label %iffalse330iftrue:331 ret float %a1332iffalse:333 ret float %a2334}335 336define float @testfloatsle(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {337; CHECK-LABEL: testfloatsle338; CHECK: crandc [[REG:[0-9]+]], 2, 6339; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}340entry:341 %cmp1 = fcmp oeq float %c3, %c4342 %cmp3tmp = fcmp oeq float %c1, %c2343 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1344 br i1 %cmp3, label %iftrue, label %iffalse345iftrue:346 ret float %a1347iffalse:348 ret float %a2349}350 351define float @testfloatule(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {352; CHECK-LABEL: testfloatule353; CHECK: crandc [[REG:[0-9]+]], 6, 2354; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}355entry:356 %cmp1 = fcmp oeq float %c3, %c4357 %cmp3tmp = fcmp oeq float %c1, %c2358 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1359 br i1 %cmp3, label %iftrue, label %iffalse360iftrue:361 ret float %a1362iffalse:363 ret float %a2364}365 366define float @testfloateq(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {367; CHECK-LABEL: testfloateq368; CHECK: crxor [[REG:[0-9]+]], 6, 2369; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}370entry:371 %cmp1 = fcmp oeq float %c3, %c4372 %cmp3tmp = fcmp oeq float %c1, %c2373 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1374 br i1 %cmp3, label %iftrue, label %iffalse375iftrue:376 ret float %a1377iffalse:378 ret float %a2379}380 381define float @testfloatsge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {382; CHECK-LABEL: testfloatsge383; CHECK: crandc [[REG:[0-9]+]], 6, 2384; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}385entry:386 %cmp1 = fcmp oeq float %c3, %c4387 %cmp3tmp = fcmp oeq float %c1, %c2388 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1389 br i1 %cmp3, label %iftrue, label %iffalse390iftrue:391 ret float %a1392iffalse:393 ret float %a2394}395 396define float @testfloatuge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {397; CHECK-LABEL: testfloatuge398; CHECK: crandc [[REG:[0-9]+]], 2, 6399; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}400entry:401 %cmp1 = fcmp oeq float %c3, %c4402 %cmp3tmp = fcmp oeq float %c1, %c2403 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1404 br i1 %cmp3, label %iftrue, label %iffalse405iftrue:406 ret float %a1407iffalse:408 ret float %a2409}410 411define float @testfloatsgt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {412; CHECK-LABEL: testfloatsgt413; CHECK: crorc [[REG:[0-9]+]], 6, 2414; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}415entry:416 %cmp1 = fcmp oeq float %c3, %c4417 %cmp3tmp = fcmp oeq float %c1, %c2418 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1419 br i1 %cmp3, label %iftrue, label %iffalse420iftrue:421 ret float %a1422iffalse:423 ret float %a2424}425 426define float @testfloatugt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {427; CHECK-LABEL: testfloatugt428; CHECK: crorc [[REG:[0-9]+]], 2, 6429; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}430entry:431 %cmp1 = fcmp oeq float %c3, %c4432 %cmp3tmp = fcmp oeq float %c1, %c2433 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1434 br i1 %cmp3, label %iftrue, label %iffalse435iftrue:436 ret float %a1437iffalse:438 ret float %a2439}440 441define float @testfloatne(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 {442; CHECK-LABEL: testfloatne443; CHECK: creqv [[REG:[0-9]+]], 6, 2444; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}445entry:446 %cmp1 = fcmp oeq float %c3, %c4447 %cmp3tmp = fcmp oeq float %c1, %c2448 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1449 br i1 %cmp3, label %iftrue, label %iffalse450iftrue:451 ret float %a1452iffalse:453 ret float %a2454}455 456define double @testdoubleslt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {457; CHECK-LABEL: testdoubleslt458; CHECK: crorc [[REG:[0-9]+]], 2, 6459; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}460entry:461 %cmp1 = fcmp oeq double %c3, %c4462 %cmp3tmp = fcmp oeq double %c1, %c2463 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1464 br i1 %cmp3, label %iftrue, label %iffalse465iftrue:466 ret double %a1467iffalse:468 ret double %a2469}470 471define double @testdoubleult(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {472; CHECK-LABEL: testdoubleult:473; CHECK: crorc [[REG:[0-9]+]], 6, 2474; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}475entry:476 %cmp1 = fcmp oeq double %c3, %c4477 %cmp3tmp = fcmp oeq double %c1, %c2478 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1479 br i1 %cmp3, label %iftrue, label %iffalse480iftrue:481 ret double %a1482iffalse:483 ret double %a2484}485 486define double @testdoublesle(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {487; CHECK-LABEL: testdoublesle488; CHECK: crandc [[REG:[0-9]+]], 2, 6489; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}490entry:491 %cmp1 = fcmp oeq double %c3, %c4492 %cmp3tmp = fcmp oeq double %c1, %c2493 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1494 br i1 %cmp3, label %iftrue, label %iffalse495iftrue:496 ret double %a1497iffalse:498 ret double %a2499}500 501define double @testdoubleule(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {502; CHECK-LABEL: testdoubleule:503; CHECK: crandc [[REG:[0-9]+]], 6, 2504; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}505entry:506 %cmp1 = fcmp oeq double %c3, %c4507 %cmp3tmp = fcmp oeq double %c1, %c2508 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1509 br i1 %cmp3, label %iftrue, label %iffalse510iftrue:511 ret double %a1512iffalse:513 ret double %a2514}515 516define double @testdoubleeq(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {517; CHECK-LABEL: testdoubleeq518; CHECK: crxor [[REG:[0-9]+]], 6, 2519; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}520entry:521 %cmp1 = fcmp oeq double %c3, %c4522 %cmp3tmp = fcmp oeq double %c1, %c2523 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1524 br i1 %cmp3, label %iftrue, label %iffalse525iftrue:526 ret double %a1527iffalse:528 ret double %a2529}530 531define double @testdoublesge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {532; CHECK-LABEL: testdoublesge533; CHECK: crandc [[REG:[0-9]+]], 6, 2534; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}535entry:536 %cmp1 = fcmp oeq double %c3, %c4537 %cmp3tmp = fcmp oeq double %c1, %c2538 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1539 br i1 %cmp3, label %iftrue, label %iffalse540iftrue:541 ret double %a1542iffalse:543 ret double %a2544}545 546define double @testdoubleuge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {547; CHECK-LABEL: testdoubleuge548; CHECK: crandc [[REG:[0-9]+]], 2, 6549; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}550entry:551 %cmp1 = fcmp oeq double %c3, %c4552 %cmp3tmp = fcmp oeq double %c1, %c2553 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1554 br i1 %cmp3, label %iftrue, label %iffalse555iftrue:556 ret double %a1557iffalse:558 ret double %a2559}560 561define double @testdoublesgt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {562; CHECK-LABEL: testdoublesgt:563; CHECK: crorc [[REG:[0-9]+]], 6, 2564; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}565entry:566 %cmp1 = fcmp oeq double %c3, %c4567 %cmp3tmp = fcmp oeq double %c1, %c2568 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1569 br i1 %cmp3, label %iftrue, label %iffalse570iftrue:571 ret double %a1572iffalse:573 ret double %a2574}575 576define double @testdoubleugt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {577; CHECK-LABEL: testdoubleugt578; CHECK: crorc [[REG:[0-9]+]], 2, 6579; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}580entry:581 %cmp1 = fcmp oeq double %c3, %c4582 %cmp3tmp = fcmp oeq double %c1, %c2583 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1584 br i1 %cmp3, label %iftrue, label %iffalse585iftrue:586 ret double %a1587iffalse:588 ret double %a2589}590 591define double @testdoublene(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 {592; CHECK-LABEL: testdoublene593; CHECK: creqv [[REG:[0-9]+]], 6, 2594; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}}595entry:596 %cmp1 = fcmp oeq double %c3, %c4597 %cmp3tmp = fcmp oeq double %c1, %c2598 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1599 br i1 %cmp3, label %iftrue, label %iffalse600iftrue:601 ret double %a1602iffalse:603 ret double %a2604}605