1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=instsimplify -S | FileCheck %s 3 4; Cycle through all pairs of predicates to test 5; simplification of range-intersection or range-union. 6 7; eq 8; x == 13 && x == 17 9 10define i1 @and_eq_eq(i8 %x) { 11; CHECK-LABEL: @and_eq_eq( 12; CHECK-NEXT: ret i1 false 13; 14 %a = icmp eq i8 %x, 13 15 %b = icmp eq i8 %x, 17 16 %c = and i1 %a, %b 17 ret i1 %c 18} 19 20; x == 13 && x != 17 21 22define i1 @and_eq_ne(i8 %x) { 23; CHECK-LABEL: @and_eq_ne( 24; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 25; CHECK-NEXT: ret i1 [[A]] 26; 27 %a = icmp eq i8 %x, 13 28 %b = icmp ne i8 %x, 17 29 %c = and i1 %a, %b 30 ret i1 %c 31} 32 33; x == 13 && x >=s 17 34 35define i1 @and_eq_sge(i8 %x) { 36; CHECK-LABEL: @and_eq_sge( 37; CHECK-NEXT: ret i1 false 38; 39 %a = icmp eq i8 %x, 13 40 %b = icmp sge i8 %x, 17 41 %c = and i1 %a, %b 42 ret i1 %c 43} 44 45; x == 13 && x >s 17 46 47define i1 @and_eq_sgt(i8 %x) { 48; CHECK-LABEL: @and_eq_sgt( 49; CHECK-NEXT: ret i1 false 50; 51 %a = icmp eq i8 %x, 13 52 %b = icmp sgt i8 %x, 17 53 %c = and i1 %a, %b 54 ret i1 %c 55} 56 57; x == 13 && x <=s 17 58 59define i1 @and_eq_sle(i8 %x) { 60; CHECK-LABEL: @and_eq_sle( 61; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 62; CHECK-NEXT: ret i1 [[A]] 63; 64 %a = icmp eq i8 %x, 13 65 %b = icmp sle i8 %x, 17 66 %c = and i1 %a, %b 67 ret i1 %c 68} 69 70; x == 13 && x <s 17 71 72define i1 @and_eq_slt(i8 %x) { 73; CHECK-LABEL: @and_eq_slt( 74; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 75; CHECK-NEXT: ret i1 [[A]] 76; 77 %a = icmp eq i8 %x, 13 78 %b = icmp slt i8 %x, 17 79 %c = and i1 %a, %b 80 ret i1 %c 81} 82 83; x == 13 && x >=u 17 84 85define i1 @and_eq_uge(i8 %x) { 86; CHECK-LABEL: @and_eq_uge( 87; CHECK-NEXT: ret i1 false 88; 89 %a = icmp eq i8 %x, 13 90 %b = icmp uge i8 %x, 17 91 %c = and i1 %a, %b 92 ret i1 %c 93} 94 95; x == 13 && x >u 17 96 97define i1 @and_eq_ugt(i8 %x) { 98; CHECK-LABEL: @and_eq_ugt( 99; CHECK-NEXT: ret i1 false 100; 101 %a = icmp eq i8 %x, 13 102 %b = icmp ugt i8 %x, 17 103 %c = and i1 %a, %b 104 ret i1 %c 105} 106 107; x == 13 && x <=u 17 108 109define i1 @and_eq_ule(i8 %x) { 110; CHECK-LABEL: @and_eq_ule( 111; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 112; CHECK-NEXT: ret i1 [[A]] 113; 114 %a = icmp eq i8 %x, 13 115 %b = icmp ule i8 %x, 17 116 %c = and i1 %a, %b 117 ret i1 %c 118} 119 120; x == 13 && x <u 17 121 122define i1 @and_eq_ult(i8 %x) { 123; CHECK-LABEL: @and_eq_ult( 124; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 125; CHECK-NEXT: ret i1 [[A]] 126; 127 %a = icmp eq i8 %x, 13 128 %b = icmp ult i8 %x, 17 129 %c = and i1 %a, %b 130 ret i1 %c 131} 132 133; ne 134; x != 13 && x == 17 135 136define i1 @and_ne_eq(i8 %x) { 137; CHECK-LABEL: @and_ne_eq( 138; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 139; CHECK-NEXT: ret i1 [[B]] 140; 141 %a = icmp ne i8 %x, 13 142 %b = icmp eq i8 %x, 17 143 %c = and i1 %a, %b 144 ret i1 %c 145} 146 147; x != 13 && x != 17 148 149define i1 @and_ne_ne(i8 %x) { 150; CHECK-LABEL: @and_ne_ne( 151; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 152; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 153; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 154; CHECK-NEXT: ret i1 [[C]] 155; 156 %a = icmp ne i8 %x, 13 157 %b = icmp ne i8 %x, 17 158 %c = and i1 %a, %b 159 ret i1 %c 160} 161 162; x != 13 && x >=s 17 163 164define i1 @and_ne_sge(i8 %x) { 165; CHECK-LABEL: @and_ne_sge( 166; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 167; CHECK-NEXT: ret i1 [[B]] 168; 169 %a = icmp ne i8 %x, 13 170 %b = icmp sge i8 %x, 17 171 %c = and i1 %a, %b 172 ret i1 %c 173} 174 175; x != 13 && x >s 17 176 177define i1 @and_ne_sgt(i8 %x) { 178; CHECK-LABEL: @and_ne_sgt( 179; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 180; CHECK-NEXT: ret i1 [[B]] 181; 182 %a = icmp ne i8 %x, 13 183 %b = icmp sgt i8 %x, 17 184 %c = and i1 %a, %b 185 ret i1 %c 186} 187 188; x != 13 && x <=s 17 189 190define i1 @and_ne_sle(i8 %x) { 191; CHECK-LABEL: @and_ne_sle( 192; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 193; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 194; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 195; CHECK-NEXT: ret i1 [[C]] 196; 197 %a = icmp ne i8 %x, 13 198 %b = icmp sle i8 %x, 17 199 %c = and i1 %a, %b 200 ret i1 %c 201} 202 203; x != 13 && x <s 17 204 205define i1 @and_ne_slt(i8 %x) { 206; CHECK-LABEL: @and_ne_slt( 207; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 208; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 209; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 210; CHECK-NEXT: ret i1 [[C]] 211; 212 %a = icmp ne i8 %x, 13 213 %b = icmp slt i8 %x, 17 214 %c = and i1 %a, %b 215 ret i1 %c 216} 217 218; x != 13 && x >=u 17 219 220define i1 @and_ne_uge(i8 %x) { 221; CHECK-LABEL: @and_ne_uge( 222; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 223; CHECK-NEXT: ret i1 [[B]] 224; 225 %a = icmp ne i8 %x, 13 226 %b = icmp uge i8 %x, 17 227 %c = and i1 %a, %b 228 ret i1 %c 229} 230 231; x != 13 && x >u 17 232 233define i1 @and_ne_ugt(i8 %x) { 234; CHECK-LABEL: @and_ne_ugt( 235; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 236; CHECK-NEXT: ret i1 [[B]] 237; 238 %a = icmp ne i8 %x, 13 239 %b = icmp ugt i8 %x, 17 240 %c = and i1 %a, %b 241 ret i1 %c 242} 243 244; x != 13 && x <=u 17 245 246define i1 @and_ne_ule(i8 %x) { 247; CHECK-LABEL: @and_ne_ule( 248; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 249; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 250; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 251; CHECK-NEXT: ret i1 [[C]] 252; 253 %a = icmp ne i8 %x, 13 254 %b = icmp ule i8 %x, 17 255 %c = and i1 %a, %b 256 ret i1 %c 257} 258 259; x != 13 && x <u 17 260 261define i1 @and_ne_ult(i8 %x) { 262; CHECK-LABEL: @and_ne_ult( 263; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 264; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 265; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 266; CHECK-NEXT: ret i1 [[C]] 267; 268 %a = icmp ne i8 %x, 13 269 %b = icmp ult i8 %x, 17 270 %c = and i1 %a, %b 271 ret i1 %c 272} 273 274; sge 275; x >=s 13 && x == 17 276 277define i1 @and_sge_eq(i8 %x) { 278; CHECK-LABEL: @and_sge_eq( 279; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 280; CHECK-NEXT: ret i1 [[B]] 281; 282 %a = icmp sge i8 %x, 13 283 %b = icmp eq i8 %x, 17 284 %c = and i1 %a, %b 285 ret i1 %c 286} 287 288; x >=s 13 && x != 17 289 290define i1 @and_sge_ne(i8 %x) { 291; CHECK-LABEL: @and_sge_ne( 292; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 293; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 294; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 295; CHECK-NEXT: ret i1 [[C]] 296; 297 %a = icmp sge i8 %x, 13 298 %b = icmp ne i8 %x, 17 299 %c = and i1 %a, %b 300 ret i1 %c 301} 302 303; x >=s 13 && x >=s 17 304 305define i1 @and_sge_sge(i8 %x) { 306; CHECK-LABEL: @and_sge_sge( 307; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 308; CHECK-NEXT: ret i1 [[B]] 309; 310 %a = icmp sge i8 %x, 13 311 %b = icmp sge i8 %x, 17 312 %c = and i1 %a, %b 313 ret i1 %c 314} 315 316; x >=s 13 && x >s 17 317 318define i1 @and_sge_sgt(i8 %x) { 319; CHECK-LABEL: @and_sge_sgt( 320; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 321; CHECK-NEXT: ret i1 [[B]] 322; 323 %a = icmp sge i8 %x, 13 324 %b = icmp sgt i8 %x, 17 325 %c = and i1 %a, %b 326 ret i1 %c 327} 328 329; x >=s 13 && x <=s 17 330 331define i1 @and_sge_sle(i8 %x) { 332; CHECK-LABEL: @and_sge_sle( 333; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 334; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 335; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 336; CHECK-NEXT: ret i1 [[C]] 337; 338 %a = icmp sge i8 %x, 13 339 %b = icmp sle i8 %x, 17 340 %c = and i1 %a, %b 341 ret i1 %c 342} 343 344; x >=s 13 && x <s 17 345 346define i1 @and_sge_slt(i8 %x) { 347; CHECK-LABEL: @and_sge_slt( 348; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 349; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 350; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 351; CHECK-NEXT: ret i1 [[C]] 352; 353 %a = icmp sge i8 %x, 13 354 %b = icmp slt i8 %x, 17 355 %c = and i1 %a, %b 356 ret i1 %c 357} 358 359; x >=s 13 && x >=u 17 360 361define i1 @and_sge_uge(i8 %x) { 362; CHECK-LABEL: @and_sge_uge( 363; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 364; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 365; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 366; CHECK-NEXT: ret i1 [[C]] 367; 368 %a = icmp sge i8 %x, 13 369 %b = icmp uge i8 %x, 17 370 %c = and i1 %a, %b 371 ret i1 %c 372} 373 374; x >=s 13 && x >u 17 375 376define i1 @and_sge_ugt(i8 %x) { 377; CHECK-LABEL: @and_sge_ugt( 378; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 379; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 380; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 381; CHECK-NEXT: ret i1 [[C]] 382; 383 %a = icmp sge i8 %x, 13 384 %b = icmp ugt i8 %x, 17 385 %c = and i1 %a, %b 386 ret i1 %c 387} 388 389; x >=s 13 && x <=u 17 390 391define i1 @and_sge_ule(i8 %x) { 392; CHECK-LABEL: @and_sge_ule( 393; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 394; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 395; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 396; CHECK-NEXT: ret i1 [[C]] 397; 398 %a = icmp sge i8 %x, 13 399 %b = icmp ule i8 %x, 17 400 %c = and i1 %a, %b 401 ret i1 %c 402} 403 404; x >=s 13 && x <u 17 405 406define i1 @and_sge_ult(i8 %x) { 407; CHECK-LABEL: @and_sge_ult( 408; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 409; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 410; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 411; CHECK-NEXT: ret i1 [[C]] 412; 413 %a = icmp sge i8 %x, 13 414 %b = icmp ult i8 %x, 17 415 %c = and i1 %a, %b 416 ret i1 %c 417} 418 419; sgt 420; x >s 13 && x == 17 421 422define i1 @and_sgt_eq(i8 %x) { 423; CHECK-LABEL: @and_sgt_eq( 424; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 425; CHECK-NEXT: ret i1 [[B]] 426; 427 %a = icmp sgt i8 %x, 13 428 %b = icmp eq i8 %x, 17 429 %c = and i1 %a, %b 430 ret i1 %c 431} 432 433; x >s 13 && x != 17 434 435define i1 @and_sgt_ne(i8 %x) { 436; CHECK-LABEL: @and_sgt_ne( 437; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 438; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 439; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 440; CHECK-NEXT: ret i1 [[C]] 441; 442 %a = icmp sgt i8 %x, 13 443 %b = icmp ne i8 %x, 17 444 %c = and i1 %a, %b 445 ret i1 %c 446} 447 448; x >s 13 && x >=s 17 449 450define i1 @and_sgt_sge(i8 %x) { 451; CHECK-LABEL: @and_sgt_sge( 452; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 453; CHECK-NEXT: ret i1 [[B]] 454; 455 %a = icmp sgt i8 %x, 13 456 %b = icmp sge i8 %x, 17 457 %c = and i1 %a, %b 458 ret i1 %c 459} 460 461; x >s 13 && x >s 17 462 463define i1 @and_sgt_sgt(i8 %x) { 464; CHECK-LABEL: @and_sgt_sgt( 465; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 466; CHECK-NEXT: ret i1 [[B]] 467; 468 %a = icmp sgt i8 %x, 13 469 %b = icmp sgt i8 %x, 17 470 %c = and i1 %a, %b 471 ret i1 %c 472} 473 474; x >s 13 && x <=s 17 475 476define i1 @and_sgt_sle(i8 %x) { 477; CHECK-LABEL: @and_sgt_sle( 478; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 479; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 480; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 481; CHECK-NEXT: ret i1 [[C]] 482; 483 %a = icmp sgt i8 %x, 13 484 %b = icmp sle i8 %x, 17 485 %c = and i1 %a, %b 486 ret i1 %c 487} 488 489; x >s 13 && x <s 17 490 491define i1 @and_sgt_slt(i8 %x) { 492; CHECK-LABEL: @and_sgt_slt( 493; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 494; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 495; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 496; CHECK-NEXT: ret i1 [[C]] 497; 498 %a = icmp sgt i8 %x, 13 499 %b = icmp slt i8 %x, 17 500 %c = and i1 %a, %b 501 ret i1 %c 502} 503 504; x >s 13 && x >=u 17 505 506define i1 @and_sgt_uge(i8 %x) { 507; CHECK-LABEL: @and_sgt_uge( 508; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 509; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 510; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 511; CHECK-NEXT: ret i1 [[C]] 512; 513 %a = icmp sgt i8 %x, 13 514 %b = icmp uge i8 %x, 17 515 %c = and i1 %a, %b 516 ret i1 %c 517} 518 519; x >s 13 && x >u 17 520 521define i1 @and_sgt_ugt(i8 %x) { 522; CHECK-LABEL: @and_sgt_ugt( 523; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 524; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 525; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 526; CHECK-NEXT: ret i1 [[C]] 527; 528 %a = icmp sgt i8 %x, 13 529 %b = icmp ugt i8 %x, 17 530 %c = and i1 %a, %b 531 ret i1 %c 532} 533 534; x >s 13 && x <=u 17 535 536define i1 @and_sgt_ule(i8 %x) { 537; CHECK-LABEL: @and_sgt_ule( 538; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 539; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 540; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 541; CHECK-NEXT: ret i1 [[C]] 542; 543 %a = icmp sgt i8 %x, 13 544 %b = icmp ule i8 %x, 17 545 %c = and i1 %a, %b 546 ret i1 %c 547} 548 549; x >s 13 && x <u 17 550 551define i1 @and_sgt_ult(i8 %x) { 552; CHECK-LABEL: @and_sgt_ult( 553; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 554; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 555; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 556; CHECK-NEXT: ret i1 [[C]] 557; 558 %a = icmp sgt i8 %x, 13 559 %b = icmp ult i8 %x, 17 560 %c = and i1 %a, %b 561 ret i1 %c 562} 563 564; sle 565; x <=s 13 && x == 17 566 567define i1 @and_sle_eq(i8 %x) { 568; CHECK-LABEL: @and_sle_eq( 569; CHECK-NEXT: ret i1 false 570; 571 %a = icmp sle i8 %x, 13 572 %b = icmp eq i8 %x, 17 573 %c = and i1 %a, %b 574 ret i1 %c 575} 576 577; x <=s 13 && x != 17 578 579define i1 @and_sle_ne(i8 %x) { 580; CHECK-LABEL: @and_sle_ne( 581; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 582; CHECK-NEXT: ret i1 [[A]] 583; 584 %a = icmp sle i8 %x, 13 585 %b = icmp ne i8 %x, 17 586 %c = and i1 %a, %b 587 ret i1 %c 588} 589 590; x <=s 13 && x >=s 17 591 592define i1 @and_sle_sge(i8 %x) { 593; CHECK-LABEL: @and_sle_sge( 594; CHECK-NEXT: ret i1 false 595; 596 %a = icmp sle i8 %x, 13 597 %b = icmp sge i8 %x, 17 598 %c = and i1 %a, %b 599 ret i1 %c 600} 601 602; x <=s 13 && x >s 17 603 604define i1 @and_sle_sgt(i8 %x) { 605; CHECK-LABEL: @and_sle_sgt( 606; CHECK-NEXT: ret i1 false 607; 608 %a = icmp sle i8 %x, 13 609 %b = icmp sgt i8 %x, 17 610 %c = and i1 %a, %b 611 ret i1 %c 612} 613 614; x <=s 13 && x <=s 17 615 616define i1 @and_sle_sle(i8 %x) { 617; CHECK-LABEL: @and_sle_sle( 618; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 619; CHECK-NEXT: ret i1 [[A]] 620; 621 %a = icmp sle i8 %x, 13 622 %b = icmp sle i8 %x, 17 623 %c = and i1 %a, %b 624 ret i1 %c 625} 626 627; x <=s 13 && x <s 17 628 629define i1 @and_sle_slt(i8 %x) { 630; CHECK-LABEL: @and_sle_slt( 631; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 632; CHECK-NEXT: ret i1 [[A]] 633; 634 %a = icmp sle i8 %x, 13 635 %b = icmp slt i8 %x, 17 636 %c = and i1 %a, %b 637 ret i1 %c 638} 639 640; x <=s 13 && x >=u 17 641 642define i1 @and_sle_uge(i8 %x) { 643; CHECK-LABEL: @and_sle_uge( 644; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 645; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 646; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 647; CHECK-NEXT: ret i1 [[C]] 648; 649 %a = icmp sle i8 %x, 13 650 %b = icmp uge i8 %x, 17 651 %c = and i1 %a, %b 652 ret i1 %c 653} 654 655; x <=s 13 && x >u 17 656 657define i1 @and_sle_ugt(i8 %x) { 658; CHECK-LABEL: @and_sle_ugt( 659; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 660; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 661; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 662; CHECK-NEXT: ret i1 [[C]] 663; 664 %a = icmp sle i8 %x, 13 665 %b = icmp ugt i8 %x, 17 666 %c = and i1 %a, %b 667 ret i1 %c 668} 669 670; x <=s 13 && x <=u 17 671 672define i1 @and_sle_ule(i8 %x) { 673; CHECK-LABEL: @and_sle_ule( 674; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 675; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 676; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 677; CHECK-NEXT: ret i1 [[C]] 678; 679 %a = icmp sle i8 %x, 13 680 %b = icmp ule i8 %x, 17 681 %c = and i1 %a, %b 682 ret i1 %c 683} 684 685; x <=s 13 && x <u 17 686 687define i1 @and_sle_ult(i8 %x) { 688; CHECK-LABEL: @and_sle_ult( 689; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 690; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 691; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 692; CHECK-NEXT: ret i1 [[C]] 693; 694 %a = icmp sle i8 %x, 13 695 %b = icmp ult i8 %x, 17 696 %c = and i1 %a, %b 697 ret i1 %c 698} 699 700; slt 701; x <s 13 && x == 17 702 703define i1 @and_slt_eq(i8 %x) { 704; CHECK-LABEL: @and_slt_eq( 705; CHECK-NEXT: ret i1 false 706; 707 %a = icmp slt i8 %x, 13 708 %b = icmp eq i8 %x, 17 709 %c = and i1 %a, %b 710 ret i1 %c 711} 712 713; x <s 13 && x != 17 714 715define i1 @and_slt_ne(i8 %x) { 716; CHECK-LABEL: @and_slt_ne( 717; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 718; CHECK-NEXT: ret i1 [[A]] 719; 720 %a = icmp slt i8 %x, 13 721 %b = icmp ne i8 %x, 17 722 %c = and i1 %a, %b 723 ret i1 %c 724} 725 726; x <s 13 && x >=s 17 727 728define i1 @and_slt_sge(i8 %x) { 729; CHECK-LABEL: @and_slt_sge( 730; CHECK-NEXT: ret i1 false 731; 732 %a = icmp slt i8 %x, 13 733 %b = icmp sge i8 %x, 17 734 %c = and i1 %a, %b 735 ret i1 %c 736} 737 738; x <s 13 && x >s 17 739 740define i1 @and_slt_sgt(i8 %x) { 741; CHECK-LABEL: @and_slt_sgt( 742; CHECK-NEXT: ret i1 false 743; 744 %a = icmp slt i8 %x, 13 745 %b = icmp sgt i8 %x, 17 746 %c = and i1 %a, %b 747 ret i1 %c 748} 749 750; x <s 13 && x <=s 17 751 752define i1 @and_slt_sle(i8 %x) { 753; CHECK-LABEL: @and_slt_sle( 754; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 755; CHECK-NEXT: ret i1 [[A]] 756; 757 %a = icmp slt i8 %x, 13 758 %b = icmp sle i8 %x, 17 759 %c = and i1 %a, %b 760 ret i1 %c 761} 762 763; x <s 13 && x <s 17 764 765define i1 @and_slt_slt(i8 %x) { 766; CHECK-LABEL: @and_slt_slt( 767; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 768; CHECK-NEXT: ret i1 [[A]] 769; 770 %a = icmp slt i8 %x, 13 771 %b = icmp slt i8 %x, 17 772 %c = and i1 %a, %b 773 ret i1 %c 774} 775 776; x <s 13 && x >=u 17 777 778define i1 @and_slt_uge(i8 %x) { 779; CHECK-LABEL: @and_slt_uge( 780; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 781; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 782; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 783; CHECK-NEXT: ret i1 [[C]] 784; 785 %a = icmp slt i8 %x, 13 786 %b = icmp uge i8 %x, 17 787 %c = and i1 %a, %b 788 ret i1 %c 789} 790 791; x <s 13 && x >u 17 792 793define i1 @and_slt_ugt(i8 %x) { 794; CHECK-LABEL: @and_slt_ugt( 795; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 796; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 797; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 798; CHECK-NEXT: ret i1 [[C]] 799; 800 %a = icmp slt i8 %x, 13 801 %b = icmp ugt i8 %x, 17 802 %c = and i1 %a, %b 803 ret i1 %c 804} 805 806; x <s 13 && x <=u 17 807 808define i1 @and_slt_ule(i8 %x) { 809; CHECK-LABEL: @and_slt_ule( 810; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 811; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 812; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 813; CHECK-NEXT: ret i1 [[C]] 814; 815 %a = icmp slt i8 %x, 13 816 %b = icmp ule i8 %x, 17 817 %c = and i1 %a, %b 818 ret i1 %c 819} 820 821; x <s 13 && x <u 17 822 823define i1 @and_slt_ult(i8 %x) { 824; CHECK-LABEL: @and_slt_ult( 825; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 826; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 827; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 828; CHECK-NEXT: ret i1 [[C]] 829; 830 %a = icmp slt i8 %x, 13 831 %b = icmp ult i8 %x, 17 832 %c = and i1 %a, %b 833 ret i1 %c 834} 835 836; uge 837; x >=u 13 && x == 17 838 839define i1 @and_uge_eq(i8 %x) { 840; CHECK-LABEL: @and_uge_eq( 841; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 842; CHECK-NEXT: ret i1 [[B]] 843; 844 %a = icmp uge i8 %x, 13 845 %b = icmp eq i8 %x, 17 846 %c = and i1 %a, %b 847 ret i1 %c 848} 849 850; x >=u 13 && x != 17 851 852define i1 @and_uge_ne(i8 %x) { 853; CHECK-LABEL: @and_uge_ne( 854; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 855; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 856; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 857; CHECK-NEXT: ret i1 [[C]] 858; 859 %a = icmp uge i8 %x, 13 860 %b = icmp ne i8 %x, 17 861 %c = and i1 %a, %b 862 ret i1 %c 863} 864 865; x >=u 13 && x >=s 17 866 867define i1 @and_uge_sge(i8 %x) { 868; CHECK-LABEL: @and_uge_sge( 869; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 870; CHECK-NEXT: ret i1 [[B]] 871; 872 %a = icmp uge i8 %x, 13 873 %b = icmp sge i8 %x, 17 874 %c = and i1 %a, %b 875 ret i1 %c 876} 877 878; x >=u 13 && x >s 17 879 880define i1 @and_uge_sgt(i8 %x) { 881; CHECK-LABEL: @and_uge_sgt( 882; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 883; CHECK-NEXT: ret i1 [[B]] 884; 885 %a = icmp uge i8 %x, 13 886 %b = icmp sgt i8 %x, 17 887 %c = and i1 %a, %b 888 ret i1 %c 889} 890 891; x >=u 13 && x <=s 17 892 893define i1 @and_uge_sle(i8 %x) { 894; CHECK-LABEL: @and_uge_sle( 895; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 896; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 897; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 898; CHECK-NEXT: ret i1 [[C]] 899; 900 %a = icmp uge i8 %x, 13 901 %b = icmp sle i8 %x, 17 902 %c = and i1 %a, %b 903 ret i1 %c 904} 905 906; x >=u 13 && x <s 17 907 908define i1 @and_uge_slt(i8 %x) { 909; CHECK-LABEL: @and_uge_slt( 910; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 911; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 912; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 913; CHECK-NEXT: ret i1 [[C]] 914; 915 %a = icmp uge i8 %x, 13 916 %b = icmp slt i8 %x, 17 917 %c = and i1 %a, %b 918 ret i1 %c 919} 920 921; x >=u 13 && x >=u 17 922 923define i1 @and_uge_uge(i8 %x) { 924; CHECK-LABEL: @and_uge_uge( 925; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 926; CHECK-NEXT: ret i1 [[B]] 927; 928 %a = icmp uge i8 %x, 13 929 %b = icmp uge i8 %x, 17 930 %c = and i1 %a, %b 931 ret i1 %c 932} 933 934; x >=u 13 && x >u 17 935 936define i1 @and_uge_ugt(i8 %x) { 937; CHECK-LABEL: @and_uge_ugt( 938; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 939; CHECK-NEXT: ret i1 [[B]] 940; 941 %a = icmp uge i8 %x, 13 942 %b = icmp ugt i8 %x, 17 943 %c = and i1 %a, %b 944 ret i1 %c 945} 946 947; x >=u 13 && x <=u 17 948 949define i1 @and_uge_ule(i8 %x) { 950; CHECK-LABEL: @and_uge_ule( 951; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 952; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 953; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 954; CHECK-NEXT: ret i1 [[C]] 955; 956 %a = icmp uge i8 %x, 13 957 %b = icmp ule i8 %x, 17 958 %c = and i1 %a, %b 959 ret i1 %c 960} 961 962; x >=u 13 && x <u 17 963 964define i1 @and_uge_ult(i8 %x) { 965; CHECK-LABEL: @and_uge_ult( 966; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 967; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 968; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 969; CHECK-NEXT: ret i1 [[C]] 970; 971 %a = icmp uge i8 %x, 13 972 %b = icmp ult i8 %x, 17 973 %c = and i1 %a, %b 974 ret i1 %c 975} 976 977; ugt 978; x >u 13 && x == 17 979 980define i1 @and_ugt_eq(i8 %x) { 981; CHECK-LABEL: @and_ugt_eq( 982; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 983; CHECK-NEXT: ret i1 [[B]] 984; 985 %a = icmp ugt i8 %x, 13 986 %b = icmp eq i8 %x, 17 987 %c = and i1 %a, %b 988 ret i1 %c 989} 990 991; x >u 13 && x != 17 992 993define i1 @and_ugt_ne(i8 %x) { 994; CHECK-LABEL: @and_ugt_ne( 995; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 996; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 997; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 998; CHECK-NEXT: ret i1 [[C]] 999; 1000 %a = icmp ugt i8 %x, 13 1001 %b = icmp ne i8 %x, 17 1002 %c = and i1 %a, %b 1003 ret i1 %c 1004} 1005 1006; x >u 13 && x >=s 17 1007 1008define i1 @and_ugt_sge(i8 %x) { 1009; CHECK-LABEL: @and_ugt_sge( 1010; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 1011; CHECK-NEXT: ret i1 [[B]] 1012; 1013 %a = icmp ugt i8 %x, 13 1014 %b = icmp sge i8 %x, 17 1015 %c = and i1 %a, %b 1016 ret i1 %c 1017} 1018 1019; x >u 13 && x >s 17 1020 1021define i1 @and_ugt_sgt(i8 %x) { 1022; CHECK-LABEL: @and_ugt_sgt( 1023; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 1024; CHECK-NEXT: ret i1 [[B]] 1025; 1026 %a = icmp ugt i8 %x, 13 1027 %b = icmp sgt i8 %x, 17 1028 %c = and i1 %a, %b 1029 ret i1 %c 1030} 1031 1032; x >u 13 && x <=s 17 1033 1034define i1 @and_ugt_sle(i8 %x) { 1035; CHECK-LABEL: @and_ugt_sle( 1036; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 1037; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 1038; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1039; CHECK-NEXT: ret i1 [[C]] 1040; 1041 %a = icmp ugt i8 %x, 13 1042 %b = icmp sle i8 %x, 17 1043 %c = and i1 %a, %b 1044 ret i1 %c 1045} 1046 1047; x >u 13 && x <s 17 1048 1049define i1 @and_ugt_slt(i8 %x) { 1050; CHECK-LABEL: @and_ugt_slt( 1051; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 1052; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 1053; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1054; CHECK-NEXT: ret i1 [[C]] 1055; 1056 %a = icmp ugt i8 %x, 13 1057 %b = icmp slt i8 %x, 17 1058 %c = and i1 %a, %b 1059 ret i1 %c 1060} 1061 1062; x >u 13 && x >=u 17 1063 1064define i1 @and_ugt_uge(i8 %x) { 1065; CHECK-LABEL: @and_ugt_uge( 1066; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 1067; CHECK-NEXT: ret i1 [[B]] 1068; 1069 %a = icmp ugt i8 %x, 13 1070 %b = icmp uge i8 %x, 17 1071 %c = and i1 %a, %b 1072 ret i1 %c 1073} 1074 1075; x >u 13 && x >u 17 1076 1077define i1 @and_ugt_ugt(i8 %x) { 1078; CHECK-LABEL: @and_ugt_ugt( 1079; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 1080; CHECK-NEXT: ret i1 [[B]] 1081; 1082 %a = icmp ugt i8 %x, 13 1083 %b = icmp ugt i8 %x, 17 1084 %c = and i1 %a, %b 1085 ret i1 %c 1086} 1087 1088; x >u 13 && x <=u 17 1089 1090define i1 @and_ugt_ule(i8 %x) { 1091; CHECK-LABEL: @and_ugt_ule( 1092; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 1093; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 1094; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1095; CHECK-NEXT: ret i1 [[C]] 1096; 1097 %a = icmp ugt i8 %x, 13 1098 %b = icmp ule i8 %x, 17 1099 %c = and i1 %a, %b 1100 ret i1 %c 1101} 1102 1103; x >u 13 && x <u 17 1104 1105define i1 @and_ugt_ult(i8 %x) { 1106; CHECK-LABEL: @and_ugt_ult( 1107; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 1108; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 1109; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1110; CHECK-NEXT: ret i1 [[C]] 1111; 1112 %a = icmp ugt i8 %x, 13 1113 %b = icmp ult i8 %x, 17 1114 %c = and i1 %a, %b 1115 ret i1 %c 1116} 1117 1118; ule 1119; x <=u 13 && x == 17 1120 1121define i1 @and_ule_eq(i8 %x) { 1122; CHECK-LABEL: @and_ule_eq( 1123; CHECK-NEXT: ret i1 false 1124; 1125 %a = icmp ule i8 %x, 13 1126 %b = icmp eq i8 %x, 17 1127 %c = and i1 %a, %b 1128 ret i1 %c 1129} 1130 1131; x <=u 13 && x != 17 1132 1133define i1 @and_ule_ne(i8 %x) { 1134; CHECK-LABEL: @and_ule_ne( 1135; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 1136; CHECK-NEXT: ret i1 [[A]] 1137; 1138 %a = icmp ule i8 %x, 13 1139 %b = icmp ne i8 %x, 17 1140 %c = and i1 %a, %b 1141 ret i1 %c 1142} 1143 1144; x <=u 13 && x >=s 17 1145 1146define i1 @and_ule_sge(i8 %x) { 1147; CHECK-LABEL: @and_ule_sge( 1148; CHECK-NEXT: ret i1 false 1149; 1150 %a = icmp ule i8 %x, 13 1151 %b = icmp sge i8 %x, 17 1152 %c = and i1 %a, %b 1153 ret i1 %c 1154} 1155 1156; x <=u 13 && x >s 17 1157 1158define i1 @and_ule_sgt(i8 %x) { 1159; CHECK-LABEL: @and_ule_sgt( 1160; CHECK-NEXT: ret i1 false 1161; 1162 %a = icmp ule i8 %x, 13 1163 %b = icmp sgt i8 %x, 17 1164 %c = and i1 %a, %b 1165 ret i1 %c 1166} 1167 1168; x <=u 13 && x <=s 17 1169 1170define i1 @and_ule_sle(i8 %x) { 1171; CHECK-LABEL: @and_ule_sle( 1172; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 1173; CHECK-NEXT: ret i1 [[A]] 1174; 1175 %a = icmp ule i8 %x, 13 1176 %b = icmp sle i8 %x, 17 1177 %c = and i1 %a, %b 1178 ret i1 %c 1179} 1180 1181; x <=u 13 && x <s 17 1182 1183define i1 @and_ule_slt(i8 %x) { 1184; CHECK-LABEL: @and_ule_slt( 1185; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 1186; CHECK-NEXT: ret i1 [[A]] 1187; 1188 %a = icmp ule i8 %x, 13 1189 %b = icmp slt i8 %x, 17 1190 %c = and i1 %a, %b 1191 ret i1 %c 1192} 1193 1194; x <=u 13 && x >=u 17 1195 1196define i1 @and_ule_uge(i8 %x) { 1197; CHECK-LABEL: @and_ule_uge( 1198; CHECK-NEXT: ret i1 false 1199; 1200 %a = icmp ule i8 %x, 13 1201 %b = icmp uge i8 %x, 17 1202 %c = and i1 %a, %b 1203 ret i1 %c 1204} 1205 1206; x <=u 13 && x >u 17 1207 1208define i1 @and_ule_ugt(i8 %x) { 1209; CHECK-LABEL: @and_ule_ugt( 1210; CHECK-NEXT: ret i1 false 1211; 1212 %a = icmp ule i8 %x, 13 1213 %b = icmp ugt i8 %x, 17 1214 %c = and i1 %a, %b 1215 ret i1 %c 1216} 1217 1218; x <=u 13 && x <=u 17 1219 1220define i1 @and_ule_ule(i8 %x) { 1221; CHECK-LABEL: @and_ule_ule( 1222; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 1223; CHECK-NEXT: ret i1 [[A]] 1224; 1225 %a = icmp ule i8 %x, 13 1226 %b = icmp ule i8 %x, 17 1227 %c = and i1 %a, %b 1228 ret i1 %c 1229} 1230 1231; x <=u 13 && x <u 17 1232 1233define i1 @and_ule_ult(i8 %x) { 1234; CHECK-LABEL: @and_ule_ult( 1235; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 1236; CHECK-NEXT: ret i1 [[A]] 1237; 1238 %a = icmp ule i8 %x, 13 1239 %b = icmp ult i8 %x, 17 1240 %c = and i1 %a, %b 1241 ret i1 %c 1242} 1243 1244; ult 1245; x <u 13 && x == 17 1246 1247define i1 @and_ult_eq(i8 %x) { 1248; CHECK-LABEL: @and_ult_eq( 1249; CHECK-NEXT: ret i1 false 1250; 1251 %a = icmp ult i8 %x, 13 1252 %b = icmp eq i8 %x, 17 1253 %c = and i1 %a, %b 1254 ret i1 %c 1255} 1256 1257; x <u 13 && x != 17 1258 1259define i1 @and_ult_ne(i8 %x) { 1260; CHECK-LABEL: @and_ult_ne( 1261; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 1262; CHECK-NEXT: ret i1 [[A]] 1263; 1264 %a = icmp ult i8 %x, 13 1265 %b = icmp ne i8 %x, 17 1266 %c = and i1 %a, %b 1267 ret i1 %c 1268} 1269 1270; x <u 13 && x >=s 17 1271 1272define i1 @and_ult_sge(i8 %x) { 1273; CHECK-LABEL: @and_ult_sge( 1274; CHECK-NEXT: ret i1 false 1275; 1276 %a = icmp ult i8 %x, 13 1277 %b = icmp sge i8 %x, 17 1278 %c = and i1 %a, %b 1279 ret i1 %c 1280} 1281 1282; x <u 13 && x >s 17 1283 1284define i1 @and_ult_sgt(i8 %x) { 1285; CHECK-LABEL: @and_ult_sgt( 1286; CHECK-NEXT: ret i1 false 1287; 1288 %a = icmp ult i8 %x, 13 1289 %b = icmp sgt i8 %x, 17 1290 %c = and i1 %a, %b 1291 ret i1 %c 1292} 1293 1294; x <u 13 && x <=s 17 1295 1296define i1 @and_ult_sle(i8 %x) { 1297; CHECK-LABEL: @and_ult_sle( 1298; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 1299; CHECK-NEXT: ret i1 [[A]] 1300; 1301 %a = icmp ult i8 %x, 13 1302 %b = icmp sle i8 %x, 17 1303 %c = and i1 %a, %b 1304 ret i1 %c 1305} 1306 1307; x <u 13 && x <s 17 1308 1309define i1 @and_ult_slt(i8 %x) { 1310; CHECK-LABEL: @and_ult_slt( 1311; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 1312; CHECK-NEXT: ret i1 [[A]] 1313; 1314 %a = icmp ult i8 %x, 13 1315 %b = icmp slt i8 %x, 17 1316 %c = and i1 %a, %b 1317 ret i1 %c 1318} 1319 1320; x <u 13 && x >=u 17 1321 1322define i1 @and_ult_uge(i8 %x) { 1323; CHECK-LABEL: @and_ult_uge( 1324; CHECK-NEXT: ret i1 false 1325; 1326 %a = icmp ult i8 %x, 13 1327 %b = icmp uge i8 %x, 17 1328 %c = and i1 %a, %b 1329 ret i1 %c 1330} 1331 1332; x <u 13 && x >u 17 1333 1334define i1 @and_ult_ugt(i8 %x) { 1335; CHECK-LABEL: @and_ult_ugt( 1336; CHECK-NEXT: ret i1 false 1337; 1338 %a = icmp ult i8 %x, 13 1339 %b = icmp ugt i8 %x, 17 1340 %c = and i1 %a, %b 1341 ret i1 %c 1342} 1343 1344; x <u 13 && x <=u 17 1345 1346define i1 @and_ult_ule(i8 %x) { 1347; CHECK-LABEL: @and_ult_ule( 1348; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 1349; CHECK-NEXT: ret i1 [[A]] 1350; 1351 %a = icmp ult i8 %x, 13 1352 %b = icmp ule i8 %x, 17 1353 %c = and i1 %a, %b 1354 ret i1 %c 1355} 1356 1357; x <u 13 && x <u 17 1358 1359define i1 @and_ult_ult(i8 %x) { 1360; CHECK-LABEL: @and_ult_ult( 1361; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 1362; CHECK-NEXT: ret i1 [[A]] 1363; 1364 %a = icmp ult i8 %x, 13 1365 %b = icmp ult i8 %x, 17 1366 %c = and i1 %a, %b 1367 ret i1 %c 1368} 1369 1370; eq 1371; x == 23 && x == 17 1372 1373define i1 @and_eq_eq_swap(i8 %x) { 1374; CHECK-LABEL: @and_eq_eq_swap( 1375; CHECK-NEXT: ret i1 false 1376; 1377 %a = icmp eq i8 %x, 23 1378 %b = icmp eq i8 %x, 17 1379 %c = and i1 %a, %b 1380 ret i1 %c 1381} 1382 1383; x == 23 && x != 17 1384 1385define i1 @and_eq_ne_swap(i8 %x) { 1386; CHECK-LABEL: @and_eq_ne_swap( 1387; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 1388; CHECK-NEXT: ret i1 [[A]] 1389; 1390 %a = icmp eq i8 %x, 23 1391 %b = icmp ne i8 %x, 17 1392 %c = and i1 %a, %b 1393 ret i1 %c 1394} 1395 1396; x == 23 && x >=s 17 1397 1398define i1 @and_eq_sge_swap(i8 %x) { 1399; CHECK-LABEL: @and_eq_sge_swap( 1400; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 1401; CHECK-NEXT: ret i1 [[A]] 1402; 1403 %a = icmp eq i8 %x, 23 1404 %b = icmp sge i8 %x, 17 1405 %c = and i1 %a, %b 1406 ret i1 %c 1407} 1408 1409; x == 23 && x >s 17 1410 1411define i1 @and_eq_sgt_swap(i8 %x) { 1412; CHECK-LABEL: @and_eq_sgt_swap( 1413; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 1414; CHECK-NEXT: ret i1 [[A]] 1415; 1416 %a = icmp eq i8 %x, 23 1417 %b = icmp sgt i8 %x, 17 1418 %c = and i1 %a, %b 1419 ret i1 %c 1420} 1421 1422; x == 23 && x <=s 17 1423 1424define i1 @and_eq_sle_swap(i8 %x) { 1425; CHECK-LABEL: @and_eq_sle_swap( 1426; CHECK-NEXT: ret i1 false 1427; 1428 %a = icmp eq i8 %x, 23 1429 %b = icmp sle i8 %x, 17 1430 %c = and i1 %a, %b 1431 ret i1 %c 1432} 1433 1434; x == 23 && x <s 17 1435 1436define i1 @and_eq_slt_swap(i8 %x) { 1437; CHECK-LABEL: @and_eq_slt_swap( 1438; CHECK-NEXT: ret i1 false 1439; 1440 %a = icmp eq i8 %x, 23 1441 %b = icmp slt i8 %x, 17 1442 %c = and i1 %a, %b 1443 ret i1 %c 1444} 1445 1446; x == 23 && x >=u 17 1447 1448define i1 @and_eq_uge_swap(i8 %x) { 1449; CHECK-LABEL: @and_eq_uge_swap( 1450; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 1451; CHECK-NEXT: ret i1 [[A]] 1452; 1453 %a = icmp eq i8 %x, 23 1454 %b = icmp uge i8 %x, 17 1455 %c = and i1 %a, %b 1456 ret i1 %c 1457} 1458 1459; x == 23 && x >u 17 1460 1461define i1 @and_eq_ugt_swap(i8 %x) { 1462; CHECK-LABEL: @and_eq_ugt_swap( 1463; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 1464; CHECK-NEXT: ret i1 [[A]] 1465; 1466 %a = icmp eq i8 %x, 23 1467 %b = icmp ugt i8 %x, 17 1468 %c = and i1 %a, %b 1469 ret i1 %c 1470} 1471 1472; x == 23 && x <=u 17 1473 1474define i1 @and_eq_ule_swap(i8 %x) { 1475; CHECK-LABEL: @and_eq_ule_swap( 1476; CHECK-NEXT: ret i1 false 1477; 1478 %a = icmp eq i8 %x, 23 1479 %b = icmp ule i8 %x, 17 1480 %c = and i1 %a, %b 1481 ret i1 %c 1482} 1483 1484; x == 23 && x <u 17 1485 1486define i1 @and_eq_ult_swap(i8 %x) { 1487; CHECK-LABEL: @and_eq_ult_swap( 1488; CHECK-NEXT: ret i1 false 1489; 1490 %a = icmp eq i8 %x, 23 1491 %b = icmp ult i8 %x, 17 1492 %c = and i1 %a, %b 1493 ret i1 %c 1494} 1495 1496; ne 1497; x != 23 && x == 17 1498 1499define i1 @and_ne_eq_swap(i8 %x) { 1500; CHECK-LABEL: @and_ne_eq_swap( 1501; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 1502; CHECK-NEXT: ret i1 [[B]] 1503; 1504 %a = icmp ne i8 %x, 23 1505 %b = icmp eq i8 %x, 17 1506 %c = and i1 %a, %b 1507 ret i1 %c 1508} 1509 1510; x != 23 && x != 17 1511 1512define i1 @and_ne_ne_swap(i8 %x) { 1513; CHECK-LABEL: @and_ne_ne_swap( 1514; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 1515; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 1516; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1517; CHECK-NEXT: ret i1 [[C]] 1518; 1519 %a = icmp ne i8 %x, 23 1520 %b = icmp ne i8 %x, 17 1521 %c = and i1 %a, %b 1522 ret i1 %c 1523} 1524 1525; x != 23 && x >=s 17 1526 1527define i1 @and_ne_sge_swap(i8 %x) { 1528; CHECK-LABEL: @and_ne_sge_swap( 1529; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 1530; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 1531; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1532; CHECK-NEXT: ret i1 [[C]] 1533; 1534 %a = icmp ne i8 %x, 23 1535 %b = icmp sge i8 %x, 17 1536 %c = and i1 %a, %b 1537 ret i1 %c 1538} 1539 1540; x != 23 && x >s 17 1541 1542define i1 @and_ne_sgt_swap(i8 %x) { 1543; CHECK-LABEL: @and_ne_sgt_swap( 1544; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 1545; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 1546; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1547; CHECK-NEXT: ret i1 [[C]] 1548; 1549 %a = icmp ne i8 %x, 23 1550 %b = icmp sgt i8 %x, 17 1551 %c = and i1 %a, %b 1552 ret i1 %c 1553} 1554 1555; x != 23 && x <=s 17 1556 1557define i1 @and_ne_sle_swap(i8 %x) { 1558; CHECK-LABEL: @and_ne_sle_swap( 1559; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 1560; CHECK-NEXT: ret i1 [[B]] 1561; 1562 %a = icmp ne i8 %x, 23 1563 %b = icmp sle i8 %x, 17 1564 %c = and i1 %a, %b 1565 ret i1 %c 1566} 1567 1568; x != 23 && x <s 17 1569 1570define i1 @and_ne_slt_swap(i8 %x) { 1571; CHECK-LABEL: @and_ne_slt_swap( 1572; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 1573; CHECK-NEXT: ret i1 [[B]] 1574; 1575 %a = icmp ne i8 %x, 23 1576 %b = icmp slt i8 %x, 17 1577 %c = and i1 %a, %b 1578 ret i1 %c 1579} 1580 1581; x != 23 && x >=u 17 1582 1583define i1 @and_ne_uge_swap(i8 %x) { 1584; CHECK-LABEL: @and_ne_uge_swap( 1585; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 1586; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 1587; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1588; CHECK-NEXT: ret i1 [[C]] 1589; 1590 %a = icmp ne i8 %x, 23 1591 %b = icmp uge i8 %x, 17 1592 %c = and i1 %a, %b 1593 ret i1 %c 1594} 1595 1596; x != 23 && x >u 17 1597 1598define i1 @and_ne_ugt_swap(i8 %x) { 1599; CHECK-LABEL: @and_ne_ugt_swap( 1600; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 1601; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 1602; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1603; CHECK-NEXT: ret i1 [[C]] 1604; 1605 %a = icmp ne i8 %x, 23 1606 %b = icmp ugt i8 %x, 17 1607 %c = and i1 %a, %b 1608 ret i1 %c 1609} 1610 1611; x != 23 && x <=u 17 1612 1613define i1 @and_ne_ule_swap(i8 %x) { 1614; CHECK-LABEL: @and_ne_ule_swap( 1615; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 1616; CHECK-NEXT: ret i1 [[B]] 1617; 1618 %a = icmp ne i8 %x, 23 1619 %b = icmp ule i8 %x, 17 1620 %c = and i1 %a, %b 1621 ret i1 %c 1622} 1623 1624; x != 23 && x <u 17 1625 1626define i1 @and_ne_ult_swap(i8 %x) { 1627; CHECK-LABEL: @and_ne_ult_swap( 1628; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 1629; CHECK-NEXT: ret i1 [[B]] 1630; 1631 %a = icmp ne i8 %x, 23 1632 %b = icmp ult i8 %x, 17 1633 %c = and i1 %a, %b 1634 ret i1 %c 1635} 1636 1637; sge 1638; x >=s 23 && x == 17 1639 1640define i1 @and_sge_eq_swap(i8 %x) { 1641; CHECK-LABEL: @and_sge_eq_swap( 1642; CHECK-NEXT: ret i1 false 1643; 1644 %a = icmp sge i8 %x, 23 1645 %b = icmp eq i8 %x, 17 1646 %c = and i1 %a, %b 1647 ret i1 %c 1648} 1649 1650; x >=s 23 && x != 17 1651 1652define i1 @and_sge_ne_swap(i8 %x) { 1653; CHECK-LABEL: @and_sge_ne_swap( 1654; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 1655; CHECK-NEXT: ret i1 [[A]] 1656; 1657 %a = icmp sge i8 %x, 23 1658 %b = icmp ne i8 %x, 17 1659 %c = and i1 %a, %b 1660 ret i1 %c 1661} 1662 1663; x >=s 23 && x >=s 17 1664 1665define i1 @and_sge_sge_swap(i8 %x) { 1666; CHECK-LABEL: @and_sge_sge_swap( 1667; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 1668; CHECK-NEXT: ret i1 [[A]] 1669; 1670 %a = icmp sge i8 %x, 23 1671 %b = icmp sge i8 %x, 17 1672 %c = and i1 %a, %b 1673 ret i1 %c 1674} 1675 1676; x >=s 23 && x >s 17 1677 1678define i1 @and_sge_sgt_swap(i8 %x) { 1679; CHECK-LABEL: @and_sge_sgt_swap( 1680; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 1681; CHECK-NEXT: ret i1 [[A]] 1682; 1683 %a = icmp sge i8 %x, 23 1684 %b = icmp sgt i8 %x, 17 1685 %c = and i1 %a, %b 1686 ret i1 %c 1687} 1688 1689; x >=s 23 && x <=s 17 1690 1691define i1 @and_sge_sle_swap(i8 %x) { 1692; CHECK-LABEL: @and_sge_sle_swap( 1693; CHECK-NEXT: ret i1 false 1694; 1695 %a = icmp sge i8 %x, 23 1696 %b = icmp sle i8 %x, 17 1697 %c = and i1 %a, %b 1698 ret i1 %c 1699} 1700 1701; x >=s 23 && x <s 17 1702 1703define i1 @and_sge_slt_swap(i8 %x) { 1704; CHECK-LABEL: @and_sge_slt_swap( 1705; CHECK-NEXT: ret i1 false 1706; 1707 %a = icmp sge i8 %x, 23 1708 %b = icmp slt i8 %x, 17 1709 %c = and i1 %a, %b 1710 ret i1 %c 1711} 1712 1713; x >=s 23 && x >=u 17 1714 1715define i1 @and_sge_uge_swap(i8 %x) { 1716; CHECK-LABEL: @and_sge_uge_swap( 1717; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 1718; CHECK-NEXT: ret i1 [[A]] 1719; 1720 %a = icmp sge i8 %x, 23 1721 %b = icmp uge i8 %x, 17 1722 %c = and i1 %a, %b 1723 ret i1 %c 1724} 1725 1726; x >=s 23 && x >u 17 1727 1728define i1 @and_sge_ugt_swap(i8 %x) { 1729; CHECK-LABEL: @and_sge_ugt_swap( 1730; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 1731; CHECK-NEXT: ret i1 [[A]] 1732; 1733 %a = icmp sge i8 %x, 23 1734 %b = icmp ugt i8 %x, 17 1735 %c = and i1 %a, %b 1736 ret i1 %c 1737} 1738 1739; x >=s 23 && x <=u 17 1740 1741define i1 @and_sge_ule_swap(i8 %x) { 1742; CHECK-LABEL: @and_sge_ule_swap( 1743; CHECK-NEXT: ret i1 false 1744; 1745 %a = icmp sge i8 %x, 23 1746 %b = icmp ule i8 %x, 17 1747 %c = and i1 %a, %b 1748 ret i1 %c 1749} 1750 1751; x >=s 23 && x <u 17 1752 1753define i1 @and_sge_ult_swap(i8 %x) { 1754; CHECK-LABEL: @and_sge_ult_swap( 1755; CHECK-NEXT: ret i1 false 1756; 1757 %a = icmp sge i8 %x, 23 1758 %b = icmp ult i8 %x, 17 1759 %c = and i1 %a, %b 1760 ret i1 %c 1761} 1762 1763; sgt 1764; x >s 23 && x == 17 1765 1766define i1 @and_sgt_eq_swap(i8 %x) { 1767; CHECK-LABEL: @and_sgt_eq_swap( 1768; CHECK-NEXT: ret i1 false 1769; 1770 %a = icmp sgt i8 %x, 23 1771 %b = icmp eq i8 %x, 17 1772 %c = and i1 %a, %b 1773 ret i1 %c 1774} 1775 1776; x >s 23 && x != 17 1777 1778define i1 @and_sgt_ne_swap(i8 %x) { 1779; CHECK-LABEL: @and_sgt_ne_swap( 1780; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 1781; CHECK-NEXT: ret i1 [[A]] 1782; 1783 %a = icmp sgt i8 %x, 23 1784 %b = icmp ne i8 %x, 17 1785 %c = and i1 %a, %b 1786 ret i1 %c 1787} 1788 1789; x >s 23 && x >=s 17 1790 1791define i1 @and_sgt_sge_swap(i8 %x) { 1792; CHECK-LABEL: @and_sgt_sge_swap( 1793; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 1794; CHECK-NEXT: ret i1 [[A]] 1795; 1796 %a = icmp sgt i8 %x, 23 1797 %b = icmp sge i8 %x, 17 1798 %c = and i1 %a, %b 1799 ret i1 %c 1800} 1801 1802; x >s 23 && x >s 17 1803 1804define i1 @and_sgt_sgt_swap(i8 %x) { 1805; CHECK-LABEL: @and_sgt_sgt_swap( 1806; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 1807; CHECK-NEXT: ret i1 [[A]] 1808; 1809 %a = icmp sgt i8 %x, 23 1810 %b = icmp sgt i8 %x, 17 1811 %c = and i1 %a, %b 1812 ret i1 %c 1813} 1814 1815; x >s 23 && x <=s 17 1816 1817define i1 @and_sgt_sle_swap(i8 %x) { 1818; CHECK-LABEL: @and_sgt_sle_swap( 1819; CHECK-NEXT: ret i1 false 1820; 1821 %a = icmp sgt i8 %x, 23 1822 %b = icmp sle i8 %x, 17 1823 %c = and i1 %a, %b 1824 ret i1 %c 1825} 1826 1827; x >s 23 && x <s 17 1828 1829define i1 @and_sgt_slt_swap(i8 %x) { 1830; CHECK-LABEL: @and_sgt_slt_swap( 1831; CHECK-NEXT: ret i1 false 1832; 1833 %a = icmp sgt i8 %x, 23 1834 %b = icmp slt i8 %x, 17 1835 %c = and i1 %a, %b 1836 ret i1 %c 1837} 1838 1839; x >s 23 && x >=u 17 1840 1841define i1 @and_sgt_uge_swap(i8 %x) { 1842; CHECK-LABEL: @and_sgt_uge_swap( 1843; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 1844; CHECK-NEXT: ret i1 [[A]] 1845; 1846 %a = icmp sgt i8 %x, 23 1847 %b = icmp uge i8 %x, 17 1848 %c = and i1 %a, %b 1849 ret i1 %c 1850} 1851 1852; x >s 23 && x >u 17 1853 1854define i1 @and_sgt_ugt_swap(i8 %x) { 1855; CHECK-LABEL: @and_sgt_ugt_swap( 1856; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 1857; CHECK-NEXT: ret i1 [[A]] 1858; 1859 %a = icmp sgt i8 %x, 23 1860 %b = icmp ugt i8 %x, 17 1861 %c = and i1 %a, %b 1862 ret i1 %c 1863} 1864 1865; x >s 23 && x <=u 17 1866 1867define i1 @and_sgt_ule_swap(i8 %x) { 1868; CHECK-LABEL: @and_sgt_ule_swap( 1869; CHECK-NEXT: ret i1 false 1870; 1871 %a = icmp sgt i8 %x, 23 1872 %b = icmp ule i8 %x, 17 1873 %c = and i1 %a, %b 1874 ret i1 %c 1875} 1876 1877; x >s 23 && x <u 17 1878 1879define i1 @and_sgt_ult_swap(i8 %x) { 1880; CHECK-LABEL: @and_sgt_ult_swap( 1881; CHECK-NEXT: ret i1 false 1882; 1883 %a = icmp sgt i8 %x, 23 1884 %b = icmp ult i8 %x, 17 1885 %c = and i1 %a, %b 1886 ret i1 %c 1887} 1888 1889; sle 1890; x <=s 23 && x == 17 1891 1892define i1 @and_sle_eq_swap(i8 %x) { 1893; CHECK-LABEL: @and_sle_eq_swap( 1894; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 1895; CHECK-NEXT: ret i1 [[B]] 1896; 1897 %a = icmp sle i8 %x, 23 1898 %b = icmp eq i8 %x, 17 1899 %c = and i1 %a, %b 1900 ret i1 %c 1901} 1902 1903; x <=s 23 && x != 17 1904 1905define i1 @and_sle_ne_swap(i8 %x) { 1906; CHECK-LABEL: @and_sle_ne_swap( 1907; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 1908; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 1909; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1910; CHECK-NEXT: ret i1 [[C]] 1911; 1912 %a = icmp sle i8 %x, 23 1913 %b = icmp ne i8 %x, 17 1914 %c = and i1 %a, %b 1915 ret i1 %c 1916} 1917 1918; x <=s 23 && x >=s 17 1919 1920define i1 @and_sle_sge_swap(i8 %x) { 1921; CHECK-LABEL: @and_sle_sge_swap( 1922; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 1923; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 1924; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1925; CHECK-NEXT: ret i1 [[C]] 1926; 1927 %a = icmp sle i8 %x, 23 1928 %b = icmp sge i8 %x, 17 1929 %c = and i1 %a, %b 1930 ret i1 %c 1931} 1932 1933; x <=s 23 && x >s 17 1934 1935define i1 @and_sle_sgt_swap(i8 %x) { 1936; CHECK-LABEL: @and_sle_sgt_swap( 1937; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 1938; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 1939; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1940; CHECK-NEXT: ret i1 [[C]] 1941; 1942 %a = icmp sle i8 %x, 23 1943 %b = icmp sgt i8 %x, 17 1944 %c = and i1 %a, %b 1945 ret i1 %c 1946} 1947 1948; x <=s 23 && x <=s 17 1949 1950define i1 @and_sle_sle_swap(i8 %x) { 1951; CHECK-LABEL: @and_sle_sle_swap( 1952; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 1953; CHECK-NEXT: ret i1 [[B]] 1954; 1955 %a = icmp sle i8 %x, 23 1956 %b = icmp sle i8 %x, 17 1957 %c = and i1 %a, %b 1958 ret i1 %c 1959} 1960 1961; x <=s 23 && x <s 17 1962 1963define i1 @and_sle_slt_swap(i8 %x) { 1964; CHECK-LABEL: @and_sle_slt_swap( 1965; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 1966; CHECK-NEXT: ret i1 [[B]] 1967; 1968 %a = icmp sle i8 %x, 23 1969 %b = icmp slt i8 %x, 17 1970 %c = and i1 %a, %b 1971 ret i1 %c 1972} 1973 1974; x <=s 23 && x >=u 17 1975 1976define i1 @and_sle_uge_swap(i8 %x) { 1977; CHECK-LABEL: @and_sle_uge_swap( 1978; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 1979; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 1980; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1981; CHECK-NEXT: ret i1 [[C]] 1982; 1983 %a = icmp sle i8 %x, 23 1984 %b = icmp uge i8 %x, 17 1985 %c = and i1 %a, %b 1986 ret i1 %c 1987} 1988 1989; x <=s 23 && x >u 17 1990 1991define i1 @and_sle_ugt_swap(i8 %x) { 1992; CHECK-LABEL: @and_sle_ugt_swap( 1993; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 1994; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 1995; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 1996; CHECK-NEXT: ret i1 [[C]] 1997; 1998 %a = icmp sle i8 %x, 23 1999 %b = icmp ugt i8 %x, 17 2000 %c = and i1 %a, %b 2001 ret i1 %c 2002} 2003 2004; x <=s 23 && x <=u 17 2005 2006define i1 @and_sle_ule_swap(i8 %x) { 2007; CHECK-LABEL: @and_sle_ule_swap( 2008; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 2009; CHECK-NEXT: ret i1 [[B]] 2010; 2011 %a = icmp sle i8 %x, 23 2012 %b = icmp ule i8 %x, 17 2013 %c = and i1 %a, %b 2014 ret i1 %c 2015} 2016 2017; x <=s 23 && x <u 17 2018 2019define i1 @and_sle_ult_swap(i8 %x) { 2020; CHECK-LABEL: @and_sle_ult_swap( 2021; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 2022; CHECK-NEXT: ret i1 [[B]] 2023; 2024 %a = icmp sle i8 %x, 23 2025 %b = icmp ult i8 %x, 17 2026 %c = and i1 %a, %b 2027 ret i1 %c 2028} 2029 2030; slt 2031; x <s 23 && x == 17 2032 2033define i1 @and_slt_eq_swap(i8 %x) { 2034; CHECK-LABEL: @and_slt_eq_swap( 2035; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 2036; CHECK-NEXT: ret i1 [[B]] 2037; 2038 %a = icmp slt i8 %x, 23 2039 %b = icmp eq i8 %x, 17 2040 %c = and i1 %a, %b 2041 ret i1 %c 2042} 2043 2044; x <s 23 && x != 17 2045 2046define i1 @and_slt_ne_swap(i8 %x) { 2047; CHECK-LABEL: @and_slt_ne_swap( 2048; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 2049; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 2050; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2051; CHECK-NEXT: ret i1 [[C]] 2052; 2053 %a = icmp slt i8 %x, 23 2054 %b = icmp ne i8 %x, 17 2055 %c = and i1 %a, %b 2056 ret i1 %c 2057} 2058 2059; x <s 23 && x >=s 17 2060 2061define i1 @and_slt_sge_swap(i8 %x) { 2062; CHECK-LABEL: @and_slt_sge_swap( 2063; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 2064; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 2065; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2066; CHECK-NEXT: ret i1 [[C]] 2067; 2068 %a = icmp slt i8 %x, 23 2069 %b = icmp sge i8 %x, 17 2070 %c = and i1 %a, %b 2071 ret i1 %c 2072} 2073 2074; x <s 23 && x >s 17 2075 2076define i1 @and_slt_sgt_swap(i8 %x) { 2077; CHECK-LABEL: @and_slt_sgt_swap( 2078; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 2079; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 2080; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2081; CHECK-NEXT: ret i1 [[C]] 2082; 2083 %a = icmp slt i8 %x, 23 2084 %b = icmp sgt i8 %x, 17 2085 %c = and i1 %a, %b 2086 ret i1 %c 2087} 2088 2089; x <s 23 && x <=s 17 2090 2091define i1 @and_slt_sle_swap(i8 %x) { 2092; CHECK-LABEL: @and_slt_sle_swap( 2093; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 2094; CHECK-NEXT: ret i1 [[B]] 2095; 2096 %a = icmp slt i8 %x, 23 2097 %b = icmp sle i8 %x, 17 2098 %c = and i1 %a, %b 2099 ret i1 %c 2100} 2101 2102; x <s 23 && x <s 17 2103 2104define i1 @and_slt_slt_swap(i8 %x) { 2105; CHECK-LABEL: @and_slt_slt_swap( 2106; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 2107; CHECK-NEXT: ret i1 [[B]] 2108; 2109 %a = icmp slt i8 %x, 23 2110 %b = icmp slt i8 %x, 17 2111 %c = and i1 %a, %b 2112 ret i1 %c 2113} 2114 2115; x <s 23 && x >=u 17 2116 2117define i1 @and_slt_uge_swap(i8 %x) { 2118; CHECK-LABEL: @and_slt_uge_swap( 2119; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 2120; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 2121; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2122; CHECK-NEXT: ret i1 [[C]] 2123; 2124 %a = icmp slt i8 %x, 23 2125 %b = icmp uge i8 %x, 17 2126 %c = and i1 %a, %b 2127 ret i1 %c 2128} 2129 2130; x <s 23 && x >u 17 2131 2132define i1 @and_slt_ugt_swap(i8 %x) { 2133; CHECK-LABEL: @and_slt_ugt_swap( 2134; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 2135; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 2136; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2137; CHECK-NEXT: ret i1 [[C]] 2138; 2139 %a = icmp slt i8 %x, 23 2140 %b = icmp ugt i8 %x, 17 2141 %c = and i1 %a, %b 2142 ret i1 %c 2143} 2144 2145; x <s 23 && x <=u 17 2146 2147define i1 @and_slt_ule_swap(i8 %x) { 2148; CHECK-LABEL: @and_slt_ule_swap( 2149; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 2150; CHECK-NEXT: ret i1 [[B]] 2151; 2152 %a = icmp slt i8 %x, 23 2153 %b = icmp ule i8 %x, 17 2154 %c = and i1 %a, %b 2155 ret i1 %c 2156} 2157 2158; x <s 23 && x <u 17 2159 2160define i1 @and_slt_ult_swap(i8 %x) { 2161; CHECK-LABEL: @and_slt_ult_swap( 2162; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 2163; CHECK-NEXT: ret i1 [[B]] 2164; 2165 %a = icmp slt i8 %x, 23 2166 %b = icmp ult i8 %x, 17 2167 %c = and i1 %a, %b 2168 ret i1 %c 2169} 2170 2171; uge 2172; x >=u 23 && x == 17 2173 2174define i1 @and_uge_eq_swap(i8 %x) { 2175; CHECK-LABEL: @and_uge_eq_swap( 2176; CHECK-NEXT: ret i1 false 2177; 2178 %a = icmp uge i8 %x, 23 2179 %b = icmp eq i8 %x, 17 2180 %c = and i1 %a, %b 2181 ret i1 %c 2182} 2183 2184; x >=u 23 && x != 17 2185 2186define i1 @and_uge_ne_swap(i8 %x) { 2187; CHECK-LABEL: @and_uge_ne_swap( 2188; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 2189; CHECK-NEXT: ret i1 [[A]] 2190; 2191 %a = icmp uge i8 %x, 23 2192 %b = icmp ne i8 %x, 17 2193 %c = and i1 %a, %b 2194 ret i1 %c 2195} 2196 2197; x >=u 23 && x >=s 17 2198 2199define i1 @and_uge_sge_swap(i8 %x) { 2200; CHECK-LABEL: @and_uge_sge_swap( 2201; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 2202; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 2203; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2204; CHECK-NEXT: ret i1 [[C]] 2205; 2206 %a = icmp uge i8 %x, 23 2207 %b = icmp sge i8 %x, 17 2208 %c = and i1 %a, %b 2209 ret i1 %c 2210} 2211 2212; x >=u 23 && x >s 17 2213 2214define i1 @and_uge_sgt_swap(i8 %x) { 2215; CHECK-LABEL: @and_uge_sgt_swap( 2216; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 2217; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 2218; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2219; CHECK-NEXT: ret i1 [[C]] 2220; 2221 %a = icmp uge i8 %x, 23 2222 %b = icmp sgt i8 %x, 17 2223 %c = and i1 %a, %b 2224 ret i1 %c 2225} 2226 2227; x >=u 23 && x <=s 17 2228 2229define i1 @and_uge_sle_swap(i8 %x) { 2230; CHECK-LABEL: @and_uge_sle_swap( 2231; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 2232; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 2233; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2234; CHECK-NEXT: ret i1 [[C]] 2235; 2236 %a = icmp uge i8 %x, 23 2237 %b = icmp sle i8 %x, 17 2238 %c = and i1 %a, %b 2239 ret i1 %c 2240} 2241 2242; x >=u 23 && x <s 17 2243 2244define i1 @and_uge_slt_swap(i8 %x) { 2245; CHECK-LABEL: @and_uge_slt_swap( 2246; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 2247; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 2248; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2249; CHECK-NEXT: ret i1 [[C]] 2250; 2251 %a = icmp uge i8 %x, 23 2252 %b = icmp slt i8 %x, 17 2253 %c = and i1 %a, %b 2254 ret i1 %c 2255} 2256 2257; x >=u 23 && x >=u 17 2258 2259define i1 @and_uge_uge_swap(i8 %x) { 2260; CHECK-LABEL: @and_uge_uge_swap( 2261; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 2262; CHECK-NEXT: ret i1 [[A]] 2263; 2264 %a = icmp uge i8 %x, 23 2265 %b = icmp uge i8 %x, 17 2266 %c = and i1 %a, %b 2267 ret i1 %c 2268} 2269 2270; x >=u 23 && x >u 17 2271 2272define i1 @and_uge_ugt_swap(i8 %x) { 2273; CHECK-LABEL: @and_uge_ugt_swap( 2274; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 2275; CHECK-NEXT: ret i1 [[A]] 2276; 2277 %a = icmp uge i8 %x, 23 2278 %b = icmp ugt i8 %x, 17 2279 %c = and i1 %a, %b 2280 ret i1 %c 2281} 2282 2283; x >=u 23 && x <=u 17 2284 2285define i1 @and_uge_ule_swap(i8 %x) { 2286; CHECK-LABEL: @and_uge_ule_swap( 2287; CHECK-NEXT: ret i1 false 2288; 2289 %a = icmp uge i8 %x, 23 2290 %b = icmp ule i8 %x, 17 2291 %c = and i1 %a, %b 2292 ret i1 %c 2293} 2294 2295; x >=u 23 && x <u 17 2296 2297define i1 @and_uge_ult_swap(i8 %x) { 2298; CHECK-LABEL: @and_uge_ult_swap( 2299; CHECK-NEXT: ret i1 false 2300; 2301 %a = icmp uge i8 %x, 23 2302 %b = icmp ult i8 %x, 17 2303 %c = and i1 %a, %b 2304 ret i1 %c 2305} 2306 2307; ugt 2308; x >u 23 && x == 17 2309 2310define i1 @and_ugt_eq_swap(i8 %x) { 2311; CHECK-LABEL: @and_ugt_eq_swap( 2312; CHECK-NEXT: ret i1 false 2313; 2314 %a = icmp ugt i8 %x, 23 2315 %b = icmp eq i8 %x, 17 2316 %c = and i1 %a, %b 2317 ret i1 %c 2318} 2319 2320; x >u 23 && x != 17 2321 2322define i1 @and_ugt_ne_swap(i8 %x) { 2323; CHECK-LABEL: @and_ugt_ne_swap( 2324; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 2325; CHECK-NEXT: ret i1 [[A]] 2326; 2327 %a = icmp ugt i8 %x, 23 2328 %b = icmp ne i8 %x, 17 2329 %c = and i1 %a, %b 2330 ret i1 %c 2331} 2332 2333; x >u 23 && x >=s 17 2334 2335define i1 @and_ugt_sge_swap(i8 %x) { 2336; CHECK-LABEL: @and_ugt_sge_swap( 2337; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 2338; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 2339; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2340; CHECK-NEXT: ret i1 [[C]] 2341; 2342 %a = icmp ugt i8 %x, 23 2343 %b = icmp sge i8 %x, 17 2344 %c = and i1 %a, %b 2345 ret i1 %c 2346} 2347 2348; x >u 23 && x >s 17 2349 2350define i1 @and_ugt_sgt_swap(i8 %x) { 2351; CHECK-LABEL: @and_ugt_sgt_swap( 2352; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 2353; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 2354; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2355; CHECK-NEXT: ret i1 [[C]] 2356; 2357 %a = icmp ugt i8 %x, 23 2358 %b = icmp sgt i8 %x, 17 2359 %c = and i1 %a, %b 2360 ret i1 %c 2361} 2362 2363; x >u 23 && x <=s 17 2364 2365define i1 @and_ugt_sle_swap(i8 %x) { 2366; CHECK-LABEL: @and_ugt_sle_swap( 2367; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 2368; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 2369; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2370; CHECK-NEXT: ret i1 [[C]] 2371; 2372 %a = icmp ugt i8 %x, 23 2373 %b = icmp sle i8 %x, 17 2374 %c = and i1 %a, %b 2375 ret i1 %c 2376} 2377 2378; x >u 23 && x <s 17 2379 2380define i1 @and_ugt_slt_swap(i8 %x) { 2381; CHECK-LABEL: @and_ugt_slt_swap( 2382; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 2383; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 2384; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2385; CHECK-NEXT: ret i1 [[C]] 2386; 2387 %a = icmp ugt i8 %x, 23 2388 %b = icmp slt i8 %x, 17 2389 %c = and i1 %a, %b 2390 ret i1 %c 2391} 2392 2393; x >u 23 && x >=u 17 2394 2395define i1 @and_ugt_uge_swap(i8 %x) { 2396; CHECK-LABEL: @and_ugt_uge_swap( 2397; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 2398; CHECK-NEXT: ret i1 [[A]] 2399; 2400 %a = icmp ugt i8 %x, 23 2401 %b = icmp uge i8 %x, 17 2402 %c = and i1 %a, %b 2403 ret i1 %c 2404} 2405 2406; x >u 23 && x >u 17 2407 2408define i1 @and_ugt_ugt_swap(i8 %x) { 2409; CHECK-LABEL: @and_ugt_ugt_swap( 2410; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 2411; CHECK-NEXT: ret i1 [[A]] 2412; 2413 %a = icmp ugt i8 %x, 23 2414 %b = icmp ugt i8 %x, 17 2415 %c = and i1 %a, %b 2416 ret i1 %c 2417} 2418 2419; x >u 23 && x <=u 17 2420 2421define i1 @and_ugt_ule_swap(i8 %x) { 2422; CHECK-LABEL: @and_ugt_ule_swap( 2423; CHECK-NEXT: ret i1 false 2424; 2425 %a = icmp ugt i8 %x, 23 2426 %b = icmp ule i8 %x, 17 2427 %c = and i1 %a, %b 2428 ret i1 %c 2429} 2430 2431; x >u 23 && x <u 17 2432 2433define i1 @and_ugt_ult_swap(i8 %x) { 2434; CHECK-LABEL: @and_ugt_ult_swap( 2435; CHECK-NEXT: ret i1 false 2436; 2437 %a = icmp ugt i8 %x, 23 2438 %b = icmp ult i8 %x, 17 2439 %c = and i1 %a, %b 2440 ret i1 %c 2441} 2442 2443; ule 2444; x <=u 23 && x == 17 2445 2446define i1 @and_ule_eq_swap(i8 %x) { 2447; CHECK-LABEL: @and_ule_eq_swap( 2448; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 2449; CHECK-NEXT: ret i1 [[B]] 2450; 2451 %a = icmp ule i8 %x, 23 2452 %b = icmp eq i8 %x, 17 2453 %c = and i1 %a, %b 2454 ret i1 %c 2455} 2456 2457; x <=u 23 && x != 17 2458 2459define i1 @and_ule_ne_swap(i8 %x) { 2460; CHECK-LABEL: @and_ule_ne_swap( 2461; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 2462; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 2463; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2464; CHECK-NEXT: ret i1 [[C]] 2465; 2466 %a = icmp ule i8 %x, 23 2467 %b = icmp ne i8 %x, 17 2468 %c = and i1 %a, %b 2469 ret i1 %c 2470} 2471 2472; x <=u 23 && x >=s 17 2473 2474define i1 @and_ule_sge_swap(i8 %x) { 2475; CHECK-LABEL: @and_ule_sge_swap( 2476; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 2477; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 2478; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2479; CHECK-NEXT: ret i1 [[C]] 2480; 2481 %a = icmp ule i8 %x, 23 2482 %b = icmp sge i8 %x, 17 2483 %c = and i1 %a, %b 2484 ret i1 %c 2485} 2486 2487; x <=u 23 && x >s 17 2488 2489define i1 @and_ule_sgt_swap(i8 %x) { 2490; CHECK-LABEL: @and_ule_sgt_swap( 2491; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 2492; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 2493; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2494; CHECK-NEXT: ret i1 [[C]] 2495; 2496 %a = icmp ule i8 %x, 23 2497 %b = icmp sgt i8 %x, 17 2498 %c = and i1 %a, %b 2499 ret i1 %c 2500} 2501 2502; x <=u 23 && x <=s 17 2503 2504define i1 @and_ule_sle_swap(i8 %x) { 2505; CHECK-LABEL: @and_ule_sle_swap( 2506; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 2507; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 2508; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2509; CHECK-NEXT: ret i1 [[C]] 2510; 2511 %a = icmp ule i8 %x, 23 2512 %b = icmp sle i8 %x, 17 2513 %c = and i1 %a, %b 2514 ret i1 %c 2515} 2516 2517; x <=u 23 && x <s 17 2518 2519define i1 @and_ule_slt_swap(i8 %x) { 2520; CHECK-LABEL: @and_ule_slt_swap( 2521; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 2522; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 2523; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2524; CHECK-NEXT: ret i1 [[C]] 2525; 2526 %a = icmp ule i8 %x, 23 2527 %b = icmp slt i8 %x, 17 2528 %c = and i1 %a, %b 2529 ret i1 %c 2530} 2531 2532; x <=u 23 && x >=u 17 2533 2534define i1 @and_ule_uge_swap(i8 %x) { 2535; CHECK-LABEL: @and_ule_uge_swap( 2536; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 2537; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 2538; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2539; CHECK-NEXT: ret i1 [[C]] 2540; 2541 %a = icmp ule i8 %x, 23 2542 %b = icmp uge i8 %x, 17 2543 %c = and i1 %a, %b 2544 ret i1 %c 2545} 2546 2547; x <=u 23 && x >u 17 2548 2549define i1 @and_ule_ugt_swap(i8 %x) { 2550; CHECK-LABEL: @and_ule_ugt_swap( 2551; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 2552; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 2553; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2554; CHECK-NEXT: ret i1 [[C]] 2555; 2556 %a = icmp ule i8 %x, 23 2557 %b = icmp ugt i8 %x, 17 2558 %c = and i1 %a, %b 2559 ret i1 %c 2560} 2561 2562; x <=u 23 && x <=u 17 2563 2564define i1 @and_ule_ule_swap(i8 %x) { 2565; CHECK-LABEL: @and_ule_ule_swap( 2566; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 2567; CHECK-NEXT: ret i1 [[B]] 2568; 2569 %a = icmp ule i8 %x, 23 2570 %b = icmp ule i8 %x, 17 2571 %c = and i1 %a, %b 2572 ret i1 %c 2573} 2574 2575; x <=u 23 && x <u 17 2576 2577define i1 @and_ule_ult_swap(i8 %x) { 2578; CHECK-LABEL: @and_ule_ult_swap( 2579; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 2580; CHECK-NEXT: ret i1 [[B]] 2581; 2582 %a = icmp ule i8 %x, 23 2583 %b = icmp ult i8 %x, 17 2584 %c = and i1 %a, %b 2585 ret i1 %c 2586} 2587 2588; ult 2589; x <u 23 && x == 17 2590 2591define i1 @and_ult_eq_swap(i8 %x) { 2592; CHECK-LABEL: @and_ult_eq_swap( 2593; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X:%.*]], 17 2594; CHECK-NEXT: ret i1 [[B]] 2595; 2596 %a = icmp ult i8 %x, 23 2597 %b = icmp eq i8 %x, 17 2598 %c = and i1 %a, %b 2599 ret i1 %c 2600} 2601 2602; x <u 23 && x != 17 2603 2604define i1 @and_ult_ne_swap(i8 %x) { 2605; CHECK-LABEL: @and_ult_ne_swap( 2606; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 2607; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X]], 17 2608; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2609; CHECK-NEXT: ret i1 [[C]] 2610; 2611 %a = icmp ult i8 %x, 23 2612 %b = icmp ne i8 %x, 17 2613 %c = and i1 %a, %b 2614 ret i1 %c 2615} 2616 2617; x <u 23 && x >=s 17 2618 2619define i1 @and_ult_sge_swap(i8 %x) { 2620; CHECK-LABEL: @and_ult_sge_swap( 2621; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 2622; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 2623; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2624; CHECK-NEXT: ret i1 [[C]] 2625; 2626 %a = icmp ult i8 %x, 23 2627 %b = icmp sge i8 %x, 17 2628 %c = and i1 %a, %b 2629 ret i1 %c 2630} 2631 2632; x <u 23 && x >s 17 2633 2634define i1 @and_ult_sgt_swap(i8 %x) { 2635; CHECK-LABEL: @and_ult_sgt_swap( 2636; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 2637; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 2638; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2639; CHECK-NEXT: ret i1 [[C]] 2640; 2641 %a = icmp ult i8 %x, 23 2642 %b = icmp sgt i8 %x, 17 2643 %c = and i1 %a, %b 2644 ret i1 %c 2645} 2646 2647; x <u 23 && x <=s 17 2648 2649define i1 @and_ult_sle_swap(i8 %x) { 2650; CHECK-LABEL: @and_ult_sle_swap( 2651; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 2652; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 2653; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2654; CHECK-NEXT: ret i1 [[C]] 2655; 2656 %a = icmp ult i8 %x, 23 2657 %b = icmp sle i8 %x, 17 2658 %c = and i1 %a, %b 2659 ret i1 %c 2660} 2661 2662; x <u 23 && x <s 17 2663 2664define i1 @and_ult_slt_swap(i8 %x) { 2665; CHECK-LABEL: @and_ult_slt_swap( 2666; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 2667; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 2668; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2669; CHECK-NEXT: ret i1 [[C]] 2670; 2671 %a = icmp ult i8 %x, 23 2672 %b = icmp slt i8 %x, 17 2673 %c = and i1 %a, %b 2674 ret i1 %c 2675} 2676 2677; x <u 23 && x >=u 17 2678 2679define i1 @and_ult_uge_swap(i8 %x) { 2680; CHECK-LABEL: @and_ult_uge_swap( 2681; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 2682; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 2683; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2684; CHECK-NEXT: ret i1 [[C]] 2685; 2686 %a = icmp ult i8 %x, 23 2687 %b = icmp uge i8 %x, 17 2688 %c = and i1 %a, %b 2689 ret i1 %c 2690} 2691 2692; x <u 23 && x >u 17 2693 2694define i1 @and_ult_ugt_swap(i8 %x) { 2695; CHECK-LABEL: @and_ult_ugt_swap( 2696; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 2697; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 2698; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]] 2699; CHECK-NEXT: ret i1 [[C]] 2700; 2701 %a = icmp ult i8 %x, 23 2702 %b = icmp ugt i8 %x, 17 2703 %c = and i1 %a, %b 2704 ret i1 %c 2705} 2706 2707; x <u 23 && x <=u 17 2708 2709define i1 @and_ult_ule_swap(i8 %x) { 2710; CHECK-LABEL: @and_ult_ule_swap( 2711; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 2712; CHECK-NEXT: ret i1 [[B]] 2713; 2714 %a = icmp ult i8 %x, 23 2715 %b = icmp ule i8 %x, 17 2716 %c = and i1 %a, %b 2717 ret i1 %c 2718} 2719 2720; x <u 23 && x <u 17 2721 2722define i1 @and_ult_ult_swap(i8 %x) { 2723; CHECK-LABEL: @and_ult_ult_swap( 2724; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 2725; CHECK-NEXT: ret i1 [[B]] 2726; 2727 %a = icmp ult i8 %x, 23 2728 %b = icmp ult i8 %x, 17 2729 %c = and i1 %a, %b 2730 ret i1 %c 2731} 2732 2733; eq 2734; x == 13 || x == 17 2735 2736define i1 @or_eq_eq(i8 %x) { 2737; CHECK-LABEL: @or_eq_eq( 2738; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 2739; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 2740; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 2741; CHECK-NEXT: ret i1 [[C]] 2742; 2743 %a = icmp eq i8 %x, 13 2744 %b = icmp eq i8 %x, 17 2745 %c = or i1 %a, %b 2746 ret i1 %c 2747} 2748 2749; x == 13 || x != 17 2750 2751define i1 @or_eq_ne(i8 %x) { 2752; CHECK-LABEL: @or_eq_ne( 2753; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 2754; CHECK-NEXT: ret i1 [[B]] 2755; 2756 %a = icmp eq i8 %x, 13 2757 %b = icmp ne i8 %x, 17 2758 %c = or i1 %a, %b 2759 ret i1 %c 2760} 2761 2762; x == 13 || x >=s 17 2763 2764define i1 @or_eq_sge(i8 %x) { 2765; CHECK-LABEL: @or_eq_sge( 2766; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 2767; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 2768; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 2769; CHECK-NEXT: ret i1 [[C]] 2770; 2771 %a = icmp eq i8 %x, 13 2772 %b = icmp sge i8 %x, 17 2773 %c = or i1 %a, %b 2774 ret i1 %c 2775} 2776 2777; x == 13 || x >s 17 2778 2779define i1 @or_eq_sgt(i8 %x) { 2780; CHECK-LABEL: @or_eq_sgt( 2781; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 2782; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 2783; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 2784; CHECK-NEXT: ret i1 [[C]] 2785; 2786 %a = icmp eq i8 %x, 13 2787 %b = icmp sgt i8 %x, 17 2788 %c = or i1 %a, %b 2789 ret i1 %c 2790} 2791 2792; x == 13 || x <=s 17 2793 2794define i1 @or_eq_sle(i8 %x) { 2795; CHECK-LABEL: @or_eq_sle( 2796; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 2797; CHECK-NEXT: ret i1 [[B]] 2798; 2799 %a = icmp eq i8 %x, 13 2800 %b = icmp sle i8 %x, 17 2801 %c = or i1 %a, %b 2802 ret i1 %c 2803} 2804 2805; x == 13 || x <s 17 2806 2807define i1 @or_eq_slt(i8 %x) { 2808; CHECK-LABEL: @or_eq_slt( 2809; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 2810; CHECK-NEXT: ret i1 [[B]] 2811; 2812 %a = icmp eq i8 %x, 13 2813 %b = icmp slt i8 %x, 17 2814 %c = or i1 %a, %b 2815 ret i1 %c 2816} 2817 2818; x == 13 || x >=u 17 2819 2820define i1 @or_eq_uge(i8 %x) { 2821; CHECK-LABEL: @or_eq_uge( 2822; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 2823; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 2824; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 2825; CHECK-NEXT: ret i1 [[C]] 2826; 2827 %a = icmp eq i8 %x, 13 2828 %b = icmp uge i8 %x, 17 2829 %c = or i1 %a, %b 2830 ret i1 %c 2831} 2832 2833; x == 13 || x >u 17 2834 2835define i1 @or_eq_ugt(i8 %x) { 2836; CHECK-LABEL: @or_eq_ugt( 2837; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 13 2838; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 2839; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 2840; CHECK-NEXT: ret i1 [[C]] 2841; 2842 %a = icmp eq i8 %x, 13 2843 %b = icmp ugt i8 %x, 17 2844 %c = or i1 %a, %b 2845 ret i1 %c 2846} 2847 2848; x == 13 || x <=u 17 2849 2850define i1 @or_eq_ule(i8 %x) { 2851; CHECK-LABEL: @or_eq_ule( 2852; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 2853; CHECK-NEXT: ret i1 [[B]] 2854; 2855 %a = icmp eq i8 %x, 13 2856 %b = icmp ule i8 %x, 17 2857 %c = or i1 %a, %b 2858 ret i1 %c 2859} 2860 2861; x == 13 || x <u 17 2862 2863define i1 @or_eq_ult(i8 %x) { 2864; CHECK-LABEL: @or_eq_ult( 2865; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 2866; CHECK-NEXT: ret i1 [[B]] 2867; 2868 %a = icmp eq i8 %x, 13 2869 %b = icmp ult i8 %x, 17 2870 %c = or i1 %a, %b 2871 ret i1 %c 2872} 2873 2874; ne 2875; x != 13 || x == 17 2876 2877define i1 @or_ne_eq(i8 %x) { 2878; CHECK-LABEL: @or_ne_eq( 2879; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 2880; CHECK-NEXT: ret i1 [[A]] 2881; 2882 %a = icmp ne i8 %x, 13 2883 %b = icmp eq i8 %x, 17 2884 %c = or i1 %a, %b 2885 ret i1 %c 2886} 2887 2888; x != 13 || x != 17 2889 2890define i1 @or_ne_ne(i8 %x) { 2891; CHECK-LABEL: @or_ne_ne( 2892; CHECK-NEXT: ret i1 true 2893; 2894 %a = icmp ne i8 %x, 13 2895 %b = icmp ne i8 %x, 17 2896 %c = or i1 %a, %b 2897 ret i1 %c 2898} 2899 2900; x != 13 || x >=s 17 2901 2902define i1 @or_ne_sge(i8 %x) { 2903; CHECK-LABEL: @or_ne_sge( 2904; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 2905; CHECK-NEXT: ret i1 [[A]] 2906; 2907 %a = icmp ne i8 %x, 13 2908 %b = icmp sge i8 %x, 17 2909 %c = or i1 %a, %b 2910 ret i1 %c 2911} 2912 2913; x != 13 || x >s 17 2914 2915define i1 @or_ne_sgt(i8 %x) { 2916; CHECK-LABEL: @or_ne_sgt( 2917; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 2918; CHECK-NEXT: ret i1 [[A]] 2919; 2920 %a = icmp ne i8 %x, 13 2921 %b = icmp sgt i8 %x, 17 2922 %c = or i1 %a, %b 2923 ret i1 %c 2924} 2925 2926; x != 13 || x <=s 17 2927 2928define i1 @or_ne_sle(i8 %x) { 2929; CHECK-LABEL: @or_ne_sle( 2930; CHECK-NEXT: ret i1 true 2931; 2932 %a = icmp ne i8 %x, 13 2933 %b = icmp sle i8 %x, 17 2934 %c = or i1 %a, %b 2935 ret i1 %c 2936} 2937 2938; x != 13 || x <s 17 2939 2940define i1 @or_ne_slt(i8 %x) { 2941; CHECK-LABEL: @or_ne_slt( 2942; CHECK-NEXT: ret i1 true 2943; 2944 %a = icmp ne i8 %x, 13 2945 %b = icmp slt i8 %x, 17 2946 %c = or i1 %a, %b 2947 ret i1 %c 2948} 2949 2950; x != 13 || x >=u 17 2951 2952define i1 @or_ne_uge(i8 %x) { 2953; CHECK-LABEL: @or_ne_uge( 2954; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 2955; CHECK-NEXT: ret i1 [[A]] 2956; 2957 %a = icmp ne i8 %x, 13 2958 %b = icmp uge i8 %x, 17 2959 %c = or i1 %a, %b 2960 ret i1 %c 2961} 2962 2963; x != 13 || x >u 17 2964 2965define i1 @or_ne_ugt(i8 %x) { 2966; CHECK-LABEL: @or_ne_ugt( 2967; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 13 2968; CHECK-NEXT: ret i1 [[A]] 2969; 2970 %a = icmp ne i8 %x, 13 2971 %b = icmp ugt i8 %x, 17 2972 %c = or i1 %a, %b 2973 ret i1 %c 2974} 2975 2976; x != 13 || x <=u 17 2977 2978define i1 @or_ne_ule(i8 %x) { 2979; CHECK-LABEL: @or_ne_ule( 2980; CHECK-NEXT: ret i1 true 2981; 2982 %a = icmp ne i8 %x, 13 2983 %b = icmp ule i8 %x, 17 2984 %c = or i1 %a, %b 2985 ret i1 %c 2986} 2987 2988; x != 13 || x <u 17 2989 2990define i1 @or_ne_ult(i8 %x) { 2991; CHECK-LABEL: @or_ne_ult( 2992; CHECK-NEXT: ret i1 true 2993; 2994 %a = icmp ne i8 %x, 13 2995 %b = icmp ult i8 %x, 17 2996 %c = or i1 %a, %b 2997 ret i1 %c 2998} 2999 3000; sge 3001; x >=s 13 || x == 17 3002 3003define i1 @or_sge_eq(i8 %x) { 3004; CHECK-LABEL: @or_sge_eq( 3005; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 3006; CHECK-NEXT: ret i1 [[A]] 3007; 3008 %a = icmp sge i8 %x, 13 3009 %b = icmp eq i8 %x, 17 3010 %c = or i1 %a, %b 3011 ret i1 %c 3012} 3013 3014; x >=s 13 || x != 17 3015 3016define i1 @or_sge_ne(i8 %x) { 3017; CHECK-LABEL: @or_sge_ne( 3018; CHECK-NEXT: ret i1 true 3019; 3020 %a = icmp sge i8 %x, 13 3021 %b = icmp ne i8 %x, 17 3022 %c = or i1 %a, %b 3023 ret i1 %c 3024} 3025 3026; x >=s 13 || x >=s 17 3027 3028define i1 @or_sge_sge(i8 %x) { 3029; CHECK-LABEL: @or_sge_sge( 3030; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 3031; CHECK-NEXT: ret i1 [[A]] 3032; 3033 %a = icmp sge i8 %x, 13 3034 %b = icmp sge i8 %x, 17 3035 %c = or i1 %a, %b 3036 ret i1 %c 3037} 3038 3039; x >=s 13 || x >s 17 3040 3041define i1 @or_sge_sgt(i8 %x) { 3042; CHECK-LABEL: @or_sge_sgt( 3043; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 3044; CHECK-NEXT: ret i1 [[A]] 3045; 3046 %a = icmp sge i8 %x, 13 3047 %b = icmp sgt i8 %x, 17 3048 %c = or i1 %a, %b 3049 ret i1 %c 3050} 3051 3052; x >=s 13 || x <=s 17 3053 3054define i1 @or_sge_sle(i8 %x) { 3055; CHECK-LABEL: @or_sge_sle( 3056; CHECK-NEXT: ret i1 true 3057; 3058 %a = icmp sge i8 %x, 13 3059 %b = icmp sle i8 %x, 17 3060 %c = or i1 %a, %b 3061 ret i1 %c 3062} 3063 3064; x >=s 13 || x <s 17 3065 3066define i1 @or_sge_slt(i8 %x) { 3067; CHECK-LABEL: @or_sge_slt( 3068; CHECK-NEXT: ret i1 true 3069; 3070 %a = icmp sge i8 %x, 13 3071 %b = icmp slt i8 %x, 17 3072 %c = or i1 %a, %b 3073 ret i1 %c 3074} 3075 3076; x >=s 13 || x >=u 17 3077 3078define i1 @or_sge_uge(i8 %x) { 3079; CHECK-LABEL: @or_sge_uge( 3080; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 3081; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 3082; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3083; CHECK-NEXT: ret i1 [[C]] 3084; 3085 %a = icmp sge i8 %x, 13 3086 %b = icmp uge i8 %x, 17 3087 %c = or i1 %a, %b 3088 ret i1 %c 3089} 3090 3091; x >=s 13 || x >u 17 3092 3093define i1 @or_sge_ugt(i8 %x) { 3094; CHECK-LABEL: @or_sge_ugt( 3095; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 3096; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 3097; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3098; CHECK-NEXT: ret i1 [[C]] 3099; 3100 %a = icmp sge i8 %x, 13 3101 %b = icmp ugt i8 %x, 17 3102 %c = or i1 %a, %b 3103 ret i1 %c 3104} 3105 3106; x >=s 13 || x <=u 17 3107 3108define i1 @or_sge_ule(i8 %x) { 3109; CHECK-LABEL: @or_sge_ule( 3110; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 3111; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 3112; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3113; CHECK-NEXT: ret i1 [[C]] 3114; 3115 %a = icmp sge i8 %x, 13 3116 %b = icmp ule i8 %x, 17 3117 %c = or i1 %a, %b 3118 ret i1 %c 3119} 3120 3121; x >=s 13 || x <u 17 3122 3123define i1 @or_sge_ult(i8 %x) { 3124; CHECK-LABEL: @or_sge_ult( 3125; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 13 3126; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 3127; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3128; CHECK-NEXT: ret i1 [[C]] 3129; 3130 %a = icmp sge i8 %x, 13 3131 %b = icmp ult i8 %x, 17 3132 %c = or i1 %a, %b 3133 ret i1 %c 3134} 3135 3136; sgt 3137; x >s 13 || x == 17 3138 3139define i1 @or_sgt_eq(i8 %x) { 3140; CHECK-LABEL: @or_sgt_eq( 3141; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 3142; CHECK-NEXT: ret i1 [[A]] 3143; 3144 %a = icmp sgt i8 %x, 13 3145 %b = icmp eq i8 %x, 17 3146 %c = or i1 %a, %b 3147 ret i1 %c 3148} 3149 3150; x >s 13 || x != 17 3151 3152define i1 @or_sgt_ne(i8 %x) { 3153; CHECK-LABEL: @or_sgt_ne( 3154; CHECK-NEXT: ret i1 true 3155; 3156 %a = icmp sgt i8 %x, 13 3157 %b = icmp ne i8 %x, 17 3158 %c = or i1 %a, %b 3159 ret i1 %c 3160} 3161 3162; x >s 13 || x >=s 17 3163 3164define i1 @or_sgt_sge(i8 %x) { 3165; CHECK-LABEL: @or_sgt_sge( 3166; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 3167; CHECK-NEXT: ret i1 [[A]] 3168; 3169 %a = icmp sgt i8 %x, 13 3170 %b = icmp sge i8 %x, 17 3171 %c = or i1 %a, %b 3172 ret i1 %c 3173} 3174 3175; x >s 13 || x >s 17 3176 3177define i1 @or_sgt_sgt(i8 %x) { 3178; CHECK-LABEL: @or_sgt_sgt( 3179; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 3180; CHECK-NEXT: ret i1 [[A]] 3181; 3182 %a = icmp sgt i8 %x, 13 3183 %b = icmp sgt i8 %x, 17 3184 %c = or i1 %a, %b 3185 ret i1 %c 3186} 3187 3188; x >s 13 || x <=s 17 3189 3190define i1 @or_sgt_sle(i8 %x) { 3191; CHECK-LABEL: @or_sgt_sle( 3192; CHECK-NEXT: ret i1 true 3193; 3194 %a = icmp sgt i8 %x, 13 3195 %b = icmp sle i8 %x, 17 3196 %c = or i1 %a, %b 3197 ret i1 %c 3198} 3199 3200; x >s 13 || x <s 17 3201 3202define i1 @or_sgt_slt(i8 %x) { 3203; CHECK-LABEL: @or_sgt_slt( 3204; CHECK-NEXT: ret i1 true 3205; 3206 %a = icmp sgt i8 %x, 13 3207 %b = icmp slt i8 %x, 17 3208 %c = or i1 %a, %b 3209 ret i1 %c 3210} 3211 3212; x >s 13 || x >=u 17 3213 3214define i1 @or_sgt_uge(i8 %x) { 3215; CHECK-LABEL: @or_sgt_uge( 3216; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 3217; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 3218; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3219; CHECK-NEXT: ret i1 [[C]] 3220; 3221 %a = icmp sgt i8 %x, 13 3222 %b = icmp uge i8 %x, 17 3223 %c = or i1 %a, %b 3224 ret i1 %c 3225} 3226 3227; x >s 13 || x >u 17 3228 3229define i1 @or_sgt_ugt(i8 %x) { 3230; CHECK-LABEL: @or_sgt_ugt( 3231; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 3232; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 3233; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3234; CHECK-NEXT: ret i1 [[C]] 3235; 3236 %a = icmp sgt i8 %x, 13 3237 %b = icmp ugt i8 %x, 17 3238 %c = or i1 %a, %b 3239 ret i1 %c 3240} 3241 3242; x >s 13 || x <=u 17 3243 3244define i1 @or_sgt_ule(i8 %x) { 3245; CHECK-LABEL: @or_sgt_ule( 3246; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 3247; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 3248; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3249; CHECK-NEXT: ret i1 [[C]] 3250; 3251 %a = icmp sgt i8 %x, 13 3252 %b = icmp ule i8 %x, 17 3253 %c = or i1 %a, %b 3254 ret i1 %c 3255} 3256 3257; x >s 13 || x <u 17 3258 3259define i1 @or_sgt_ult(i8 %x) { 3260; CHECK-LABEL: @or_sgt_ult( 3261; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13 3262; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 3263; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3264; CHECK-NEXT: ret i1 [[C]] 3265; 3266 %a = icmp sgt i8 %x, 13 3267 %b = icmp ult i8 %x, 17 3268 %c = or i1 %a, %b 3269 ret i1 %c 3270} 3271 3272; sle 3273; x <=s 13 || x == 17 3274 3275define i1 @or_sle_eq(i8 %x) { 3276; CHECK-LABEL: @or_sle_eq( 3277; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 3278; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 3279; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3280; CHECK-NEXT: ret i1 [[C]] 3281; 3282 %a = icmp sle i8 %x, 13 3283 %b = icmp eq i8 %x, 17 3284 %c = or i1 %a, %b 3285 ret i1 %c 3286} 3287 3288; x <=s 13 || x != 17 3289 3290define i1 @or_sle_ne(i8 %x) { 3291; CHECK-LABEL: @or_sle_ne( 3292; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 3293; CHECK-NEXT: ret i1 [[B]] 3294; 3295 %a = icmp sle i8 %x, 13 3296 %b = icmp ne i8 %x, 17 3297 %c = or i1 %a, %b 3298 ret i1 %c 3299} 3300 3301; x <=s 13 || x >=s 17 3302 3303define i1 @or_sle_sge(i8 %x) { 3304; CHECK-LABEL: @or_sle_sge( 3305; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 3306; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 3307; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3308; CHECK-NEXT: ret i1 [[C]] 3309; 3310 %a = icmp sle i8 %x, 13 3311 %b = icmp sge i8 %x, 17 3312 %c = or i1 %a, %b 3313 ret i1 %c 3314} 3315 3316; x <=s 13 || x >s 17 3317 3318define i1 @or_sle_sgt(i8 %x) { 3319; CHECK-LABEL: @or_sle_sgt( 3320; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 3321; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 3322; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3323; CHECK-NEXT: ret i1 [[C]] 3324; 3325 %a = icmp sle i8 %x, 13 3326 %b = icmp sgt i8 %x, 17 3327 %c = or i1 %a, %b 3328 ret i1 %c 3329} 3330 3331; x <=s 13 || x <=s 17 3332 3333define i1 @or_sle_sle(i8 %x) { 3334; CHECK-LABEL: @or_sle_sle( 3335; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 3336; CHECK-NEXT: ret i1 [[B]] 3337; 3338 %a = icmp sle i8 %x, 13 3339 %b = icmp sle i8 %x, 17 3340 %c = or i1 %a, %b 3341 ret i1 %c 3342} 3343 3344; x <=s 13 || x <s 17 3345 3346define i1 @or_sle_slt(i8 %x) { 3347; CHECK-LABEL: @or_sle_slt( 3348; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 3349; CHECK-NEXT: ret i1 [[B]] 3350; 3351 %a = icmp sle i8 %x, 13 3352 %b = icmp slt i8 %x, 17 3353 %c = or i1 %a, %b 3354 ret i1 %c 3355} 3356 3357; x <=s 13 || x >=u 17 3358 3359define i1 @or_sle_uge(i8 %x) { 3360; CHECK-LABEL: @or_sle_uge( 3361; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 3362; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 3363; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3364; CHECK-NEXT: ret i1 [[C]] 3365; 3366 %a = icmp sle i8 %x, 13 3367 %b = icmp uge i8 %x, 17 3368 %c = or i1 %a, %b 3369 ret i1 %c 3370} 3371 3372; x <=s 13 || x >u 17 3373 3374define i1 @or_sle_ugt(i8 %x) { 3375; CHECK-LABEL: @or_sle_ugt( 3376; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 3377; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 3378; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3379; CHECK-NEXT: ret i1 [[C]] 3380; 3381 %a = icmp sle i8 %x, 13 3382 %b = icmp ugt i8 %x, 17 3383 %c = or i1 %a, %b 3384 ret i1 %c 3385} 3386 3387; x <=s 13 || x <=u 17 3388 3389define i1 @or_sle_ule(i8 %x) { 3390; CHECK-LABEL: @or_sle_ule( 3391; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 3392; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 3393; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3394; CHECK-NEXT: ret i1 [[C]] 3395; 3396 %a = icmp sle i8 %x, 13 3397 %b = icmp ule i8 %x, 17 3398 %c = or i1 %a, %b 3399 ret i1 %c 3400} 3401 3402; x <=s 13 || x <u 17 3403 3404define i1 @or_sle_ult(i8 %x) { 3405; CHECK-LABEL: @or_sle_ult( 3406; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 13 3407; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 3408; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3409; CHECK-NEXT: ret i1 [[C]] 3410; 3411 %a = icmp sle i8 %x, 13 3412 %b = icmp ult i8 %x, 17 3413 %c = or i1 %a, %b 3414 ret i1 %c 3415} 3416 3417; slt 3418; x <s 13 || x == 17 3419 3420define i1 @or_slt_eq(i8 %x) { 3421; CHECK-LABEL: @or_slt_eq( 3422; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 3423; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 3424; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3425; CHECK-NEXT: ret i1 [[C]] 3426; 3427 %a = icmp slt i8 %x, 13 3428 %b = icmp eq i8 %x, 17 3429 %c = or i1 %a, %b 3430 ret i1 %c 3431} 3432 3433; x <s 13 || x != 17 3434 3435define i1 @or_slt_ne(i8 %x) { 3436; CHECK-LABEL: @or_slt_ne( 3437; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 3438; CHECK-NEXT: ret i1 [[B]] 3439; 3440 %a = icmp slt i8 %x, 13 3441 %b = icmp ne i8 %x, 17 3442 %c = or i1 %a, %b 3443 ret i1 %c 3444} 3445 3446; x <s 13 || x >=s 17 3447 3448define i1 @or_slt_sge(i8 %x) { 3449; CHECK-LABEL: @or_slt_sge( 3450; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 3451; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 3452; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3453; CHECK-NEXT: ret i1 [[C]] 3454; 3455 %a = icmp slt i8 %x, 13 3456 %b = icmp sge i8 %x, 17 3457 %c = or i1 %a, %b 3458 ret i1 %c 3459} 3460 3461; x <s 13 || x >s 17 3462 3463define i1 @or_slt_sgt(i8 %x) { 3464; CHECK-LABEL: @or_slt_sgt( 3465; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 3466; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 3467; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3468; CHECK-NEXT: ret i1 [[C]] 3469; 3470 %a = icmp slt i8 %x, 13 3471 %b = icmp sgt i8 %x, 17 3472 %c = or i1 %a, %b 3473 ret i1 %c 3474} 3475 3476; x <s 13 || x <=s 17 3477 3478define i1 @or_slt_sle(i8 %x) { 3479; CHECK-LABEL: @or_slt_sle( 3480; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 3481; CHECK-NEXT: ret i1 [[B]] 3482; 3483 %a = icmp slt i8 %x, 13 3484 %b = icmp sle i8 %x, 17 3485 %c = or i1 %a, %b 3486 ret i1 %c 3487} 3488 3489; x <s 13 || x <s 17 3490 3491define i1 @or_slt_slt(i8 %x) { 3492; CHECK-LABEL: @or_slt_slt( 3493; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 3494; CHECK-NEXT: ret i1 [[B]] 3495; 3496 %a = icmp slt i8 %x, 13 3497 %b = icmp slt i8 %x, 17 3498 %c = or i1 %a, %b 3499 ret i1 %c 3500} 3501 3502; x <s 13 || x >=u 17 3503 3504define i1 @or_slt_uge(i8 %x) { 3505; CHECK-LABEL: @or_slt_uge( 3506; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 3507; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 3508; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3509; CHECK-NEXT: ret i1 [[C]] 3510; 3511 %a = icmp slt i8 %x, 13 3512 %b = icmp uge i8 %x, 17 3513 %c = or i1 %a, %b 3514 ret i1 %c 3515} 3516 3517; x <s 13 || x >u 17 3518 3519define i1 @or_slt_ugt(i8 %x) { 3520; CHECK-LABEL: @or_slt_ugt( 3521; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 3522; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 3523; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3524; CHECK-NEXT: ret i1 [[C]] 3525; 3526 %a = icmp slt i8 %x, 13 3527 %b = icmp ugt i8 %x, 17 3528 %c = or i1 %a, %b 3529 ret i1 %c 3530} 3531 3532; x <s 13 || x <=u 17 3533 3534define i1 @or_slt_ule(i8 %x) { 3535; CHECK-LABEL: @or_slt_ule( 3536; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 3537; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 3538; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3539; CHECK-NEXT: ret i1 [[C]] 3540; 3541 %a = icmp slt i8 %x, 13 3542 %b = icmp ule i8 %x, 17 3543 %c = or i1 %a, %b 3544 ret i1 %c 3545} 3546 3547; x <s 13 || x <u 17 3548 3549define i1 @or_slt_ult(i8 %x) { 3550; CHECK-LABEL: @or_slt_ult( 3551; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 13 3552; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 3553; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3554; CHECK-NEXT: ret i1 [[C]] 3555; 3556 %a = icmp slt i8 %x, 13 3557 %b = icmp ult i8 %x, 17 3558 %c = or i1 %a, %b 3559 ret i1 %c 3560} 3561 3562; uge 3563; x >=u 13 || x == 17 3564 3565define i1 @or_uge_eq(i8 %x) { 3566; CHECK-LABEL: @or_uge_eq( 3567; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 3568; CHECK-NEXT: ret i1 [[A]] 3569; 3570 %a = icmp uge i8 %x, 13 3571 %b = icmp eq i8 %x, 17 3572 %c = or i1 %a, %b 3573 ret i1 %c 3574} 3575 3576; x >=u 13 || x != 17 3577 3578define i1 @or_uge_ne(i8 %x) { 3579; CHECK-LABEL: @or_uge_ne( 3580; CHECK-NEXT: ret i1 true 3581; 3582 %a = icmp uge i8 %x, 13 3583 %b = icmp ne i8 %x, 17 3584 %c = or i1 %a, %b 3585 ret i1 %c 3586} 3587 3588; x >=u 13 || x >=s 17 3589 3590define i1 @or_uge_sge(i8 %x) { 3591; CHECK-LABEL: @or_uge_sge( 3592; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 3593; CHECK-NEXT: ret i1 [[A]] 3594; 3595 %a = icmp uge i8 %x, 13 3596 %b = icmp sge i8 %x, 17 3597 %c = or i1 %a, %b 3598 ret i1 %c 3599} 3600 3601; x >=u 13 || x >s 17 3602 3603define i1 @or_uge_sgt(i8 %x) { 3604; CHECK-LABEL: @or_uge_sgt( 3605; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 3606; CHECK-NEXT: ret i1 [[A]] 3607; 3608 %a = icmp uge i8 %x, 13 3609 %b = icmp sgt i8 %x, 17 3610 %c = or i1 %a, %b 3611 ret i1 %c 3612} 3613 3614; x >=u 13 || x <=s 17 3615 3616define i1 @or_uge_sle(i8 %x) { 3617; CHECK-LABEL: @or_uge_sle( 3618; CHECK-NEXT: ret i1 true 3619; 3620 %a = icmp uge i8 %x, 13 3621 %b = icmp sle i8 %x, 17 3622 %c = or i1 %a, %b 3623 ret i1 %c 3624} 3625 3626; x >=u 13 || x <s 17 3627 3628define i1 @or_uge_slt(i8 %x) { 3629; CHECK-LABEL: @or_uge_slt( 3630; CHECK-NEXT: ret i1 true 3631; 3632 %a = icmp uge i8 %x, 13 3633 %b = icmp slt i8 %x, 17 3634 %c = or i1 %a, %b 3635 ret i1 %c 3636} 3637 3638; x >=u 13 || x >=u 17 3639 3640define i1 @or_uge_uge(i8 %x) { 3641; CHECK-LABEL: @or_uge_uge( 3642; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 3643; CHECK-NEXT: ret i1 [[A]] 3644; 3645 %a = icmp uge i8 %x, 13 3646 %b = icmp uge i8 %x, 17 3647 %c = or i1 %a, %b 3648 ret i1 %c 3649} 3650 3651; x >=u 13 || x >u 17 3652 3653define i1 @or_uge_ugt(i8 %x) { 3654; CHECK-LABEL: @or_uge_ugt( 3655; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 13 3656; CHECK-NEXT: ret i1 [[A]] 3657; 3658 %a = icmp uge i8 %x, 13 3659 %b = icmp ugt i8 %x, 17 3660 %c = or i1 %a, %b 3661 ret i1 %c 3662} 3663 3664; x >=u 13 || x <=u 17 3665 3666define i1 @or_uge_ule(i8 %x) { 3667; CHECK-LABEL: @or_uge_ule( 3668; CHECK-NEXT: ret i1 true 3669; 3670 %a = icmp uge i8 %x, 13 3671 %b = icmp ule i8 %x, 17 3672 %c = or i1 %a, %b 3673 ret i1 %c 3674} 3675 3676; x >=u 13 || x <u 17 3677 3678define i1 @or_uge_ult(i8 %x) { 3679; CHECK-LABEL: @or_uge_ult( 3680; CHECK-NEXT: ret i1 true 3681; 3682 %a = icmp uge i8 %x, 13 3683 %b = icmp ult i8 %x, 17 3684 %c = or i1 %a, %b 3685 ret i1 %c 3686} 3687 3688; ugt 3689; x >u 13 || x == 17 3690 3691define i1 @or_ugt_eq(i8 %x) { 3692; CHECK-LABEL: @or_ugt_eq( 3693; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 3694; CHECK-NEXT: ret i1 [[A]] 3695; 3696 %a = icmp ugt i8 %x, 13 3697 %b = icmp eq i8 %x, 17 3698 %c = or i1 %a, %b 3699 ret i1 %c 3700} 3701 3702; x >u 13 || x != 17 3703 3704define i1 @or_ugt_ne(i8 %x) { 3705; CHECK-LABEL: @or_ugt_ne( 3706; CHECK-NEXT: ret i1 true 3707; 3708 %a = icmp ugt i8 %x, 13 3709 %b = icmp ne i8 %x, 17 3710 %c = or i1 %a, %b 3711 ret i1 %c 3712} 3713 3714; x >u 13 || x >=s 17 3715 3716define i1 @or_ugt_sge(i8 %x) { 3717; CHECK-LABEL: @or_ugt_sge( 3718; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 3719; CHECK-NEXT: ret i1 [[A]] 3720; 3721 %a = icmp ugt i8 %x, 13 3722 %b = icmp sge i8 %x, 17 3723 %c = or i1 %a, %b 3724 ret i1 %c 3725} 3726 3727; x >u 13 || x >s 17 3728 3729define i1 @or_ugt_sgt(i8 %x) { 3730; CHECK-LABEL: @or_ugt_sgt( 3731; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 3732; CHECK-NEXT: ret i1 [[A]] 3733; 3734 %a = icmp ugt i8 %x, 13 3735 %b = icmp sgt i8 %x, 17 3736 %c = or i1 %a, %b 3737 ret i1 %c 3738} 3739 3740; x >u 13 || x <=s 17 3741 3742define i1 @or_ugt_sle(i8 %x) { 3743; CHECK-LABEL: @or_ugt_sle( 3744; CHECK-NEXT: ret i1 true 3745; 3746 %a = icmp ugt i8 %x, 13 3747 %b = icmp sle i8 %x, 17 3748 %c = or i1 %a, %b 3749 ret i1 %c 3750} 3751 3752; x >u 13 || x <s 17 3753 3754define i1 @or_ugt_slt(i8 %x) { 3755; CHECK-LABEL: @or_ugt_slt( 3756; CHECK-NEXT: ret i1 true 3757; 3758 %a = icmp ugt i8 %x, 13 3759 %b = icmp slt i8 %x, 17 3760 %c = or i1 %a, %b 3761 ret i1 %c 3762} 3763 3764; x >u 13 || x >=u 17 3765 3766define i1 @or_ugt_uge(i8 %x) { 3767; CHECK-LABEL: @or_ugt_uge( 3768; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 3769; CHECK-NEXT: ret i1 [[A]] 3770; 3771 %a = icmp ugt i8 %x, 13 3772 %b = icmp uge i8 %x, 17 3773 %c = or i1 %a, %b 3774 ret i1 %c 3775} 3776 3777; x >u 13 || x >u 17 3778 3779define i1 @or_ugt_ugt(i8 %x) { 3780; CHECK-LABEL: @or_ugt_ugt( 3781; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13 3782; CHECK-NEXT: ret i1 [[A]] 3783; 3784 %a = icmp ugt i8 %x, 13 3785 %b = icmp ugt i8 %x, 17 3786 %c = or i1 %a, %b 3787 ret i1 %c 3788} 3789 3790; x >u 13 || x <=u 17 3791 3792define i1 @or_ugt_ule(i8 %x) { 3793; CHECK-LABEL: @or_ugt_ule( 3794; CHECK-NEXT: ret i1 true 3795; 3796 %a = icmp ugt i8 %x, 13 3797 %b = icmp ule i8 %x, 17 3798 %c = or i1 %a, %b 3799 ret i1 %c 3800} 3801 3802; x >u 13 || x <u 17 3803 3804define i1 @or_ugt_ult(i8 %x) { 3805; CHECK-LABEL: @or_ugt_ult( 3806; CHECK-NEXT: ret i1 true 3807; 3808 %a = icmp ugt i8 %x, 13 3809 %b = icmp ult i8 %x, 17 3810 %c = or i1 %a, %b 3811 ret i1 %c 3812} 3813 3814; ule 3815; x <=u 13 || x == 17 3816 3817define i1 @or_ule_eq(i8 %x) { 3818; CHECK-LABEL: @or_ule_eq( 3819; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 3820; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 3821; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3822; CHECK-NEXT: ret i1 [[C]] 3823; 3824 %a = icmp ule i8 %x, 13 3825 %b = icmp eq i8 %x, 17 3826 %c = or i1 %a, %b 3827 ret i1 %c 3828} 3829 3830; x <=u 13 || x != 17 3831 3832define i1 @or_ule_ne(i8 %x) { 3833; CHECK-LABEL: @or_ule_ne( 3834; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 3835; CHECK-NEXT: ret i1 [[B]] 3836; 3837 %a = icmp ule i8 %x, 13 3838 %b = icmp ne i8 %x, 17 3839 %c = or i1 %a, %b 3840 ret i1 %c 3841} 3842 3843; x <=u 13 || x >=s 17 3844 3845define i1 @or_ule_sge(i8 %x) { 3846; CHECK-LABEL: @or_ule_sge( 3847; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 3848; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 3849; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3850; CHECK-NEXT: ret i1 [[C]] 3851; 3852 %a = icmp ule i8 %x, 13 3853 %b = icmp sge i8 %x, 17 3854 %c = or i1 %a, %b 3855 ret i1 %c 3856} 3857 3858; x <=u 13 || x >s 17 3859 3860define i1 @or_ule_sgt(i8 %x) { 3861; CHECK-LABEL: @or_ule_sgt( 3862; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 3863; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 3864; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3865; CHECK-NEXT: ret i1 [[C]] 3866; 3867 %a = icmp ule i8 %x, 13 3868 %b = icmp sgt i8 %x, 17 3869 %c = or i1 %a, %b 3870 ret i1 %c 3871} 3872 3873; x <=u 13 || x <=s 17 3874 3875define i1 @or_ule_sle(i8 %x) { 3876; CHECK-LABEL: @or_ule_sle( 3877; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 3878; CHECK-NEXT: ret i1 [[B]] 3879; 3880 %a = icmp ule i8 %x, 13 3881 %b = icmp sle i8 %x, 17 3882 %c = or i1 %a, %b 3883 ret i1 %c 3884} 3885 3886; x <=u 13 || x <s 17 3887 3888define i1 @or_ule_slt(i8 %x) { 3889; CHECK-LABEL: @or_ule_slt( 3890; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 3891; CHECK-NEXT: ret i1 [[B]] 3892; 3893 %a = icmp ule i8 %x, 13 3894 %b = icmp slt i8 %x, 17 3895 %c = or i1 %a, %b 3896 ret i1 %c 3897} 3898 3899; x <=u 13 || x >=u 17 3900 3901define i1 @or_ule_uge(i8 %x) { 3902; CHECK-LABEL: @or_ule_uge( 3903; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 3904; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 3905; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3906; CHECK-NEXT: ret i1 [[C]] 3907; 3908 %a = icmp ule i8 %x, 13 3909 %b = icmp uge i8 %x, 17 3910 %c = or i1 %a, %b 3911 ret i1 %c 3912} 3913 3914; x <=u 13 || x >u 17 3915 3916define i1 @or_ule_ugt(i8 %x) { 3917; CHECK-LABEL: @or_ule_ugt( 3918; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 13 3919; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 3920; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3921; CHECK-NEXT: ret i1 [[C]] 3922; 3923 %a = icmp ule i8 %x, 13 3924 %b = icmp ugt i8 %x, 17 3925 %c = or i1 %a, %b 3926 ret i1 %c 3927} 3928 3929; x <=u 13 || x <=u 17 3930 3931define i1 @or_ule_ule(i8 %x) { 3932; CHECK-LABEL: @or_ule_ule( 3933; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 3934; CHECK-NEXT: ret i1 [[B]] 3935; 3936 %a = icmp ule i8 %x, 13 3937 %b = icmp ule i8 %x, 17 3938 %c = or i1 %a, %b 3939 ret i1 %c 3940} 3941 3942; x <=u 13 || x <u 17 3943 3944define i1 @or_ule_ult(i8 %x) { 3945; CHECK-LABEL: @or_ule_ult( 3946; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 3947; CHECK-NEXT: ret i1 [[B]] 3948; 3949 %a = icmp ule i8 %x, 13 3950 %b = icmp ult i8 %x, 17 3951 %c = or i1 %a, %b 3952 ret i1 %c 3953} 3954 3955; ult 3956; x <u 13 || x == 17 3957 3958define i1 @or_ult_eq(i8 %x) { 3959; CHECK-LABEL: @or_ult_eq( 3960; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 3961; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 3962; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3963; CHECK-NEXT: ret i1 [[C]] 3964; 3965 %a = icmp ult i8 %x, 13 3966 %b = icmp eq i8 %x, 17 3967 %c = or i1 %a, %b 3968 ret i1 %c 3969} 3970 3971; x <u 13 || x != 17 3972 3973define i1 @or_ult_ne(i8 %x) { 3974; CHECK-LABEL: @or_ult_ne( 3975; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 3976; CHECK-NEXT: ret i1 [[B]] 3977; 3978 %a = icmp ult i8 %x, 13 3979 %b = icmp ne i8 %x, 17 3980 %c = or i1 %a, %b 3981 ret i1 %c 3982} 3983 3984; x <u 13 || x >=s 17 3985 3986define i1 @or_ult_sge(i8 %x) { 3987; CHECK-LABEL: @or_ult_sge( 3988; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 3989; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 3990; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 3991; CHECK-NEXT: ret i1 [[C]] 3992; 3993 %a = icmp ult i8 %x, 13 3994 %b = icmp sge i8 %x, 17 3995 %c = or i1 %a, %b 3996 ret i1 %c 3997} 3998 3999; x <u 13 || x >s 17 4000 4001define i1 @or_ult_sgt(i8 %x) { 4002; CHECK-LABEL: @or_ult_sgt( 4003; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 4004; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 4005; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4006; CHECK-NEXT: ret i1 [[C]] 4007; 4008 %a = icmp ult i8 %x, 13 4009 %b = icmp sgt i8 %x, 17 4010 %c = or i1 %a, %b 4011 ret i1 %c 4012} 4013 4014; x <u 13 || x <=s 17 4015 4016define i1 @or_ult_sle(i8 %x) { 4017; CHECK-LABEL: @or_ult_sle( 4018; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X:%.*]], 17 4019; CHECK-NEXT: ret i1 [[B]] 4020; 4021 %a = icmp ult i8 %x, 13 4022 %b = icmp sle i8 %x, 17 4023 %c = or i1 %a, %b 4024 ret i1 %c 4025} 4026 4027; x <u 13 || x <s 17 4028 4029define i1 @or_ult_slt(i8 %x) { 4030; CHECK-LABEL: @or_ult_slt( 4031; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X:%.*]], 17 4032; CHECK-NEXT: ret i1 [[B]] 4033; 4034 %a = icmp ult i8 %x, 13 4035 %b = icmp slt i8 %x, 17 4036 %c = or i1 %a, %b 4037 ret i1 %c 4038} 4039 4040; x <u 13 || x >=u 17 4041 4042define i1 @or_ult_uge(i8 %x) { 4043; CHECK-LABEL: @or_ult_uge( 4044; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 4045; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X]], 17 4046; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4047; CHECK-NEXT: ret i1 [[C]] 4048; 4049 %a = icmp ult i8 %x, 13 4050 %b = icmp uge i8 %x, 17 4051 %c = or i1 %a, %b 4052 ret i1 %c 4053} 4054 4055; x <u 13 || x >u 17 4056 4057define i1 @or_ult_ugt(i8 %x) { 4058; CHECK-LABEL: @or_ult_ugt( 4059; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 13 4060; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X]], 17 4061; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4062; CHECK-NEXT: ret i1 [[C]] 4063; 4064 %a = icmp ult i8 %x, 13 4065 %b = icmp ugt i8 %x, 17 4066 %c = or i1 %a, %b 4067 ret i1 %c 4068} 4069 4070; x <u 13 || x <=u 17 4071 4072define i1 @or_ult_ule(i8 %x) { 4073; CHECK-LABEL: @or_ult_ule( 4074; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X:%.*]], 17 4075; CHECK-NEXT: ret i1 [[B]] 4076; 4077 %a = icmp ult i8 %x, 13 4078 %b = icmp ule i8 %x, 17 4079 %c = or i1 %a, %b 4080 ret i1 %c 4081} 4082 4083; x <u 13 || x <u 17 4084 4085define i1 @or_ult_ult(i8 %x) { 4086; CHECK-LABEL: @or_ult_ult( 4087; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X:%.*]], 17 4088; CHECK-NEXT: ret i1 [[B]] 4089; 4090 %a = icmp ult i8 %x, 13 4091 %b = icmp ult i8 %x, 17 4092 %c = or i1 %a, %b 4093 ret i1 %c 4094} 4095 4096; eq 4097; x == 23 || x == 17 4098 4099define i1 @or_eq_eq_swap(i8 %x) { 4100; CHECK-LABEL: @or_eq_eq_swap( 4101; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 4102; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 4103; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4104; CHECK-NEXT: ret i1 [[C]] 4105; 4106 %a = icmp eq i8 %x, 23 4107 %b = icmp eq i8 %x, 17 4108 %c = or i1 %a, %b 4109 ret i1 %c 4110} 4111 4112; x == 23 || x != 17 4113 4114define i1 @or_eq_ne_swap(i8 %x) { 4115; CHECK-LABEL: @or_eq_ne_swap( 4116; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 4117; CHECK-NEXT: ret i1 [[B]] 4118; 4119 %a = icmp eq i8 %x, 23 4120 %b = icmp ne i8 %x, 17 4121 %c = or i1 %a, %b 4122 ret i1 %c 4123} 4124 4125; x == 23 || x >=s 17 4126 4127define i1 @or_eq_sge_swap(i8 %x) { 4128; CHECK-LABEL: @or_eq_sge_swap( 4129; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 4130; CHECK-NEXT: ret i1 [[B]] 4131; 4132 %a = icmp eq i8 %x, 23 4133 %b = icmp sge i8 %x, 17 4134 %c = or i1 %a, %b 4135 ret i1 %c 4136} 4137 4138; x == 23 || x >s 17 4139 4140define i1 @or_eq_sgt_swap(i8 %x) { 4141; CHECK-LABEL: @or_eq_sgt_swap( 4142; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 4143; CHECK-NEXT: ret i1 [[B]] 4144; 4145 %a = icmp eq i8 %x, 23 4146 %b = icmp sgt i8 %x, 17 4147 %c = or i1 %a, %b 4148 ret i1 %c 4149} 4150 4151; x == 23 || x <=s 17 4152 4153define i1 @or_eq_sle_swap(i8 %x) { 4154; CHECK-LABEL: @or_eq_sle_swap( 4155; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 4156; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 4157; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4158; CHECK-NEXT: ret i1 [[C]] 4159; 4160 %a = icmp eq i8 %x, 23 4161 %b = icmp sle i8 %x, 17 4162 %c = or i1 %a, %b 4163 ret i1 %c 4164} 4165 4166; x == 23 || x <s 17 4167 4168define i1 @or_eq_slt_swap(i8 %x) { 4169; CHECK-LABEL: @or_eq_slt_swap( 4170; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 4171; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 4172; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4173; CHECK-NEXT: ret i1 [[C]] 4174; 4175 %a = icmp eq i8 %x, 23 4176 %b = icmp slt i8 %x, 17 4177 %c = or i1 %a, %b 4178 ret i1 %c 4179} 4180 4181; x == 23 || x >=u 17 4182 4183define i1 @or_eq_uge_swap(i8 %x) { 4184; CHECK-LABEL: @or_eq_uge_swap( 4185; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 4186; CHECK-NEXT: ret i1 [[B]] 4187; 4188 %a = icmp eq i8 %x, 23 4189 %b = icmp uge i8 %x, 17 4190 %c = or i1 %a, %b 4191 ret i1 %c 4192} 4193 4194; x == 23 || x >u 17 4195 4196define i1 @or_eq_ugt_swap(i8 %x) { 4197; CHECK-LABEL: @or_eq_ugt_swap( 4198; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 4199; CHECK-NEXT: ret i1 [[B]] 4200; 4201 %a = icmp eq i8 %x, 23 4202 %b = icmp ugt i8 %x, 17 4203 %c = or i1 %a, %b 4204 ret i1 %c 4205} 4206 4207; x == 23 || x <=u 17 4208 4209define i1 @or_eq_ule_swap(i8 %x) { 4210; CHECK-LABEL: @or_eq_ule_swap( 4211; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 4212; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 4213; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4214; CHECK-NEXT: ret i1 [[C]] 4215; 4216 %a = icmp eq i8 %x, 23 4217 %b = icmp ule i8 %x, 17 4218 %c = or i1 %a, %b 4219 ret i1 %c 4220} 4221 4222; x == 23 || x <u 17 4223 4224define i1 @or_eq_ult_swap(i8 %x) { 4225; CHECK-LABEL: @or_eq_ult_swap( 4226; CHECK-NEXT: [[A:%.*]] = icmp eq i8 [[X:%.*]], 23 4227; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 4228; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4229; CHECK-NEXT: ret i1 [[C]] 4230; 4231 %a = icmp eq i8 %x, 23 4232 %b = icmp ult i8 %x, 17 4233 %c = or i1 %a, %b 4234 ret i1 %c 4235} 4236 4237; ne 4238; x != 23 || x == 17 4239 4240define i1 @or_ne_eq_swap(i8 %x) { 4241; CHECK-LABEL: @or_ne_eq_swap( 4242; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 4243; CHECK-NEXT: ret i1 [[A]] 4244; 4245 %a = icmp ne i8 %x, 23 4246 %b = icmp eq i8 %x, 17 4247 %c = or i1 %a, %b 4248 ret i1 %c 4249} 4250 4251; x != 23 || x != 17 4252 4253define i1 @or_ne_ne_swap(i8 %x) { 4254; CHECK-LABEL: @or_ne_ne_swap( 4255; CHECK-NEXT: ret i1 true 4256; 4257 %a = icmp ne i8 %x, 23 4258 %b = icmp ne i8 %x, 17 4259 %c = or i1 %a, %b 4260 ret i1 %c 4261} 4262 4263; x != 23 || x >=s 17 4264 4265define i1 @or_ne_sge_swap(i8 %x) { 4266; CHECK-LABEL: @or_ne_sge_swap( 4267; CHECK-NEXT: ret i1 true 4268; 4269 %a = icmp ne i8 %x, 23 4270 %b = icmp sge i8 %x, 17 4271 %c = or i1 %a, %b 4272 ret i1 %c 4273} 4274 4275; x != 23 || x >s 17 4276 4277define i1 @or_ne_sgt_swap(i8 %x) { 4278; CHECK-LABEL: @or_ne_sgt_swap( 4279; CHECK-NEXT: ret i1 true 4280; 4281 %a = icmp ne i8 %x, 23 4282 %b = icmp sgt i8 %x, 17 4283 %c = or i1 %a, %b 4284 ret i1 %c 4285} 4286 4287; x != 23 || x <=s 17 4288 4289define i1 @or_ne_sle_swap(i8 %x) { 4290; CHECK-LABEL: @or_ne_sle_swap( 4291; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 4292; CHECK-NEXT: ret i1 [[A]] 4293; 4294 %a = icmp ne i8 %x, 23 4295 %b = icmp sle i8 %x, 17 4296 %c = or i1 %a, %b 4297 ret i1 %c 4298} 4299 4300; x != 23 || x <s 17 4301 4302define i1 @or_ne_slt_swap(i8 %x) { 4303; CHECK-LABEL: @or_ne_slt_swap( 4304; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 4305; CHECK-NEXT: ret i1 [[A]] 4306; 4307 %a = icmp ne i8 %x, 23 4308 %b = icmp slt i8 %x, 17 4309 %c = or i1 %a, %b 4310 ret i1 %c 4311} 4312 4313; x != 23 || x >=u 17 4314 4315define i1 @or_ne_uge_swap(i8 %x) { 4316; CHECK-LABEL: @or_ne_uge_swap( 4317; CHECK-NEXT: ret i1 true 4318; 4319 %a = icmp ne i8 %x, 23 4320 %b = icmp uge i8 %x, 17 4321 %c = or i1 %a, %b 4322 ret i1 %c 4323} 4324 4325; x != 23 || x >u 17 4326 4327define i1 @or_ne_ugt_swap(i8 %x) { 4328; CHECK-LABEL: @or_ne_ugt_swap( 4329; CHECK-NEXT: ret i1 true 4330; 4331 %a = icmp ne i8 %x, 23 4332 %b = icmp ugt i8 %x, 17 4333 %c = or i1 %a, %b 4334 ret i1 %c 4335} 4336 4337; x != 23 || x <=u 17 4338 4339define i1 @or_ne_ule_swap(i8 %x) { 4340; CHECK-LABEL: @or_ne_ule_swap( 4341; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 4342; CHECK-NEXT: ret i1 [[A]] 4343; 4344 %a = icmp ne i8 %x, 23 4345 %b = icmp ule i8 %x, 17 4346 %c = or i1 %a, %b 4347 ret i1 %c 4348} 4349 4350; x != 23 || x <u 17 4351 4352define i1 @or_ne_ult_swap(i8 %x) { 4353; CHECK-LABEL: @or_ne_ult_swap( 4354; CHECK-NEXT: [[A:%.*]] = icmp ne i8 [[X:%.*]], 23 4355; CHECK-NEXT: ret i1 [[A]] 4356; 4357 %a = icmp ne i8 %x, 23 4358 %b = icmp ult i8 %x, 17 4359 %c = or i1 %a, %b 4360 ret i1 %c 4361} 4362 4363; sge 4364; x >=s 23 || x == 17 4365 4366define i1 @or_sge_eq_swap(i8 %x) { 4367; CHECK-LABEL: @or_sge_eq_swap( 4368; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 4369; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 4370; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4371; CHECK-NEXT: ret i1 [[C]] 4372; 4373 %a = icmp sge i8 %x, 23 4374 %b = icmp eq i8 %x, 17 4375 %c = or i1 %a, %b 4376 ret i1 %c 4377} 4378 4379; x >=s 23 || x != 17 4380 4381define i1 @or_sge_ne_swap(i8 %x) { 4382; CHECK-LABEL: @or_sge_ne_swap( 4383; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 4384; CHECK-NEXT: ret i1 [[B]] 4385; 4386 %a = icmp sge i8 %x, 23 4387 %b = icmp ne i8 %x, 17 4388 %c = or i1 %a, %b 4389 ret i1 %c 4390} 4391 4392; x >=s 23 || x >=s 17 4393 4394define i1 @or_sge_sge_swap(i8 %x) { 4395; CHECK-LABEL: @or_sge_sge_swap( 4396; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 4397; CHECK-NEXT: ret i1 [[B]] 4398; 4399 %a = icmp sge i8 %x, 23 4400 %b = icmp sge i8 %x, 17 4401 %c = or i1 %a, %b 4402 ret i1 %c 4403} 4404 4405; x >=s 23 || x >s 17 4406 4407define i1 @or_sge_sgt_swap(i8 %x) { 4408; CHECK-LABEL: @or_sge_sgt_swap( 4409; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 4410; CHECK-NEXT: ret i1 [[B]] 4411; 4412 %a = icmp sge i8 %x, 23 4413 %b = icmp sgt i8 %x, 17 4414 %c = or i1 %a, %b 4415 ret i1 %c 4416} 4417 4418; x >=s 23 || x <=s 17 4419 4420define i1 @or_sge_sle_swap(i8 %x) { 4421; CHECK-LABEL: @or_sge_sle_swap( 4422; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 4423; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 4424; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4425; CHECK-NEXT: ret i1 [[C]] 4426; 4427 %a = icmp sge i8 %x, 23 4428 %b = icmp sle i8 %x, 17 4429 %c = or i1 %a, %b 4430 ret i1 %c 4431} 4432 4433; x >=s 23 || x <s 17 4434 4435define i1 @or_sge_slt_swap(i8 %x) { 4436; CHECK-LABEL: @or_sge_slt_swap( 4437; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 4438; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 4439; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4440; CHECK-NEXT: ret i1 [[C]] 4441; 4442 %a = icmp sge i8 %x, 23 4443 %b = icmp slt i8 %x, 17 4444 %c = or i1 %a, %b 4445 ret i1 %c 4446} 4447 4448; x >=s 23 || x >=u 17 4449 4450define i1 @or_sge_uge_swap(i8 %x) { 4451; CHECK-LABEL: @or_sge_uge_swap( 4452; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 4453; CHECK-NEXT: ret i1 [[B]] 4454; 4455 %a = icmp sge i8 %x, 23 4456 %b = icmp uge i8 %x, 17 4457 %c = or i1 %a, %b 4458 ret i1 %c 4459} 4460 4461; x >=s 23 || x >u 17 4462 4463define i1 @or_sge_ugt_swap(i8 %x) { 4464; CHECK-LABEL: @or_sge_ugt_swap( 4465; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 4466; CHECK-NEXT: ret i1 [[B]] 4467; 4468 %a = icmp sge i8 %x, 23 4469 %b = icmp ugt i8 %x, 17 4470 %c = or i1 %a, %b 4471 ret i1 %c 4472} 4473 4474; x >=s 23 || x <=u 17 4475 4476define i1 @or_sge_ule_swap(i8 %x) { 4477; CHECK-LABEL: @or_sge_ule_swap( 4478; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 4479; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 4480; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4481; CHECK-NEXT: ret i1 [[C]] 4482; 4483 %a = icmp sge i8 %x, 23 4484 %b = icmp ule i8 %x, 17 4485 %c = or i1 %a, %b 4486 ret i1 %c 4487} 4488 4489; x >=s 23 || x <u 17 4490 4491define i1 @or_sge_ult_swap(i8 %x) { 4492; CHECK-LABEL: @or_sge_ult_swap( 4493; CHECK-NEXT: [[A:%.*]] = icmp sge i8 [[X:%.*]], 23 4494; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 4495; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4496; CHECK-NEXT: ret i1 [[C]] 4497; 4498 %a = icmp sge i8 %x, 23 4499 %b = icmp ult i8 %x, 17 4500 %c = or i1 %a, %b 4501 ret i1 %c 4502} 4503 4504; sgt 4505; x >s 23 || x == 17 4506 4507define i1 @or_sgt_eq_swap(i8 %x) { 4508; CHECK-LABEL: @or_sgt_eq_swap( 4509; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 4510; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 4511; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4512; CHECK-NEXT: ret i1 [[C]] 4513; 4514 %a = icmp sgt i8 %x, 23 4515 %b = icmp eq i8 %x, 17 4516 %c = or i1 %a, %b 4517 ret i1 %c 4518} 4519 4520; x >s 23 || x != 17 4521 4522define i1 @or_sgt_ne_swap(i8 %x) { 4523; CHECK-LABEL: @or_sgt_ne_swap( 4524; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 4525; CHECK-NEXT: ret i1 [[B]] 4526; 4527 %a = icmp sgt i8 %x, 23 4528 %b = icmp ne i8 %x, 17 4529 %c = or i1 %a, %b 4530 ret i1 %c 4531} 4532 4533; x >s 23 || x >=s 17 4534 4535define i1 @or_sgt_sge_swap(i8 %x) { 4536; CHECK-LABEL: @or_sgt_sge_swap( 4537; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X:%.*]], 17 4538; CHECK-NEXT: ret i1 [[B]] 4539; 4540 %a = icmp sgt i8 %x, 23 4541 %b = icmp sge i8 %x, 17 4542 %c = or i1 %a, %b 4543 ret i1 %c 4544} 4545 4546; x >s 23 || x >s 17 4547 4548define i1 @or_sgt_sgt_swap(i8 %x) { 4549; CHECK-LABEL: @or_sgt_sgt_swap( 4550; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17 4551; CHECK-NEXT: ret i1 [[B]] 4552; 4553 %a = icmp sgt i8 %x, 23 4554 %b = icmp sgt i8 %x, 17 4555 %c = or i1 %a, %b 4556 ret i1 %c 4557} 4558 4559; x >s 23 || x <=s 17 4560 4561define i1 @or_sgt_sle_swap(i8 %x) { 4562; CHECK-LABEL: @or_sgt_sle_swap( 4563; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 4564; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 4565; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4566; CHECK-NEXT: ret i1 [[C]] 4567; 4568 %a = icmp sgt i8 %x, 23 4569 %b = icmp sle i8 %x, 17 4570 %c = or i1 %a, %b 4571 ret i1 %c 4572} 4573 4574; x >s 23 || x <s 17 4575 4576define i1 @or_sgt_slt_swap(i8 %x) { 4577; CHECK-LABEL: @or_sgt_slt_swap( 4578; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 4579; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 4580; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4581; CHECK-NEXT: ret i1 [[C]] 4582; 4583 %a = icmp sgt i8 %x, 23 4584 %b = icmp slt i8 %x, 17 4585 %c = or i1 %a, %b 4586 ret i1 %c 4587} 4588 4589; x >s 23 || x >=u 17 4590 4591define i1 @or_sgt_uge_swap(i8 %x) { 4592; CHECK-LABEL: @or_sgt_uge_swap( 4593; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 4594; CHECK-NEXT: ret i1 [[B]] 4595; 4596 %a = icmp sgt i8 %x, 23 4597 %b = icmp uge i8 %x, 17 4598 %c = or i1 %a, %b 4599 ret i1 %c 4600} 4601 4602; x >s 23 || x >u 17 4603 4604define i1 @or_sgt_ugt_swap(i8 %x) { 4605; CHECK-LABEL: @or_sgt_ugt_swap( 4606; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 4607; CHECK-NEXT: ret i1 [[B]] 4608; 4609 %a = icmp sgt i8 %x, 23 4610 %b = icmp ugt i8 %x, 17 4611 %c = or i1 %a, %b 4612 ret i1 %c 4613} 4614 4615; x >s 23 || x <=u 17 4616 4617define i1 @or_sgt_ule_swap(i8 %x) { 4618; CHECK-LABEL: @or_sgt_ule_swap( 4619; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 4620; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 4621; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4622; CHECK-NEXT: ret i1 [[C]] 4623; 4624 %a = icmp sgt i8 %x, 23 4625 %b = icmp ule i8 %x, 17 4626 %c = or i1 %a, %b 4627 ret i1 %c 4628} 4629 4630; x >s 23 || x <u 17 4631 4632define i1 @or_sgt_ult_swap(i8 %x) { 4633; CHECK-LABEL: @or_sgt_ult_swap( 4634; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23 4635; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 4636; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4637; CHECK-NEXT: ret i1 [[C]] 4638; 4639 %a = icmp sgt i8 %x, 23 4640 %b = icmp ult i8 %x, 17 4641 %c = or i1 %a, %b 4642 ret i1 %c 4643} 4644 4645; sle 4646; x <=s 23 || x == 17 4647 4648define i1 @or_sle_eq_swap(i8 %x) { 4649; CHECK-LABEL: @or_sle_eq_swap( 4650; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 4651; CHECK-NEXT: ret i1 [[A]] 4652; 4653 %a = icmp sle i8 %x, 23 4654 %b = icmp eq i8 %x, 17 4655 %c = or i1 %a, %b 4656 ret i1 %c 4657} 4658 4659; x <=s 23 || x != 17 4660 4661define i1 @or_sle_ne_swap(i8 %x) { 4662; CHECK-LABEL: @or_sle_ne_swap( 4663; CHECK-NEXT: ret i1 true 4664; 4665 %a = icmp sle i8 %x, 23 4666 %b = icmp ne i8 %x, 17 4667 %c = or i1 %a, %b 4668 ret i1 %c 4669} 4670 4671; x <=s 23 || x >=s 17 4672 4673define i1 @or_sle_sge_swap(i8 %x) { 4674; CHECK-LABEL: @or_sle_sge_swap( 4675; CHECK-NEXT: ret i1 true 4676; 4677 %a = icmp sle i8 %x, 23 4678 %b = icmp sge i8 %x, 17 4679 %c = or i1 %a, %b 4680 ret i1 %c 4681} 4682 4683; x <=s 23 || x >s 17 4684 4685define i1 @or_sle_sgt_swap(i8 %x) { 4686; CHECK-LABEL: @or_sle_sgt_swap( 4687; CHECK-NEXT: ret i1 true 4688; 4689 %a = icmp sle i8 %x, 23 4690 %b = icmp sgt i8 %x, 17 4691 %c = or i1 %a, %b 4692 ret i1 %c 4693} 4694 4695; x <=s 23 || x <=s 17 4696 4697define i1 @or_sle_sle_swap(i8 %x) { 4698; CHECK-LABEL: @or_sle_sle_swap( 4699; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 4700; CHECK-NEXT: ret i1 [[A]] 4701; 4702 %a = icmp sle i8 %x, 23 4703 %b = icmp sle i8 %x, 17 4704 %c = or i1 %a, %b 4705 ret i1 %c 4706} 4707 4708; x <=s 23 || x <s 17 4709 4710define i1 @or_sle_slt_swap(i8 %x) { 4711; CHECK-LABEL: @or_sle_slt_swap( 4712; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 4713; CHECK-NEXT: ret i1 [[A]] 4714; 4715 %a = icmp sle i8 %x, 23 4716 %b = icmp slt i8 %x, 17 4717 %c = or i1 %a, %b 4718 ret i1 %c 4719} 4720 4721; x <=s 23 || x >=u 17 4722 4723define i1 @or_sle_uge_swap(i8 %x) { 4724; CHECK-LABEL: @or_sle_uge_swap( 4725; CHECK-NEXT: ret i1 true 4726; 4727 %a = icmp sle i8 %x, 23 4728 %b = icmp uge i8 %x, 17 4729 %c = or i1 %a, %b 4730 ret i1 %c 4731} 4732 4733; x <=s 23 || x >u 17 4734 4735define i1 @or_sle_ugt_swap(i8 %x) { 4736; CHECK-LABEL: @or_sle_ugt_swap( 4737; CHECK-NEXT: ret i1 true 4738; 4739 %a = icmp sle i8 %x, 23 4740 %b = icmp ugt i8 %x, 17 4741 %c = or i1 %a, %b 4742 ret i1 %c 4743} 4744 4745; x <=s 23 || x <=u 17 4746 4747define i1 @or_sle_ule_swap(i8 %x) { 4748; CHECK-LABEL: @or_sle_ule_swap( 4749; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 4750; CHECK-NEXT: ret i1 [[A]] 4751; 4752 %a = icmp sle i8 %x, 23 4753 %b = icmp ule i8 %x, 17 4754 %c = or i1 %a, %b 4755 ret i1 %c 4756} 4757 4758; x <=s 23 || x <u 17 4759 4760define i1 @or_sle_ult_swap(i8 %x) { 4761; CHECK-LABEL: @or_sle_ult_swap( 4762; CHECK-NEXT: [[A:%.*]] = icmp sle i8 [[X:%.*]], 23 4763; CHECK-NEXT: ret i1 [[A]] 4764; 4765 %a = icmp sle i8 %x, 23 4766 %b = icmp ult i8 %x, 17 4767 %c = or i1 %a, %b 4768 ret i1 %c 4769} 4770 4771; slt 4772; x <s 23 || x == 17 4773 4774define i1 @or_slt_eq_swap(i8 %x) { 4775; CHECK-LABEL: @or_slt_eq_swap( 4776; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 4777; CHECK-NEXT: ret i1 [[A]] 4778; 4779 %a = icmp slt i8 %x, 23 4780 %b = icmp eq i8 %x, 17 4781 %c = or i1 %a, %b 4782 ret i1 %c 4783} 4784 4785; x <s 23 || x != 17 4786 4787define i1 @or_slt_ne_swap(i8 %x) { 4788; CHECK-LABEL: @or_slt_ne_swap( 4789; CHECK-NEXT: ret i1 true 4790; 4791 %a = icmp slt i8 %x, 23 4792 %b = icmp ne i8 %x, 17 4793 %c = or i1 %a, %b 4794 ret i1 %c 4795} 4796 4797; x <s 23 || x >=s 17 4798 4799define i1 @or_slt_sge_swap(i8 %x) { 4800; CHECK-LABEL: @or_slt_sge_swap( 4801; CHECK-NEXT: ret i1 true 4802; 4803 %a = icmp slt i8 %x, 23 4804 %b = icmp sge i8 %x, 17 4805 %c = or i1 %a, %b 4806 ret i1 %c 4807} 4808 4809; x <s 23 || x >s 17 4810 4811define i1 @or_slt_sgt_swap(i8 %x) { 4812; CHECK-LABEL: @or_slt_sgt_swap( 4813; CHECK-NEXT: ret i1 true 4814; 4815 %a = icmp slt i8 %x, 23 4816 %b = icmp sgt i8 %x, 17 4817 %c = or i1 %a, %b 4818 ret i1 %c 4819} 4820 4821; x <s 23 || x <=s 17 4822 4823define i1 @or_slt_sle_swap(i8 %x) { 4824; CHECK-LABEL: @or_slt_sle_swap( 4825; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 4826; CHECK-NEXT: ret i1 [[A]] 4827; 4828 %a = icmp slt i8 %x, 23 4829 %b = icmp sle i8 %x, 17 4830 %c = or i1 %a, %b 4831 ret i1 %c 4832} 4833 4834; x <s 23 || x <s 17 4835 4836define i1 @or_slt_slt_swap(i8 %x) { 4837; CHECK-LABEL: @or_slt_slt_swap( 4838; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 4839; CHECK-NEXT: ret i1 [[A]] 4840; 4841 %a = icmp slt i8 %x, 23 4842 %b = icmp slt i8 %x, 17 4843 %c = or i1 %a, %b 4844 ret i1 %c 4845} 4846 4847; x <s 23 || x >=u 17 4848 4849define i1 @or_slt_uge_swap(i8 %x) { 4850; CHECK-LABEL: @or_slt_uge_swap( 4851; CHECK-NEXT: ret i1 true 4852; 4853 %a = icmp slt i8 %x, 23 4854 %b = icmp uge i8 %x, 17 4855 %c = or i1 %a, %b 4856 ret i1 %c 4857} 4858 4859; x <s 23 || x >u 17 4860 4861define i1 @or_slt_ugt_swap(i8 %x) { 4862; CHECK-LABEL: @or_slt_ugt_swap( 4863; CHECK-NEXT: ret i1 true 4864; 4865 %a = icmp slt i8 %x, 23 4866 %b = icmp ugt i8 %x, 17 4867 %c = or i1 %a, %b 4868 ret i1 %c 4869} 4870 4871; x <s 23 || x <=u 17 4872 4873define i1 @or_slt_ule_swap(i8 %x) { 4874; CHECK-LABEL: @or_slt_ule_swap( 4875; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 4876; CHECK-NEXT: ret i1 [[A]] 4877; 4878 %a = icmp slt i8 %x, 23 4879 %b = icmp ule i8 %x, 17 4880 %c = or i1 %a, %b 4881 ret i1 %c 4882} 4883 4884; x <s 23 || x <u 17 4885 4886define i1 @or_slt_ult_swap(i8 %x) { 4887; CHECK-LABEL: @or_slt_ult_swap( 4888; CHECK-NEXT: [[A:%.*]] = icmp slt i8 [[X:%.*]], 23 4889; CHECK-NEXT: ret i1 [[A]] 4890; 4891 %a = icmp slt i8 %x, 23 4892 %b = icmp ult i8 %x, 17 4893 %c = or i1 %a, %b 4894 ret i1 %c 4895} 4896 4897; uge 4898; x >=u 23 || x == 17 4899 4900define i1 @or_uge_eq_swap(i8 %x) { 4901; CHECK-LABEL: @or_uge_eq_swap( 4902; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 4903; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 4904; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4905; CHECK-NEXT: ret i1 [[C]] 4906; 4907 %a = icmp uge i8 %x, 23 4908 %b = icmp eq i8 %x, 17 4909 %c = or i1 %a, %b 4910 ret i1 %c 4911} 4912 4913; x >=u 23 || x != 17 4914 4915define i1 @or_uge_ne_swap(i8 %x) { 4916; CHECK-LABEL: @or_uge_ne_swap( 4917; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 4918; CHECK-NEXT: ret i1 [[B]] 4919; 4920 %a = icmp uge i8 %x, 23 4921 %b = icmp ne i8 %x, 17 4922 %c = or i1 %a, %b 4923 ret i1 %c 4924} 4925 4926; x >=u 23 || x >=s 17 4927 4928define i1 @or_uge_sge_swap(i8 %x) { 4929; CHECK-LABEL: @or_uge_sge_swap( 4930; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 4931; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 4932; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4933; CHECK-NEXT: ret i1 [[C]] 4934; 4935 %a = icmp uge i8 %x, 23 4936 %b = icmp sge i8 %x, 17 4937 %c = or i1 %a, %b 4938 ret i1 %c 4939} 4940 4941; x >=u 23 || x >s 17 4942 4943define i1 @or_uge_sgt_swap(i8 %x) { 4944; CHECK-LABEL: @or_uge_sgt_swap( 4945; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 4946; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 4947; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4948; CHECK-NEXT: ret i1 [[C]] 4949; 4950 %a = icmp uge i8 %x, 23 4951 %b = icmp sgt i8 %x, 17 4952 %c = or i1 %a, %b 4953 ret i1 %c 4954} 4955 4956; x >=u 23 || x <=s 17 4957 4958define i1 @or_uge_sle_swap(i8 %x) { 4959; CHECK-LABEL: @or_uge_sle_swap( 4960; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 4961; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 4962; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4963; CHECK-NEXT: ret i1 [[C]] 4964; 4965 %a = icmp uge i8 %x, 23 4966 %b = icmp sle i8 %x, 17 4967 %c = or i1 %a, %b 4968 ret i1 %c 4969} 4970 4971; x >=u 23 || x <s 17 4972 4973define i1 @or_uge_slt_swap(i8 %x) { 4974; CHECK-LABEL: @or_uge_slt_swap( 4975; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 4976; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 4977; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 4978; CHECK-NEXT: ret i1 [[C]] 4979; 4980 %a = icmp uge i8 %x, 23 4981 %b = icmp slt i8 %x, 17 4982 %c = or i1 %a, %b 4983 ret i1 %c 4984} 4985 4986; x >=u 23 || x >=u 17 4987 4988define i1 @or_uge_uge_swap(i8 %x) { 4989; CHECK-LABEL: @or_uge_uge_swap( 4990; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 4991; CHECK-NEXT: ret i1 [[B]] 4992; 4993 %a = icmp uge i8 %x, 23 4994 %b = icmp uge i8 %x, 17 4995 %c = or i1 %a, %b 4996 ret i1 %c 4997} 4998 4999; x >=u 23 || x >u 17 5000 5001define i1 @or_uge_ugt_swap(i8 %x) { 5002; CHECK-LABEL: @or_uge_ugt_swap( 5003; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 5004; CHECK-NEXT: ret i1 [[B]] 5005; 5006 %a = icmp uge i8 %x, 23 5007 %b = icmp ugt i8 %x, 17 5008 %c = or i1 %a, %b 5009 ret i1 %c 5010} 5011 5012; x >=u 23 || x <=u 17 5013 5014define i1 @or_uge_ule_swap(i8 %x) { 5015; CHECK-LABEL: @or_uge_ule_swap( 5016; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 5017; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 5018; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5019; CHECK-NEXT: ret i1 [[C]] 5020; 5021 %a = icmp uge i8 %x, 23 5022 %b = icmp ule i8 %x, 17 5023 %c = or i1 %a, %b 5024 ret i1 %c 5025} 5026 5027; x >=u 23 || x <u 17 5028 5029define i1 @or_uge_ult_swap(i8 %x) { 5030; CHECK-LABEL: @or_uge_ult_swap( 5031; CHECK-NEXT: [[A:%.*]] = icmp uge i8 [[X:%.*]], 23 5032; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 5033; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5034; CHECK-NEXT: ret i1 [[C]] 5035; 5036 %a = icmp uge i8 %x, 23 5037 %b = icmp ult i8 %x, 17 5038 %c = or i1 %a, %b 5039 ret i1 %c 5040} 5041 5042; ugt 5043; x >u 23 || x == 17 5044 5045define i1 @or_ugt_eq_swap(i8 %x) { 5046; CHECK-LABEL: @or_ugt_eq_swap( 5047; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 5048; CHECK-NEXT: [[B:%.*]] = icmp eq i8 [[X]], 17 5049; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5050; CHECK-NEXT: ret i1 [[C]] 5051; 5052 %a = icmp ugt i8 %x, 23 5053 %b = icmp eq i8 %x, 17 5054 %c = or i1 %a, %b 5055 ret i1 %c 5056} 5057 5058; x >u 23 || x != 17 5059 5060define i1 @or_ugt_ne_swap(i8 %x) { 5061; CHECK-LABEL: @or_ugt_ne_swap( 5062; CHECK-NEXT: [[B:%.*]] = icmp ne i8 [[X:%.*]], 17 5063; CHECK-NEXT: ret i1 [[B]] 5064; 5065 %a = icmp ugt i8 %x, 23 5066 %b = icmp ne i8 %x, 17 5067 %c = or i1 %a, %b 5068 ret i1 %c 5069} 5070 5071; x >u 23 || x >=s 17 5072 5073define i1 @or_ugt_sge_swap(i8 %x) { 5074; CHECK-LABEL: @or_ugt_sge_swap( 5075; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 5076; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 5077; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5078; CHECK-NEXT: ret i1 [[C]] 5079; 5080 %a = icmp ugt i8 %x, 23 5081 %b = icmp sge i8 %x, 17 5082 %c = or i1 %a, %b 5083 ret i1 %c 5084} 5085 5086; x >u 23 || x >s 17 5087 5088define i1 @or_ugt_sgt_swap(i8 %x) { 5089; CHECK-LABEL: @or_ugt_sgt_swap( 5090; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 5091; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 5092; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5093; CHECK-NEXT: ret i1 [[C]] 5094; 5095 %a = icmp ugt i8 %x, 23 5096 %b = icmp sgt i8 %x, 17 5097 %c = or i1 %a, %b 5098 ret i1 %c 5099} 5100 5101; x >u 23 || x <=s 17 5102 5103define i1 @or_ugt_sle_swap(i8 %x) { 5104; CHECK-LABEL: @or_ugt_sle_swap( 5105; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 5106; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 5107; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5108; CHECK-NEXT: ret i1 [[C]] 5109; 5110 %a = icmp ugt i8 %x, 23 5111 %b = icmp sle i8 %x, 17 5112 %c = or i1 %a, %b 5113 ret i1 %c 5114} 5115 5116; x >u 23 || x <s 17 5117 5118define i1 @or_ugt_slt_swap(i8 %x) { 5119; CHECK-LABEL: @or_ugt_slt_swap( 5120; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 5121; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 5122; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5123; CHECK-NEXT: ret i1 [[C]] 5124; 5125 %a = icmp ugt i8 %x, 23 5126 %b = icmp slt i8 %x, 17 5127 %c = or i1 %a, %b 5128 ret i1 %c 5129} 5130 5131; x >u 23 || x >=u 17 5132 5133define i1 @or_ugt_uge_swap(i8 %x) { 5134; CHECK-LABEL: @or_ugt_uge_swap( 5135; CHECK-NEXT: [[B:%.*]] = icmp uge i8 [[X:%.*]], 17 5136; CHECK-NEXT: ret i1 [[B]] 5137; 5138 %a = icmp ugt i8 %x, 23 5139 %b = icmp uge i8 %x, 17 5140 %c = or i1 %a, %b 5141 ret i1 %c 5142} 5143 5144; x >u 23 || x >u 17 5145 5146define i1 @or_ugt_ugt_swap(i8 %x) { 5147; CHECK-LABEL: @or_ugt_ugt_swap( 5148; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17 5149; CHECK-NEXT: ret i1 [[B]] 5150; 5151 %a = icmp ugt i8 %x, 23 5152 %b = icmp ugt i8 %x, 17 5153 %c = or i1 %a, %b 5154 ret i1 %c 5155} 5156 5157; x >u 23 || x <=u 17 5158 5159define i1 @or_ugt_ule_swap(i8 %x) { 5160; CHECK-LABEL: @or_ugt_ule_swap( 5161; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 5162; CHECK-NEXT: [[B:%.*]] = icmp ule i8 [[X]], 17 5163; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5164; CHECK-NEXT: ret i1 [[C]] 5165; 5166 %a = icmp ugt i8 %x, 23 5167 %b = icmp ule i8 %x, 17 5168 %c = or i1 %a, %b 5169 ret i1 %c 5170} 5171 5172; x >u 23 || x <u 17 5173 5174define i1 @or_ugt_ult_swap(i8 %x) { 5175; CHECK-LABEL: @or_ugt_ult_swap( 5176; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23 5177; CHECK-NEXT: [[B:%.*]] = icmp ult i8 [[X]], 17 5178; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5179; CHECK-NEXT: ret i1 [[C]] 5180; 5181 %a = icmp ugt i8 %x, 23 5182 %b = icmp ult i8 %x, 17 5183 %c = or i1 %a, %b 5184 ret i1 %c 5185} 5186 5187; ule 5188; x <=u 23 || x == 17 5189 5190define i1 @or_ule_eq_swap(i8 %x) { 5191; CHECK-LABEL: @or_ule_eq_swap( 5192; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 5193; CHECK-NEXT: ret i1 [[A]] 5194; 5195 %a = icmp ule i8 %x, 23 5196 %b = icmp eq i8 %x, 17 5197 %c = or i1 %a, %b 5198 ret i1 %c 5199} 5200 5201; x <=u 23 || x != 17 5202 5203define i1 @or_ule_ne_swap(i8 %x) { 5204; CHECK-LABEL: @or_ule_ne_swap( 5205; CHECK-NEXT: ret i1 true 5206; 5207 %a = icmp ule i8 %x, 23 5208 %b = icmp ne i8 %x, 17 5209 %c = or i1 %a, %b 5210 ret i1 %c 5211} 5212 5213; x <=u 23 || x >=s 17 5214 5215define i1 @or_ule_sge_swap(i8 %x) { 5216; CHECK-LABEL: @or_ule_sge_swap( 5217; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 5218; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 5219; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5220; CHECK-NEXT: ret i1 [[C]] 5221; 5222 %a = icmp ule i8 %x, 23 5223 %b = icmp sge i8 %x, 17 5224 %c = or i1 %a, %b 5225 ret i1 %c 5226} 5227 5228; x <=u 23 || x >s 17 5229 5230define i1 @or_ule_sgt_swap(i8 %x) { 5231; CHECK-LABEL: @or_ule_sgt_swap( 5232; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 5233; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 5234; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5235; CHECK-NEXT: ret i1 [[C]] 5236; 5237 %a = icmp ule i8 %x, 23 5238 %b = icmp sgt i8 %x, 17 5239 %c = or i1 %a, %b 5240 ret i1 %c 5241} 5242 5243; x <=u 23 || x <=s 17 5244 5245define i1 @or_ule_sle_swap(i8 %x) { 5246; CHECK-LABEL: @or_ule_sle_swap( 5247; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 5248; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 5249; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5250; CHECK-NEXT: ret i1 [[C]] 5251; 5252 %a = icmp ule i8 %x, 23 5253 %b = icmp sle i8 %x, 17 5254 %c = or i1 %a, %b 5255 ret i1 %c 5256} 5257 5258; x <=u 23 || x <s 17 5259 5260define i1 @or_ule_slt_swap(i8 %x) { 5261; CHECK-LABEL: @or_ule_slt_swap( 5262; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 5263; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 5264; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5265; CHECK-NEXT: ret i1 [[C]] 5266; 5267 %a = icmp ule i8 %x, 23 5268 %b = icmp slt i8 %x, 17 5269 %c = or i1 %a, %b 5270 ret i1 %c 5271} 5272 5273; x <=u 23 || x >=u 17 5274 5275define i1 @or_ule_uge_swap(i8 %x) { 5276; CHECK-LABEL: @or_ule_uge_swap( 5277; CHECK-NEXT: ret i1 true 5278; 5279 %a = icmp ule i8 %x, 23 5280 %b = icmp uge i8 %x, 17 5281 %c = or i1 %a, %b 5282 ret i1 %c 5283} 5284 5285; x <=u 23 || x >u 17 5286 5287define i1 @or_ule_ugt_swap(i8 %x) { 5288; CHECK-LABEL: @or_ule_ugt_swap( 5289; CHECK-NEXT: ret i1 true 5290; 5291 %a = icmp ule i8 %x, 23 5292 %b = icmp ugt i8 %x, 17 5293 %c = or i1 %a, %b 5294 ret i1 %c 5295} 5296 5297; x <=u 23 || x <=u 17 5298 5299define i1 @or_ule_ule_swap(i8 %x) { 5300; CHECK-LABEL: @or_ule_ule_swap( 5301; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 5302; CHECK-NEXT: ret i1 [[A]] 5303; 5304 %a = icmp ule i8 %x, 23 5305 %b = icmp ule i8 %x, 17 5306 %c = or i1 %a, %b 5307 ret i1 %c 5308} 5309 5310; x <=u 23 || x <u 17 5311 5312define i1 @or_ule_ult_swap(i8 %x) { 5313; CHECK-LABEL: @or_ule_ult_swap( 5314; CHECK-NEXT: [[A:%.*]] = icmp ule i8 [[X:%.*]], 23 5315; CHECK-NEXT: ret i1 [[A]] 5316; 5317 %a = icmp ule i8 %x, 23 5318 %b = icmp ult i8 %x, 17 5319 %c = or i1 %a, %b 5320 ret i1 %c 5321} 5322 5323; ult 5324; x <u 23 || x == 17 5325 5326define i1 @or_ult_eq_swap(i8 %x) { 5327; CHECK-LABEL: @or_ult_eq_swap( 5328; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 5329; CHECK-NEXT: ret i1 [[A]] 5330; 5331 %a = icmp ult i8 %x, 23 5332 %b = icmp eq i8 %x, 17 5333 %c = or i1 %a, %b 5334 ret i1 %c 5335} 5336 5337; x <u 23 || x != 17 5338 5339define i1 @or_ult_ne_swap(i8 %x) { 5340; CHECK-LABEL: @or_ult_ne_swap( 5341; CHECK-NEXT: ret i1 true 5342; 5343 %a = icmp ult i8 %x, 23 5344 %b = icmp ne i8 %x, 17 5345 %c = or i1 %a, %b 5346 ret i1 %c 5347} 5348 5349; x <u 23 || x >=s 17 5350 5351define i1 @or_ult_sge_swap(i8 %x) { 5352; CHECK-LABEL: @or_ult_sge_swap( 5353; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 5354; CHECK-NEXT: [[B:%.*]] = icmp sge i8 [[X]], 17 5355; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5356; CHECK-NEXT: ret i1 [[C]] 5357; 5358 %a = icmp ult i8 %x, 23 5359 %b = icmp sge i8 %x, 17 5360 %c = or i1 %a, %b 5361 ret i1 %c 5362} 5363 5364; x <u 23 || x >s 17 5365 5366define i1 @or_ult_sgt_swap(i8 %x) { 5367; CHECK-LABEL: @or_ult_sgt_swap( 5368; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 5369; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 [[X]], 17 5370; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5371; CHECK-NEXT: ret i1 [[C]] 5372; 5373 %a = icmp ult i8 %x, 23 5374 %b = icmp sgt i8 %x, 17 5375 %c = or i1 %a, %b 5376 ret i1 %c 5377} 5378 5379; x <u 23 || x <=s 17 5380 5381define i1 @or_ult_sle_swap(i8 %x) { 5382; CHECK-LABEL: @or_ult_sle_swap( 5383; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 5384; CHECK-NEXT: [[B:%.*]] = icmp sle i8 [[X]], 17 5385; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5386; CHECK-NEXT: ret i1 [[C]] 5387; 5388 %a = icmp ult i8 %x, 23 5389 %b = icmp sle i8 %x, 17 5390 %c = or i1 %a, %b 5391 ret i1 %c 5392} 5393 5394; x <u 23 || x <s 17 5395 5396define i1 @or_ult_slt_swap(i8 %x) { 5397; CHECK-LABEL: @or_ult_slt_swap( 5398; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 5399; CHECK-NEXT: [[B:%.*]] = icmp slt i8 [[X]], 17 5400; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]] 5401; CHECK-NEXT: ret i1 [[C]] 5402; 5403 %a = icmp ult i8 %x, 23 5404 %b = icmp slt i8 %x, 17 5405 %c = or i1 %a, %b 5406 ret i1 %c 5407} 5408 5409; x <u 23 || x >=u 17 5410 5411define i1 @or_ult_uge_swap(i8 %x) { 5412; CHECK-LABEL: @or_ult_uge_swap( 5413; CHECK-NEXT: ret i1 true 5414; 5415 %a = icmp ult i8 %x, 23 5416 %b = icmp uge i8 %x, 17 5417 %c = or i1 %a, %b 5418 ret i1 %c 5419} 5420 5421; x <u 23 || x >u 17 5422 5423define i1 @or_ult_ugt_swap(i8 %x) { 5424; CHECK-LABEL: @or_ult_ugt_swap( 5425; CHECK-NEXT: ret i1 true 5426; 5427 %a = icmp ult i8 %x, 23 5428 %b = icmp ugt i8 %x, 17 5429 %c = or i1 %a, %b 5430 ret i1 %c 5431} 5432 5433; x <u 23 || x <=u 17 5434 5435define i1 @or_ult_ule_swap(i8 %x) { 5436; CHECK-LABEL: @or_ult_ule_swap( 5437; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 5438; CHECK-NEXT: ret i1 [[A]] 5439; 5440 %a = icmp ult i8 %x, 23 5441 %b = icmp ule i8 %x, 17 5442 %c = or i1 %a, %b 5443 ret i1 %c 5444} 5445 5446; x <u 23 || x <u 17 5447 5448define i1 @or_ult_ult_swap(i8 %x) { 5449; CHECK-LABEL: @or_ult_ult_swap( 5450; CHECK-NEXT: [[A:%.*]] = icmp ult i8 [[X:%.*]], 23 5451; CHECK-NEXT: ret i1 [[A]] 5452; 5453 %a = icmp ult i8 %x, 23 5454 %b = icmp ult i8 %x, 17 5455 %c = or i1 %a, %b 5456 ret i1 %c 5457} 5458 5459; Special case - slt is uge 5460; x <u 31 && x <s 0 5461 5462define i1 @empty2(i32 %x) { 5463; CHECK-LABEL: @empty2( 5464; CHECK-NEXT: ret i1 false 5465; 5466 %a = icmp ult i32 %x, 31 5467 %b = icmp slt i32 %x, 0 5468 %c = and i1 %a, %b 5469 ret i1 %c 5470} 5471 5472