1; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-unknown < %s | FileCheck %s 2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s 3 4define signext i32 @testi32slt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 5; CHECK-LABEL: testi32slt 6; CHECK: crorc [[REG:[0-9]+]], 2, 6 7; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 8entry: 9 %cmp1 = icmp eq i32 %c3, %c4 10 %cmp3tmp = icmp eq i32 %c1, %c2 11 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1 12 br i1 %cmp3, label %iftrue, label %iffalse 13iftrue: 14 ret i32 %a1 15iffalse: 16 ret i32 %a2 17} 18 19define signext i32 @testi32ult(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 20; CHECK-LABEL: testi32ult 21; CHECK: crorc [[REG:[0-9]+]], 6, 2 22; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 23entry: 24 %cmp1 = icmp eq i32 %c3, %c4 25 %cmp3tmp = icmp eq i32 %c1, %c2 26 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1 27 br i1 %cmp3, label %iftrue, label %iffalse 28iftrue: 29 ret i32 %a1 30iffalse: 31 ret i32 %a2 32} 33 34define signext i32 @testi32sle(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 35; CHECK-LABEL: testi32sle 36; CHECK: crandc [[REG:[0-9]+]], 2, 6 37; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 38entry: 39 %cmp1 = icmp eq i32 %c3, %c4 40 %cmp3tmp = icmp eq i32 %c1, %c2 41 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1 42 br i1 %cmp3, label %iftrue, label %iffalse 43iftrue: 44 ret i32 %a1 45iffalse: 46 ret i32 %a2 47} 48 49define signext i32 @testi32ule(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 50; CHECK-LABEL: testi32ule 51; CHECK: crandc [[REG:[0-9]+]], 6, 2 52; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 53entry: 54 %cmp1 = icmp eq i32 %c3, %c4 55 %cmp3tmp = icmp eq i32 %c1, %c2 56 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1 57 br i1 %cmp3, label %iftrue, label %iffalse 58iftrue: 59 ret i32 %a1 60iffalse: 61 ret i32 %a2 62} 63 64define signext i32 @testi32eq(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 65; CHECK-LABEL: testi32eq: 66; CHECK: crxor [[REG:[0-9]+]], 6, 2 67; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 68entry: 69 %cmp1 = icmp eq i32 %c3, %c4 70 %cmp3tmp = icmp eq i32 %c1, %c2 71 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1 72 br i1 %cmp3, label %iftrue, label %iffalse 73iftrue: 74 ret i32 %a1 75iffalse: 76 ret i32 %a2 77} 78 79define signext i32 @testi32sge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 80; CHECK-LABEL: testi32sge: 81; CHECK: crandc [[REG:[0-9]+]], 6, 2 82; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 83entry: 84 %cmp1 = icmp eq i32 %c3, %c4 85 %cmp3tmp = icmp eq i32 %c1, %c2 86 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1 87 br i1 %cmp3, label %iftrue, label %iffalse 88iftrue: 89 ret i32 %a1 90iffalse: 91 ret i32 %a2 92} 93 94define signext i32 @testi32uge(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 95; CHECK-LABEL: testi32uge: 96; CHECK: crandc [[REG:[0-9]+]], 2, 6 97; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 98entry: 99 %cmp1 = icmp eq i32 %c3, %c4 100 %cmp3tmp = icmp eq i32 %c1, %c2 101 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1 102 br i1 %cmp3, label %iftrue, label %iffalse 103iftrue: 104 ret i32 %a1 105iffalse: 106 ret i32 %a2 107} 108 109define signext i32 @testi32sgt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 110; CHECK-LABEL: testi32sgt: 111; CHECK: crorc [[REG:[0-9]+]], 6, 2 112; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 113entry: 114 %cmp1 = icmp eq i32 %c3, %c4 115 %cmp3tmp = icmp eq i32 %c1, %c2 116 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1 117 br i1 %cmp3, label %iftrue, label %iffalse 118iftrue: 119 ret i32 %a1 120iffalse: 121 ret i32 %a2 122} 123 124define signext i32 @testi32ugt(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 125; CHECK-LABEL: testi32ugt: 126; CHECK: crorc [[REG:[0-9]+]], 2, 6 127; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 128entry: 129 %cmp1 = icmp eq i32 %c3, %c4 130 %cmp3tmp = icmp eq i32 %c1, %c2 131 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1 132 br i1 %cmp3, label %iftrue, label %iffalse 133iftrue: 134 ret i32 %a1 135iffalse: 136 ret i32 %a2 137} 138 139define signext i32 @testi32ne(i32 signext %c1, i32 signext %c2, i32 signext %c3, i32 signext %c4, i32 signext %a1, i32 signext %a2) #0 { 140; CHECK-LABEL: testi32ne: 141; CHECK: creqv [[REG:[0-9]+]], 6, 2 142; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 143entry: 144 %cmp1 = icmp eq i32 %c3, %c4 145 %cmp3tmp = icmp eq i32 %c1, %c2 146 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1 147 br i1 %cmp3, label %iftrue, label %iffalse 148iftrue: 149 ret i32 %a1 150iffalse: 151 ret i32 %a2 152} 153 154define i64 @testi64slt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 155; CHECK-LABEL: testi64slt 156; CHECK: crorc [[REG:[0-9]+]], 2, 6 157; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 158entry: 159 %cmp1 = icmp eq i64 %c3, %c4 160 %cmp3tmp = icmp eq i64 %c1, %c2 161 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1 162 br i1 %cmp3, label %iftrue, label %iffalse 163iftrue: 164 ret i64 %a1 165iffalse: 166 ret i64 %a2 167} 168 169define i64 @testi64ult(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 170; CHECK-LABEL: testi64ult 171; CHECK: crorc [[REG:[0-9]+]], 6, 2 172; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 173entry: 174 %cmp1 = icmp eq i64 %c3, %c4 175 %cmp3tmp = icmp eq i64 %c1, %c2 176 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1 177 br i1 %cmp3, label %iftrue, label %iffalse 178iftrue: 179 ret i64 %a1 180iffalse: 181 ret i64 %a2 182} 183 184define i64 @testi64sle(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 185; CHECK-LABEL: testi64sle 186; CHECK: crandc [[REG:[0-9]+]], 2, 6 187; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 188entry: 189 %cmp1 = icmp eq i64 %c3, %c4 190 %cmp3tmp = icmp eq i64 %c1, %c2 191 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1 192 br i1 %cmp3, label %iftrue, label %iffalse 193iftrue: 194 ret i64 %a1 195iffalse: 196 ret i64 %a2 197} 198 199define i64 @testi64ule(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 200; CHECK-LABEL: testi64ule 201; CHECK: crandc [[REG:[0-9]+]], 6, 2 202; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 203entry: 204 %cmp1 = icmp eq i64 %c3, %c4 205 %cmp3tmp = icmp eq i64 %c1, %c2 206 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1 207 br i1 %cmp3, label %iftrue, label %iffalse 208iftrue: 209 ret i64 %a1 210iffalse: 211 ret i64 %a2 212} 213 214define i64 @testi64eq(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 215; CHECK-LABEL: testi64eq 216; CHECK: crxor [[REG:[0-9]+]], 6, 2 217; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 218entry: 219 %cmp1 = icmp eq i64 %c3, %c4 220 %cmp3tmp = icmp eq i64 %c1, %c2 221 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1 222 br i1 %cmp3, label %iftrue, label %iffalse 223iftrue: 224 ret i64 %a1 225iffalse: 226 ret i64 %a2 227} 228 229define i64 @testi64sge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 230; CHECK-LABEL: testi64sge 231; CHECK: crandc [[REG:[0-9]+]], 6, 2 232; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 233entry: 234 %cmp1 = icmp eq i64 %c3, %c4 235 %cmp3tmp = icmp eq i64 %c1, %c2 236 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1 237 br i1 %cmp3, label %iftrue, label %iffalse 238iftrue: 239 ret i64 %a1 240iffalse: 241 ret i64 %a2 242} 243 244define i64 @testi64uge(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 245; CHECK-LABEL: testi64uge 246; CHECK: crandc [[REG:[0-9]+]], 2, 6 247; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 248entry: 249 %cmp1 = icmp eq i64 %c3, %c4 250 %cmp3tmp = icmp eq i64 %c1, %c2 251 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1 252 br i1 %cmp3, label %iftrue, label %iffalse 253iftrue: 254 ret i64 %a1 255iffalse: 256 ret i64 %a2 257} 258 259define i64 @testi64sgt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 260; CHECK-LABEL: testi64sgt 261; CHECK: crorc [[REG:[0-9]+]], 6, 2 262; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 263entry: 264 %cmp1 = icmp eq i64 %c3, %c4 265 %cmp3tmp = icmp eq i64 %c1, %c2 266 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1 267 br i1 %cmp3, label %iftrue, label %iffalse 268iftrue: 269 ret i64 %a1 270iffalse: 271 ret i64 %a2 272} 273 274define i64 @testi64ugt(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 275; CHECK-LABEL: testi64ugt 276; CHECK: crorc [[REG:[0-9]+]], 2, 6 277; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 278entry: 279 %cmp1 = icmp eq i64 %c3, %c4 280 %cmp3tmp = icmp eq i64 %c1, %c2 281 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1 282 br i1 %cmp3, label %iftrue, label %iffalse 283iftrue: 284 ret i64 %a1 285iffalse: 286 ret i64 %a2 287} 288 289define i64 @testi64ne(i64 %c1, i64 %c2, i64 %c3, i64 %c4, i64 %a1, i64 %a2) #0 { 290; CHECK-LABEL: testi64ne 291; CHECK: creqv [[REG:[0-9]+]], 6, 2 292; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 293entry: 294 %cmp1 = icmp eq i64 %c3, %c4 295 %cmp3tmp = icmp eq i64 %c1, %c2 296 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1 297 br i1 %cmp3, label %iftrue, label %iffalse 298iftrue: 299 ret i64 %a1 300iffalse: 301 ret i64 %a2 302} 303 304define float @testfloatslt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 305; CHECK-LABEL: testfloatslt 306; CHECK: crorc [[REG:[0-9]+]], 2, 6 307; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 308entry: 309 %cmp1 = fcmp oeq float %c3, %c4 310 %cmp3tmp = fcmp oeq float %c1, %c2 311 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1 312 br i1 %cmp3, label %iftrue, label %iffalse 313iftrue: 314 ret float %a1 315iffalse: 316 ret float %a2 317} 318 319define float @testfloatult(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 320; CHECK-LABEL: testfloatult 321; CHECK: crorc [[REG:[0-9]+]], 6, 2 322; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 323entry: 324 %cmp1 = fcmp oeq float %c3, %c4 325 %cmp3tmp = fcmp oeq float %c1, %c2 326 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1 327 br i1 %cmp3, label %iftrue, label %iffalse 328iftrue: 329 ret float %a1 330iffalse: 331 ret float %a2 332} 333 334define float @testfloatsle(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 335; CHECK-LABEL: testfloatsle 336; CHECK: crandc [[REG:[0-9]+]], 2, 6 337; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 338entry: 339 %cmp1 = fcmp oeq float %c3, %c4 340 %cmp3tmp = fcmp oeq float %c1, %c2 341 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1 342 br i1 %cmp3, label %iftrue, label %iffalse 343iftrue: 344 ret float %a1 345iffalse: 346 ret float %a2 347} 348 349define float @testfloatule(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 350; CHECK-LABEL: testfloatule 351; CHECK: crandc [[REG:[0-9]+]], 6, 2 352; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 353entry: 354 %cmp1 = fcmp oeq float %c3, %c4 355 %cmp3tmp = fcmp oeq float %c1, %c2 356 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1 357 br i1 %cmp3, label %iftrue, label %iffalse 358iftrue: 359 ret float %a1 360iffalse: 361 ret float %a2 362} 363 364define float @testfloateq(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 365; CHECK-LABEL: testfloateq 366; CHECK: crxor [[REG:[0-9]+]], 6, 2 367; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 368entry: 369 %cmp1 = fcmp oeq float %c3, %c4 370 %cmp3tmp = fcmp oeq float %c1, %c2 371 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1 372 br i1 %cmp3, label %iftrue, label %iffalse 373iftrue: 374 ret float %a1 375iffalse: 376 ret float %a2 377} 378 379define float @testfloatsge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 380; CHECK-LABEL: testfloatsge 381; CHECK: crandc [[REG:[0-9]+]], 6, 2 382; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 383entry: 384 %cmp1 = fcmp oeq float %c3, %c4 385 %cmp3tmp = fcmp oeq float %c1, %c2 386 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1 387 br i1 %cmp3, label %iftrue, label %iffalse 388iftrue: 389 ret float %a1 390iffalse: 391 ret float %a2 392} 393 394define float @testfloatuge(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 395; CHECK-LABEL: testfloatuge 396; CHECK: crandc [[REG:[0-9]+]], 2, 6 397; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 398entry: 399 %cmp1 = fcmp oeq float %c3, %c4 400 %cmp3tmp = fcmp oeq float %c1, %c2 401 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1 402 br i1 %cmp3, label %iftrue, label %iffalse 403iftrue: 404 ret float %a1 405iffalse: 406 ret float %a2 407} 408 409define float @testfloatsgt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 410; CHECK-LABEL: testfloatsgt 411; CHECK: crorc [[REG:[0-9]+]], 6, 2 412; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 413entry: 414 %cmp1 = fcmp oeq float %c3, %c4 415 %cmp3tmp = fcmp oeq float %c1, %c2 416 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1 417 br i1 %cmp3, label %iftrue, label %iffalse 418iftrue: 419 ret float %a1 420iffalse: 421 ret float %a2 422} 423 424define float @testfloatugt(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 425; CHECK-LABEL: testfloatugt 426; CHECK: crorc [[REG:[0-9]+]], 2, 6 427; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 428entry: 429 %cmp1 = fcmp oeq float %c3, %c4 430 %cmp3tmp = fcmp oeq float %c1, %c2 431 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1 432 br i1 %cmp3, label %iftrue, label %iffalse 433iftrue: 434 ret float %a1 435iffalse: 436 ret float %a2 437} 438 439define float @testfloatne(float %c1, float %c2, float %c3, float %c4, float %a1, float %a2) #0 { 440; CHECK-LABEL: testfloatne 441; CHECK: creqv [[REG:[0-9]+]], 6, 2 442; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 443entry: 444 %cmp1 = fcmp oeq float %c3, %c4 445 %cmp3tmp = fcmp oeq float %c1, %c2 446 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1 447 br i1 %cmp3, label %iftrue, label %iffalse 448iftrue: 449 ret float %a1 450iffalse: 451 ret float %a2 452} 453 454define double @testdoubleslt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 455; CHECK-LABEL: testdoubleslt 456; CHECK: crorc [[REG:[0-9]+]], 2, 6 457; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 458entry: 459 %cmp1 = fcmp oeq double %c3, %c4 460 %cmp3tmp = fcmp oeq double %c1, %c2 461 %cmp3 = icmp slt i1 %cmp3tmp, %cmp1 462 br i1 %cmp3, label %iftrue, label %iffalse 463iftrue: 464 ret double %a1 465iffalse: 466 ret double %a2 467} 468 469define double @testdoubleult(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 470; CHECK-LABEL: testdoubleult: 471; CHECK: crorc [[REG:[0-9]+]], 6, 2 472; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 473entry: 474 %cmp1 = fcmp oeq double %c3, %c4 475 %cmp3tmp = fcmp oeq double %c1, %c2 476 %cmp3 = icmp ult i1 %cmp3tmp, %cmp1 477 br i1 %cmp3, label %iftrue, label %iffalse 478iftrue: 479 ret double %a1 480iffalse: 481 ret double %a2 482} 483 484define double @testdoublesle(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 485; CHECK-LABEL: testdoublesle 486; CHECK: crandc [[REG:[0-9]+]], 2, 6 487; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 488entry: 489 %cmp1 = fcmp oeq double %c3, %c4 490 %cmp3tmp = fcmp oeq double %c1, %c2 491 %cmp3 = icmp sle i1 %cmp3tmp, %cmp1 492 br i1 %cmp3, label %iftrue, label %iffalse 493iftrue: 494 ret double %a1 495iffalse: 496 ret double %a2 497} 498 499define double @testdoubleule(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 500; CHECK-LABEL: testdoubleule: 501; CHECK: crandc [[REG:[0-9]+]], 6, 2 502; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 503entry: 504 %cmp1 = fcmp oeq double %c3, %c4 505 %cmp3tmp = fcmp oeq double %c1, %c2 506 %cmp3 = icmp ule i1 %cmp3tmp, %cmp1 507 br i1 %cmp3, label %iftrue, label %iffalse 508iftrue: 509 ret double %a1 510iffalse: 511 ret double %a2 512} 513 514define double @testdoubleeq(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 515; CHECK-LABEL: testdoubleeq 516; CHECK: crxor [[REG:[0-9]+]], 6, 2 517; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 518entry: 519 %cmp1 = fcmp oeq double %c3, %c4 520 %cmp3tmp = fcmp oeq double %c1, %c2 521 %cmp3 = icmp eq i1 %cmp3tmp, %cmp1 522 br i1 %cmp3, label %iftrue, label %iffalse 523iftrue: 524 ret double %a1 525iffalse: 526 ret double %a2 527} 528 529define double @testdoublesge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 530; CHECK-LABEL: testdoublesge 531; CHECK: crandc [[REG:[0-9]+]], 6, 2 532; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 533entry: 534 %cmp1 = fcmp oeq double %c3, %c4 535 %cmp3tmp = fcmp oeq double %c1, %c2 536 %cmp3 = icmp sge i1 %cmp3tmp, %cmp1 537 br i1 %cmp3, label %iftrue, label %iffalse 538iftrue: 539 ret double %a1 540iffalse: 541 ret double %a2 542} 543 544define double @testdoubleuge(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 545; CHECK-LABEL: testdoubleuge 546; CHECK: crandc [[REG:[0-9]+]], 2, 6 547; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 548entry: 549 %cmp1 = fcmp oeq double %c3, %c4 550 %cmp3tmp = fcmp oeq double %c1, %c2 551 %cmp3 = icmp uge i1 %cmp3tmp, %cmp1 552 br i1 %cmp3, label %iftrue, label %iffalse 553iftrue: 554 ret double %a1 555iffalse: 556 ret double %a2 557} 558 559define double @testdoublesgt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 560; CHECK-LABEL: testdoublesgt: 561; CHECK: crorc [[REG:[0-9]+]], 6, 2 562; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 563entry: 564 %cmp1 = fcmp oeq double %c3, %c4 565 %cmp3tmp = fcmp oeq double %c1, %c2 566 %cmp3 = icmp sgt i1 %cmp3tmp, %cmp1 567 br i1 %cmp3, label %iftrue, label %iffalse 568iftrue: 569 ret double %a1 570iffalse: 571 ret double %a2 572} 573 574define double @testdoubleugt(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 575; CHECK-LABEL: testdoubleugt 576; CHECK: crorc [[REG:[0-9]+]], 2, 6 577; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 578entry: 579 %cmp1 = fcmp oeq double %c3, %c4 580 %cmp3tmp = fcmp oeq double %c1, %c2 581 %cmp3 = icmp ugt i1 %cmp3tmp, %cmp1 582 br i1 %cmp3, label %iftrue, label %iffalse 583iftrue: 584 ret double %a1 585iffalse: 586 ret double %a2 587} 588 589define double @testdoublene(double %c1, double %c2, double %c3, double %c4, double %a1, double %a2) #0 { 590; CHECK-LABEL: testdoublene 591; CHECK: creqv [[REG:[0-9]+]], 6, 2 592; CHECK: bc 12, [[REG]], {{\.[a-zA-Z0-9_]+}} 593entry: 594 %cmp1 = fcmp oeq double %c3, %c4 595 %cmp3tmp = fcmp oeq double %c1, %c2 596 %cmp3 = icmp ne i1 %cmp3tmp, %cmp1 597 br i1 %cmp3, label %iftrue, label %iffalse 598iftrue: 599 ret double %a1 600iffalse: 601 ret double %a2 602} 603