1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+2e3 | FileCheck %s 3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+btst16 | FileCheck %s --check-prefix=GENERIC 4 5;EQ 6define i32 @brRR_eq(i32 %x, i32 %y) { 7; CHECK-LABEL: brRR_eq: 8; CHECK: # %bb.0: # %entry 9; CHECK-NEXT: cmpne16 a1, a0 10; CHECK-NEXT: bt32 .LBB0_2 11; CHECK-NEXT: # %bb.1: # %label1 12; CHECK-NEXT: movi16 a0, 1 13; CHECK-NEXT: rts16 14; CHECK-NEXT: .LBB0_2: # %label2 15; CHECK-NEXT: movi16 a0, 0 16; CHECK-NEXT: rts16 17; 18; GENERIC-LABEL: brRR_eq: 19; GENERIC: # %bb.0: # %entry 20; GENERIC-NEXT: .cfi_def_cfa_offset 0 21; GENERIC-NEXT: subi16 sp, sp, 4 22; GENERIC-NEXT: .cfi_def_cfa_offset 4 23; GENERIC-NEXT: cmpne16 a1, a0 24; GENERIC-NEXT: bt16 .LBB0_2 25; GENERIC-NEXT: # %bb.1: # %label1 26; GENERIC-NEXT: movi16 a0, 1 27; GENERIC-NEXT: addi16 sp, sp, 4 28; GENERIC-NEXT: rts16 29; GENERIC-NEXT: .LBB0_2: # %label2 30; GENERIC-NEXT: movi16 a0, 0 31; GENERIC-NEXT: addi16 sp, sp, 4 32; GENERIC-NEXT: rts16 33entry: 34 %icmp = icmp eq i32 %y, %x 35 br i1 %icmp, label %label1, label %label2 36label1: 37 ret i32 1 38label2: 39 ret i32 0 40} 41 42define i32 @brRI_eq(i32 %x) { 43; CHECK-LABEL: brRI_eq: 44; CHECK: # %bb.0: # %entry 45; CHECK-NEXT: cmpnei16 a0, 10 46; CHECK-NEXT: bt32 .LBB1_2 47; CHECK-NEXT: # %bb.1: # %label1 48; CHECK-NEXT: movi16 a0, 1 49; CHECK-NEXT: rts16 50; CHECK-NEXT: .LBB1_2: # %label2 51; CHECK-NEXT: movi16 a0, 0 52; CHECK-NEXT: rts16 53; 54; GENERIC-LABEL: brRI_eq: 55; GENERIC: # %bb.0: # %entry 56; GENERIC-NEXT: .cfi_def_cfa_offset 0 57; GENERIC-NEXT: subi16 sp, sp, 4 58; GENERIC-NEXT: .cfi_def_cfa_offset 4 59; GENERIC-NEXT: cmpnei16 a0, 10 60; GENERIC-NEXT: bt16 .LBB1_2 61; GENERIC-NEXT: # %bb.1: # %label1 62; GENERIC-NEXT: movi16 a0, 1 63; GENERIC-NEXT: addi16 sp, sp, 4 64; GENERIC-NEXT: rts16 65; GENERIC-NEXT: .LBB1_2: # %label2 66; GENERIC-NEXT: movi16 a0, 0 67; GENERIC-NEXT: addi16 sp, sp, 4 68; GENERIC-NEXT: rts16 69entry: 70 %icmp = icmp eq i32 %x, 10 71 br i1 %icmp, label %label1, label %label2 72label1: 73 ret i32 1 74label2: 75 ret i32 0 76} 77 78define i32 @brR0_eq(i32 %x) { 79; CHECK-LABEL: brR0_eq: 80; CHECK: # %bb.0: # %entry 81; CHECK-NEXT: bez32 a0, .LBB2_2 82; CHECK-NEXT: # %bb.1: # %label2 83; CHECK-NEXT: movi16 a0, 0 84; CHECK-NEXT: rts16 85; CHECK-NEXT: .LBB2_2: # %label1 86; CHECK-NEXT: movi16 a0, 1 87; CHECK-NEXT: rts16 88; 89; GENERIC-LABEL: brR0_eq: 90; GENERIC: # %bb.0: # %entry 91; GENERIC-NEXT: .cfi_def_cfa_offset 0 92; GENERIC-NEXT: subi16 sp, sp, 4 93; GENERIC-NEXT: .cfi_def_cfa_offset 4 94; GENERIC-NEXT: cmpnei16 a0, 0 95; GENERIC-NEXT: bf16 .LBB2_2 96; GENERIC-NEXT: # %bb.1: # %label2 97; GENERIC-NEXT: movi16 a0, 0 98; GENERIC-NEXT: addi16 sp, sp, 4 99; GENERIC-NEXT: rts16 100; GENERIC-NEXT: .LBB2_2: # %label1 101; GENERIC-NEXT: movi16 a0, 1 102; GENERIC-NEXT: addi16 sp, sp, 4 103; GENERIC-NEXT: rts16 104entry: 105 %icmp = icmp eq i32 %x, 0 106 br i1 %icmp, label %label1, label %label2 107label1: 108 ret i32 1 109label2: 110 ret i32 0 111} 112 113;NE 114define i32 @brRR_ne(i32 %x, i32 %y) { 115; CHECK-LABEL: brRR_ne: 116; CHECK: # %bb.0: # %entry 117; CHECK-NEXT: cmpne16 a1, a0 118; CHECK-NEXT: bf32 .LBB3_2 119; CHECK-NEXT: # %bb.1: # %label1 120; CHECK-NEXT: movi16 a0, 1 121; CHECK-NEXT: rts16 122; CHECK-NEXT: .LBB3_2: # %label2 123; CHECK-NEXT: movi16 a0, 0 124; CHECK-NEXT: rts16 125; 126; GENERIC-LABEL: brRR_ne: 127; GENERIC: # %bb.0: # %entry 128; GENERIC-NEXT: .cfi_def_cfa_offset 0 129; GENERIC-NEXT: subi16 sp, sp, 4 130; GENERIC-NEXT: .cfi_def_cfa_offset 4 131; GENERIC-NEXT: cmpne16 a1, a0 132; GENERIC-NEXT: bf16 .LBB3_2 133; GENERIC-NEXT: # %bb.1: # %label1 134; GENERIC-NEXT: movi16 a0, 1 135; GENERIC-NEXT: addi16 sp, sp, 4 136; GENERIC-NEXT: rts16 137; GENERIC-NEXT: .LBB3_2: # %label2 138; GENERIC-NEXT: movi16 a0, 0 139; GENERIC-NEXT: addi16 sp, sp, 4 140; GENERIC-NEXT: rts16 141entry: 142 %icmp = icmp ne i32 %y, %x 143 br i1 %icmp, label %label1, label %label2 144label1: 145 ret i32 1 146label2: 147 ret i32 0 148} 149 150define i32 @brRI_ne(i32 %x) { 151; CHECK-LABEL: brRI_ne: 152; CHECK: # %bb.0: # %entry 153; CHECK-NEXT: cmpnei16 a0, 10 154; CHECK-NEXT: bf32 .LBB4_2 155; CHECK-NEXT: # %bb.1: # %label1 156; CHECK-NEXT: movi16 a0, 1 157; CHECK-NEXT: rts16 158; CHECK-NEXT: .LBB4_2: # %label2 159; CHECK-NEXT: movi16 a0, 0 160; CHECK-NEXT: rts16 161; 162; GENERIC-LABEL: brRI_ne: 163; GENERIC: # %bb.0: # %entry 164; GENERIC-NEXT: .cfi_def_cfa_offset 0 165; GENERIC-NEXT: subi16 sp, sp, 4 166; GENERIC-NEXT: .cfi_def_cfa_offset 4 167; GENERIC-NEXT: cmpnei16 a0, 10 168; GENERIC-NEXT: bf16 .LBB4_2 169; GENERIC-NEXT: # %bb.1: # %label1 170; GENERIC-NEXT: movi16 a0, 1 171; GENERIC-NEXT: addi16 sp, sp, 4 172; GENERIC-NEXT: rts16 173; GENERIC-NEXT: .LBB4_2: # %label2 174; GENERIC-NEXT: movi16 a0, 0 175; GENERIC-NEXT: addi16 sp, sp, 4 176; GENERIC-NEXT: rts16 177entry: 178 %icmp = icmp ne i32 %x, 10 179 br i1 %icmp, label %label1, label %label2 180label1: 181 ret i32 1 182label2: 183 ret i32 0 184} 185 186define i32 @brR0_ne(i32 %x) { 187; CHECK-LABEL: brR0_ne: 188; CHECK: # %bb.0: # %entry 189; CHECK-NEXT: bez32 a0, .LBB5_2 190; CHECK-NEXT: # %bb.1: # %label1 191; CHECK-NEXT: movi16 a0, 1 192; CHECK-NEXT: rts16 193; CHECK-NEXT: .LBB5_2: # %label2 194; CHECK-NEXT: movi16 a0, 0 195; CHECK-NEXT: rts16 196; 197; GENERIC-LABEL: brR0_ne: 198; GENERIC: # %bb.0: # %entry 199; GENERIC-NEXT: .cfi_def_cfa_offset 0 200; GENERIC-NEXT: subi16 sp, sp, 4 201; GENERIC-NEXT: .cfi_def_cfa_offset 4 202; GENERIC-NEXT: cmpnei16 a0, 0 203; GENERIC-NEXT: bf16 .LBB5_2 204; GENERIC-NEXT: # %bb.1: # %label1 205; GENERIC-NEXT: movi16 a0, 1 206; GENERIC-NEXT: addi16 sp, sp, 4 207; GENERIC-NEXT: rts16 208; GENERIC-NEXT: .LBB5_2: # %label2 209; GENERIC-NEXT: movi16 a0, 0 210; GENERIC-NEXT: addi16 sp, sp, 4 211; GENERIC-NEXT: rts16 212entry: 213 %icmp = icmp ne i32 %x, 0 214 br i1 %icmp, label %label1, label %label2 215label1: 216 ret i32 1 217label2: 218 ret i32 0 219} 220 221;UGT 222define i32 @brRR_ugt(i32 %x, i32 %y) { 223; CHECK-LABEL: brRR_ugt: 224; CHECK: # %bb.0: # %entry 225; CHECK-NEXT: cmphs16 a0, a1 226; CHECK-NEXT: bt32 .LBB6_2 227; CHECK-NEXT: # %bb.1: # %label1 228; CHECK-NEXT: movi16 a0, 1 229; CHECK-NEXT: rts16 230; CHECK-NEXT: .LBB6_2: # %label2 231; CHECK-NEXT: movi16 a0, 0 232; CHECK-NEXT: rts16 233; 234; GENERIC-LABEL: brRR_ugt: 235; GENERIC: # %bb.0: # %entry 236; GENERIC-NEXT: .cfi_def_cfa_offset 0 237; GENERIC-NEXT: subi16 sp, sp, 4 238; GENERIC-NEXT: .cfi_def_cfa_offset 4 239; GENERIC-NEXT: cmphs16 a0, a1 240; GENERIC-NEXT: bt16 .LBB6_2 241; GENERIC-NEXT: # %bb.1: # %label1 242; GENERIC-NEXT: movi16 a0, 1 243; GENERIC-NEXT: addi16 sp, sp, 4 244; GENERIC-NEXT: rts16 245; GENERIC-NEXT: .LBB6_2: # %label2 246; GENERIC-NEXT: movi16 a0, 0 247; GENERIC-NEXT: addi16 sp, sp, 4 248; GENERIC-NEXT: rts16 249; CHECK-UGTXT: icmpu32 a0, a1, a0 250; CHECK-UGTXT: rts16 251entry: 252 %icmp = icmp ugt i32 %y, %x 253 br i1 %icmp, label %label1, label %label2 254label1: 255 ret i32 1 256label2: 257 ret i32 0 258} 259 260define i32 @brRI_ugt(i32 %x) { 261; CHECK-LABEL: brRI_ugt: 262; CHECK: # %bb.0: # %entry 263; CHECK-NEXT: cmphsi16 a0, 11 264; CHECK-NEXT: bf32 .LBB7_2 265; CHECK-NEXT: # %bb.1: # %label1 266; CHECK-NEXT: movi16 a0, 1 267; CHECK-NEXT: rts16 268; CHECK-NEXT: .LBB7_2: # %label2 269; CHECK-NEXT: movi16 a0, 0 270; CHECK-NEXT: rts16 271; 272; GENERIC-LABEL: brRI_ugt: 273; GENERIC: # %bb.0: # %entry 274; GENERIC-NEXT: .cfi_def_cfa_offset 0 275; GENERIC-NEXT: subi16 sp, sp, 4 276; GENERIC-NEXT: .cfi_def_cfa_offset 4 277; GENERIC-NEXT: cmphsi16 a0, 11 278; GENERIC-NEXT: bf16 .LBB7_2 279; GENERIC-NEXT: # %bb.1: # %label1 280; GENERIC-NEXT: movi16 a0, 1 281; GENERIC-NEXT: addi16 sp, sp, 4 282; GENERIC-NEXT: rts16 283; GENERIC-NEXT: .LBB7_2: # %label2 284; GENERIC-NEXT: movi16 a0, 0 285; GENERIC-NEXT: addi16 sp, sp, 4 286; GENERIC-NEXT: rts16 287; CHECK-UGTXT: icmpu32 a0, a1, a0 288; CHECK-UGTXT: rts16 289entry: 290 %icmp = icmp ugt i32 %x, 10 291 br i1 %icmp, label %label1, label %label2 292label1: 293 ret i32 1 294label2: 295 ret i32 0 296} 297 298define i32 @brR0_ugt(i32 %x) { 299; CHECK-LABEL: brR0_ugt: 300; CHECK: # %bb.0: # %entry 301; CHECK-NEXT: bez32 a0, .LBB8_2 302; CHECK-NEXT: # %bb.1: # %label1 303; CHECK-NEXT: movi16 a0, 1 304; CHECK-NEXT: rts16 305; CHECK-NEXT: .LBB8_2: # %label2 306; CHECK-NEXT: movi16 a0, 0 307; CHECK-NEXT: rts16 308; 309; GENERIC-LABEL: brR0_ugt: 310; GENERIC: # %bb.0: # %entry 311; GENERIC-NEXT: .cfi_def_cfa_offset 0 312; GENERIC-NEXT: subi16 sp, sp, 4 313; GENERIC-NEXT: .cfi_def_cfa_offset 4 314; GENERIC-NEXT: cmpnei16 a0, 0 315; GENERIC-NEXT: bf16 .LBB8_2 316; GENERIC-NEXT: # %bb.1: # %label1 317; GENERIC-NEXT: movi16 a0, 1 318; GENERIC-NEXT: addi16 sp, sp, 4 319; GENERIC-NEXT: rts16 320; GENERIC-NEXT: .LBB8_2: # %label2 321; GENERIC-NEXT: movi16 a0, 0 322; GENERIC-NEXT: addi16 sp, sp, 4 323; GENERIC-NEXT: rts16 324; CHECK-UGTXT: icmpu32 a0, a1, a0 325; CHECK-UGTXT: rts16 326entry: 327 %icmp = icmp ugt i32 %x, 0 328 br i1 %icmp, label %label1, label %label2 329label1: 330 ret i32 1 331label2: 332 ret i32 0 333} 334 335;UGE 336define i32 @brRR_uge(i32 %x, i32 %y) { 337; CHECK-LABEL: brRR_uge: 338; CHECK: # %bb.0: # %entry 339; CHECK-NEXT: cmphs16 a1, a0 340; CHECK-NEXT: bf32 .LBB9_2 341; CHECK-NEXT: # %bb.1: # %label1 342; CHECK-NEXT: movi16 a0, 1 343; CHECK-NEXT: rts16 344; CHECK-NEXT: .LBB9_2: # %label2 345; CHECK-NEXT: movi16 a0, 0 346; CHECK-NEXT: rts16 347; 348; GENERIC-LABEL: brRR_uge: 349; GENERIC: # %bb.0: # %entry 350; GENERIC-NEXT: .cfi_def_cfa_offset 0 351; GENERIC-NEXT: subi16 sp, sp, 4 352; GENERIC-NEXT: .cfi_def_cfa_offset 4 353; GENERIC-NEXT: cmphs16 a1, a0 354; GENERIC-NEXT: bf16 .LBB9_2 355; GENERIC-NEXT: # %bb.1: # %label1 356; GENERIC-NEXT: movi16 a0, 1 357; GENERIC-NEXT: addi16 sp, sp, 4 358; GENERIC-NEXT: rts16 359; GENERIC-NEXT: .LBB9_2: # %label2 360; GENERIC-NEXT: movi16 a0, 0 361; GENERIC-NEXT: addi16 sp, sp, 4 362; GENERIC-NEXT: rts16 363; CHECK-UGTXT: icmpu32 a0, a1, a0 364; CHECK-UGTXT: rts16 365entry: 366 %icmp = icmp uge i32 %y, %x 367 br i1 %icmp, label %label1, label %label2 368label1: 369 ret i32 1 370label2: 371 ret i32 0 372} 373 374define i32 @brRI_uge(i32 %x) { 375; CHECK-LABEL: brRI_uge: 376; CHECK: # %bb.0: # %entry 377; CHECK-NEXT: cmphsi16 a0, 10 378; CHECK-NEXT: bf32 .LBB10_2 379; CHECK-NEXT: # %bb.1: # %label1 380; CHECK-NEXT: movi16 a0, 1 381; CHECK-NEXT: rts16 382; CHECK-NEXT: .LBB10_2: # %label2 383; CHECK-NEXT: movi16 a0, 0 384; CHECK-NEXT: rts16 385; 386; GENERIC-LABEL: brRI_uge: 387; GENERIC: # %bb.0: # %entry 388; GENERIC-NEXT: .cfi_def_cfa_offset 0 389; GENERIC-NEXT: subi16 sp, sp, 4 390; GENERIC-NEXT: .cfi_def_cfa_offset 4 391; GENERIC-NEXT: cmphsi16 a0, 10 392; GENERIC-NEXT: bf16 .LBB10_2 393; GENERIC-NEXT: # %bb.1: # %label1 394; GENERIC-NEXT: movi16 a0, 1 395; GENERIC-NEXT: addi16 sp, sp, 4 396; GENERIC-NEXT: rts16 397; GENERIC-NEXT: .LBB10_2: # %label2 398; GENERIC-NEXT: movi16 a0, 0 399; GENERIC-NEXT: addi16 sp, sp, 4 400; GENERIC-NEXT: rts16 401; CHECK-UGTXT: icmpu32 a0, a1, a0 402; CHECK-UGTXT: rts16 403entry: 404 %icmp = icmp uge i32 %x, 10 405 br i1 %icmp, label %label1, label %label2 406label1: 407 ret i32 1 408label2: 409 ret i32 0 410} 411 412;ULT 413define i32 @brRR_ult(i32 %x, i32 %y) { 414; CHECK-LABEL: brRR_ult: 415; CHECK: # %bb.0: # %entry 416; CHECK-NEXT: cmphs16 a1, a0 417; CHECK-NEXT: bt32 .LBB11_2 418; CHECK-NEXT: # %bb.1: # %label1 419; CHECK-NEXT: movi16 a0, 1 420; CHECK-NEXT: rts16 421; CHECK-NEXT: .LBB11_2: # %label2 422; CHECK-NEXT: movi16 a0, 0 423; CHECK-NEXT: rts16 424; 425; GENERIC-LABEL: brRR_ult: 426; GENERIC: # %bb.0: # %entry 427; GENERIC-NEXT: .cfi_def_cfa_offset 0 428; GENERIC-NEXT: subi16 sp, sp, 4 429; GENERIC-NEXT: .cfi_def_cfa_offset 4 430; GENERIC-NEXT: cmphs16 a1, a0 431; GENERIC-NEXT: bt16 .LBB11_2 432; GENERIC-NEXT: # %bb.1: # %label1 433; GENERIC-NEXT: movi16 a0, 1 434; GENERIC-NEXT: addi16 sp, sp, 4 435; GENERIC-NEXT: rts16 436; GENERIC-NEXT: .LBB11_2: # %label2 437; GENERIC-NEXT: movi16 a0, 0 438; GENERIC-NEXT: addi16 sp, sp, 4 439; GENERIC-NEXT: rts16 440; CHECK-UGTXT: icmpu32 a0, a1, a0 441; CHECK-UGTXT: rts16 442entry: 443 %icmp = icmp ult i32 %y, %x 444 br i1 %icmp, label %label1, label %label2 445label1: 446 ret i32 1 447label2: 448 ret i32 0 449} 450 451define i32 @brRI_ult(i32 %x) { 452; CHECK-LABEL: brRI_ult: 453; CHECK: # %bb.0: # %entry 454; CHECK-NEXT: movi16 a1, 9 455; CHECK-NEXT: cmphs16 a1, a0 456; CHECK-NEXT: bf32 .LBB12_2 457; CHECK-NEXT: # %bb.1: # %label1 458; CHECK-NEXT: movi16 a0, 1 459; CHECK-NEXT: rts16 460; CHECK-NEXT: .LBB12_2: # %label2 461; CHECK-NEXT: movi16 a0, 0 462; CHECK-NEXT: rts16 463; 464; GENERIC-LABEL: brRI_ult: 465; GENERIC: # %bb.0: # %entry 466; GENERIC-NEXT: .cfi_def_cfa_offset 0 467; GENERIC-NEXT: subi16 sp, sp, 4 468; GENERIC-NEXT: .cfi_def_cfa_offset 4 469; GENERIC-NEXT: movi16 a1, 9 470; GENERIC-NEXT: cmphs16 a1, a0 471; GENERIC-NEXT: bf16 .LBB12_2 472; GENERIC-NEXT: # %bb.1: # %label1 473; GENERIC-NEXT: movi16 a0, 1 474; GENERIC-NEXT: addi16 sp, sp, 4 475; GENERIC-NEXT: rts16 476; GENERIC-NEXT: .LBB12_2: # %label2 477; GENERIC-NEXT: movi16 a0, 0 478; GENERIC-NEXT: addi16 sp, sp, 4 479; GENERIC-NEXT: rts16 480; CHECK-UGTXT: icmpu32 a0, a1, a0 481; CHECK-UGTXT: rts16 482entry: 483 %icmp = icmp ult i32 %x, 10 484 br i1 %icmp, label %label1, label %label2 485label1: 486 ret i32 1 487label2: 488 ret i32 0 489} 490 491 492;ULE 493define i32 @brRR_ule(i32 %x, i32 %y) { 494; CHECK-LABEL: brRR_ule: 495; CHECK: # %bb.0: # %entry 496; CHECK-NEXT: cmphs16 a0, a1 497; CHECK-NEXT: bf32 .LBB13_2 498; CHECK-NEXT: # %bb.1: # %label1 499; CHECK-NEXT: movi16 a0, 1 500; CHECK-NEXT: rts16 501; CHECK-NEXT: .LBB13_2: # %label2 502; CHECK-NEXT: movi16 a0, 0 503; CHECK-NEXT: rts16 504; 505; GENERIC-LABEL: brRR_ule: 506; GENERIC: # %bb.0: # %entry 507; GENERIC-NEXT: .cfi_def_cfa_offset 0 508; GENERIC-NEXT: subi16 sp, sp, 4 509; GENERIC-NEXT: .cfi_def_cfa_offset 4 510; GENERIC-NEXT: cmphs16 a0, a1 511; GENERIC-NEXT: bf16 .LBB13_2 512; GENERIC-NEXT: # %bb.1: # %label1 513; GENERIC-NEXT: movi16 a0, 1 514; GENERIC-NEXT: addi16 sp, sp, 4 515; GENERIC-NEXT: rts16 516; GENERIC-NEXT: .LBB13_2: # %label2 517; GENERIC-NEXT: movi16 a0, 0 518; GENERIC-NEXT: addi16 sp, sp, 4 519; GENERIC-NEXT: rts16 520; CHECK-UGTXT: icmpu32 a0, a1, a0 521; CHECK-UGTXT: rts16 522entry: 523 %icmp = icmp ule i32 %y, %x 524 br i1 %icmp, label %label1, label %label2 525label1: 526 ret i32 1 527label2: 528 ret i32 0 529} 530 531define i32 @brRI_ule(i32 %x) { 532; CHECK-LABEL: brRI_ule: 533; CHECK: # %bb.0: # %entry 534; CHECK-NEXT: movi16 a1, 10 535; CHECK-NEXT: cmphs16 a1, a0 536; CHECK-NEXT: bf32 .LBB14_2 537; CHECK-NEXT: # %bb.1: # %label1 538; CHECK-NEXT: movi16 a0, 1 539; CHECK-NEXT: rts16 540; CHECK-NEXT: .LBB14_2: # %label2 541; CHECK-NEXT: movi16 a0, 0 542; CHECK-NEXT: rts16 543; 544; GENERIC-LABEL: brRI_ule: 545; GENERIC: # %bb.0: # %entry 546; GENERIC-NEXT: .cfi_def_cfa_offset 0 547; GENERIC-NEXT: subi16 sp, sp, 4 548; GENERIC-NEXT: .cfi_def_cfa_offset 4 549; GENERIC-NEXT: movi16 a1, 10 550; GENERIC-NEXT: cmphs16 a1, a0 551; GENERIC-NEXT: bf16 .LBB14_2 552; GENERIC-NEXT: # %bb.1: # %label1 553; GENERIC-NEXT: movi16 a0, 1 554; GENERIC-NEXT: addi16 sp, sp, 4 555; GENERIC-NEXT: rts16 556; GENERIC-NEXT: .LBB14_2: # %label2 557; GENERIC-NEXT: movi16 a0, 0 558; GENERIC-NEXT: addi16 sp, sp, 4 559; GENERIC-NEXT: rts16 560; CHECK-UGTXT: icmpu32 a0, a1, a0 561; CHECK-UGTXT: rts16 562entry: 563 %icmp = icmp ule i32 %x, 10 564 br i1 %icmp, label %label1, label %label2 565label1: 566 ret i32 1 567label2: 568 ret i32 0 569} 570 571define i32 @brR0_ule(i32 %x) { 572; CHECK-LABEL: brR0_ule: 573; CHECK: # %bb.0: # %entry 574; CHECK-NEXT: bnez32 a0, .LBB15_2 575; CHECK-NEXT: # %bb.1: # %label1 576; CHECK-NEXT: movi16 a0, 1 577; CHECK-NEXT: rts16 578; CHECK-NEXT: .LBB15_2: # %label2 579; CHECK-NEXT: movi16 a0, 0 580; CHECK-NEXT: rts16 581; 582; GENERIC-LABEL: brR0_ule: 583; GENERIC: # %bb.0: # %entry 584; GENERIC-NEXT: .cfi_def_cfa_offset 0 585; GENERIC-NEXT: subi16 sp, sp, 4 586; GENERIC-NEXT: .cfi_def_cfa_offset 4 587; GENERIC-NEXT: cmpnei16 a0, 0 588; GENERIC-NEXT: bt16 .LBB15_2 589; GENERIC-NEXT: # %bb.1: # %label1 590; GENERIC-NEXT: movi16 a0, 1 591; GENERIC-NEXT: addi16 sp, sp, 4 592; GENERIC-NEXT: rts16 593; GENERIC-NEXT: .LBB15_2: # %label2 594; GENERIC-NEXT: movi16 a0, 0 595; GENERIC-NEXT: addi16 sp, sp, 4 596; GENERIC-NEXT: rts16 597; CHECK-UGTXT: icmpu32 a0, a1, a0 598; CHECK-UGTXT: rts16 599entry: 600 %icmp = icmp ule i32 %x, 0 601 br i1 %icmp, label %label1, label %label2 602label1: 603 ret i32 1 604label2: 605 ret i32 0 606} 607 608;SGT 609define i32 @brRR_sgt(i32 %x, i32 %y) { 610; CHECK-LABEL: brRR_sgt: 611; CHECK: # %bb.0: # %entry 612; CHECK-NEXT: cmplt16 a0, a1 613; CHECK-NEXT: bf32 .LBB16_2 614; CHECK-NEXT: # %bb.1: # %label1 615; CHECK-NEXT: movi16 a0, 1 616; CHECK-NEXT: rts16 617; CHECK-NEXT: .LBB16_2: # %label2 618; CHECK-NEXT: movi16 a0, 0 619; CHECK-NEXT: rts16 620; 621; GENERIC-LABEL: brRR_sgt: 622; GENERIC: # %bb.0: # %entry 623; GENERIC-NEXT: .cfi_def_cfa_offset 0 624; GENERIC-NEXT: subi16 sp, sp, 4 625; GENERIC-NEXT: .cfi_def_cfa_offset 4 626; GENERIC-NEXT: cmplt16 a0, a1 627; GENERIC-NEXT: bf16 .LBB16_2 628; GENERIC-NEXT: # %bb.1: # %label1 629; GENERIC-NEXT: movi16 a0, 1 630; GENERIC-NEXT: addi16 sp, sp, 4 631; GENERIC-NEXT: rts16 632; GENERIC-NEXT: .LBB16_2: # %label2 633; GENERIC-NEXT: movi16 a0, 0 634; GENERIC-NEXT: addi16 sp, sp, 4 635; GENERIC-NEXT: rts16 636; CHECK-UGTXT: icmpu32 a0, a1, a0 637; CHECK-UGTXT: rts16 638entry: 639 %icmp = icmp sgt i32 %y, %x 640 br i1 %icmp, label %label1, label %label2 641label1: 642 ret i32 1 643label2: 644 ret i32 0 645} 646 647define i32 @brRI_sgt(i32 %x) { 648; CHECK-LABEL: brRI_sgt: 649; CHECK: # %bb.0: # %entry 650; CHECK-NEXT: cmplti16 a0, 11 651; CHECK-NEXT: bt32 .LBB17_2 652; CHECK-NEXT: # %bb.1: # %label1 653; CHECK-NEXT: movi16 a0, 1 654; CHECK-NEXT: rts16 655; CHECK-NEXT: .LBB17_2: # %label2 656; CHECK-NEXT: movi16 a0, 0 657; CHECK-NEXT: rts16 658; 659; GENERIC-LABEL: brRI_sgt: 660; GENERIC: # %bb.0: # %entry 661; GENERIC-NEXT: .cfi_def_cfa_offset 0 662; GENERIC-NEXT: subi16 sp, sp, 4 663; GENERIC-NEXT: .cfi_def_cfa_offset 4 664; GENERIC-NEXT: cmplti16 a0, 11 665; GENERIC-NEXT: bt16 .LBB17_2 666; GENERIC-NEXT: # %bb.1: # %label1 667; GENERIC-NEXT: movi16 a0, 1 668; GENERIC-NEXT: addi16 sp, sp, 4 669; GENERIC-NEXT: rts16 670; GENERIC-NEXT: .LBB17_2: # %label2 671; GENERIC-NEXT: movi16 a0, 0 672; GENERIC-NEXT: addi16 sp, sp, 4 673; GENERIC-NEXT: rts16 674; CHECK-UGTXT: icmpu32 a0, a1, a0 675; CHECK-UGTXT: rts16 676entry: 677 %icmp = icmp sgt i32 %x, 10 678 br i1 %icmp, label %label1, label %label2 679label1: 680 ret i32 1 681label2: 682 ret i32 0 683} 684 685define i32 @brR0_sgt(i32 %x) { 686; CHECK-LABEL: brR0_sgt: 687; CHECK: # %bb.0: # %entry 688; CHECK-NEXT: cmplti16 a0, 1 689; CHECK-NEXT: bt32 .LBB18_2 690; CHECK-NEXT: # %bb.1: # %label1 691; CHECK-NEXT: movi16 a0, 1 692; CHECK-NEXT: rts16 693; CHECK-NEXT: .LBB18_2: # %label2 694; CHECK-NEXT: movi16 a0, 0 695; CHECK-NEXT: rts16 696; 697; GENERIC-LABEL: brR0_sgt: 698; GENERIC: # %bb.0: # %entry 699; GENERIC-NEXT: .cfi_def_cfa_offset 0 700; GENERIC-NEXT: subi16 sp, sp, 4 701; GENERIC-NEXT: .cfi_def_cfa_offset 4 702; GENERIC-NEXT: cmplti16 a0, 1 703; GENERIC-NEXT: bt16 .LBB18_2 704; GENERIC-NEXT: # %bb.1: # %label1 705; GENERIC-NEXT: movi16 a0, 1 706; GENERIC-NEXT: addi16 sp, sp, 4 707; GENERIC-NEXT: rts16 708; GENERIC-NEXT: .LBB18_2: # %label2 709; GENERIC-NEXT: movi16 a0, 0 710; GENERIC-NEXT: addi16 sp, sp, 4 711; GENERIC-NEXT: rts16 712; CHECK-UGTXT: icmpu32 a0, a1, a0 713; CHECK-UGTXT: rts16 714entry: 715 %icmp = icmp sgt i32 %x, 0 716 br i1 %icmp, label %label1, label %label2 717label1: 718 ret i32 1 719label2: 720 ret i32 0 721} 722 723;SGE 724define i32 @brRR_sge(i32 %x, i32 %y) { 725; CHECK-LABEL: brRR_sge: 726; CHECK: # %bb.0: # %entry 727; CHECK-NEXT: cmplt16 a1, a0 728; CHECK-NEXT: bt32 .LBB19_2 729; CHECK-NEXT: # %bb.1: # %label1 730; CHECK-NEXT: movi16 a0, 1 731; CHECK-NEXT: rts16 732; CHECK-NEXT: .LBB19_2: # %label2 733; CHECK-NEXT: movi16 a0, 0 734; CHECK-NEXT: rts16 735; 736; GENERIC-LABEL: brRR_sge: 737; GENERIC: # %bb.0: # %entry 738; GENERIC-NEXT: .cfi_def_cfa_offset 0 739; GENERIC-NEXT: subi16 sp, sp, 4 740; GENERIC-NEXT: .cfi_def_cfa_offset 4 741; GENERIC-NEXT: cmplt16 a1, a0 742; GENERIC-NEXT: bt16 .LBB19_2 743; GENERIC-NEXT: # %bb.1: # %label1 744; GENERIC-NEXT: movi16 a0, 1 745; GENERIC-NEXT: addi16 sp, sp, 4 746; GENERIC-NEXT: rts16 747; GENERIC-NEXT: .LBB19_2: # %label2 748; GENERIC-NEXT: movi16 a0, 0 749; GENERIC-NEXT: addi16 sp, sp, 4 750; GENERIC-NEXT: rts16 751; CHECK-UGTXT: icmpu32 a0, a1, a0 752; CHECK-UGTXT: rts16 753entry: 754 %icmp = icmp sge i32 %y, %x 755 br i1 %icmp, label %label1, label %label2 756label1: 757 ret i32 1 758label2: 759 ret i32 0 760} 761 762define i32 @brRI_sge(i32 %x) { 763; CHECK-LABEL: brRI_sge: 764; CHECK: # %bb.0: # %entry 765; CHECK-NEXT: cmplti16 a0, 10 766; CHECK-NEXT: bt32 .LBB20_2 767; CHECK-NEXT: # %bb.1: # %label1 768; CHECK-NEXT: movi16 a0, 1 769; CHECK-NEXT: rts16 770; CHECK-NEXT: .LBB20_2: # %label2 771; CHECK-NEXT: movi16 a0, 0 772; CHECK-NEXT: rts16 773; 774; GENERIC-LABEL: brRI_sge: 775; GENERIC: # %bb.0: # %entry 776; GENERIC-NEXT: .cfi_def_cfa_offset 0 777; GENERIC-NEXT: subi16 sp, sp, 4 778; GENERIC-NEXT: .cfi_def_cfa_offset 4 779; GENERIC-NEXT: cmplti16 a0, 10 780; GENERIC-NEXT: bt16 .LBB20_2 781; GENERIC-NEXT: # %bb.1: # %label1 782; GENERIC-NEXT: movi16 a0, 1 783; GENERIC-NEXT: addi16 sp, sp, 4 784; GENERIC-NEXT: rts16 785; GENERIC-NEXT: .LBB20_2: # %label2 786; GENERIC-NEXT: movi16 a0, 0 787; GENERIC-NEXT: addi16 sp, sp, 4 788; GENERIC-NEXT: rts16 789; CHECK-UGTXT: icmpu32 a0, a1, a0 790; CHECK-UGTXT: rts16 791entry: 792 %icmp = icmp sge i32 %x, 10 793 br i1 %icmp, label %label1, label %label2 794label1: 795 ret i32 1 796label2: 797 ret i32 0 798} 799 800define i32 @brR0_sge(i32 %x) { 801; CHECK-LABEL: brR0_sge: 802; CHECK: # %bb.0: # %entry 803; CHECK-NEXT: blz32 a0, .LBB21_2 804; CHECK-NEXT: # %bb.1: # %label1 805; CHECK-NEXT: movi16 a0, 1 806; CHECK-NEXT: rts16 807; CHECK-NEXT: .LBB21_2: # %label2 808; CHECK-NEXT: movi16 a0, 0 809; CHECK-NEXT: rts16 810; 811; GENERIC-LABEL: brR0_sge: 812; GENERIC: # %bb.0: # %entry 813; GENERIC-NEXT: .cfi_def_cfa_offset 0 814; GENERIC-NEXT: subi16 sp, sp, 4 815; GENERIC-NEXT: .cfi_def_cfa_offset 4 816; GENERIC-NEXT: movi16 a1, 0 817; GENERIC-NEXT: cmplt16 a0, a1 818; GENERIC-NEXT: bt16 .LBB21_2 819; GENERIC-NEXT: # %bb.1: # %label1 820; GENERIC-NEXT: movi16 a0, 1 821; GENERIC-NEXT: addi16 sp, sp, 4 822; GENERIC-NEXT: rts16 823; GENERIC-NEXT: .LBB21_2: # %label2 824; GENERIC-NEXT: movi16 a0, 0 825; GENERIC-NEXT: addi16 sp, sp, 4 826; GENERIC-NEXT: rts16 827; CHECK-UGTXT: icmpu32 a0, a1, a0 828; CHECK-UGTXT: rts16 829entry: 830 %icmp = icmp sge i32 %x, 0 831 br i1 %icmp, label %label1, label %label2 832label1: 833 ret i32 1 834label2: 835 ret i32 0 836} 837 838;SLT 839define i32 @brRR_slt(i32 %x, i32 %y) { 840; CHECK-LABEL: brRR_slt: 841; CHECK: # %bb.0: # %entry 842; CHECK-NEXT: cmplt16 a1, a0 843; CHECK-NEXT: bf32 .LBB22_2 844; CHECK-NEXT: # %bb.1: # %label1 845; CHECK-NEXT: movi16 a0, 1 846; CHECK-NEXT: rts16 847; CHECK-NEXT: .LBB22_2: # %label2 848; CHECK-NEXT: movi16 a0, 0 849; CHECK-NEXT: rts16 850; 851; GENERIC-LABEL: brRR_slt: 852; GENERIC: # %bb.0: # %entry 853; GENERIC-NEXT: .cfi_def_cfa_offset 0 854; GENERIC-NEXT: subi16 sp, sp, 4 855; GENERIC-NEXT: .cfi_def_cfa_offset 4 856; GENERIC-NEXT: cmplt16 a1, a0 857; GENERIC-NEXT: bf16 .LBB22_2 858; GENERIC-NEXT: # %bb.1: # %label1 859; GENERIC-NEXT: movi16 a0, 1 860; GENERIC-NEXT: addi16 sp, sp, 4 861; GENERIC-NEXT: rts16 862; GENERIC-NEXT: .LBB22_2: # %label2 863; GENERIC-NEXT: movi16 a0, 0 864; GENERIC-NEXT: addi16 sp, sp, 4 865; GENERIC-NEXT: rts16 866; CHECK-UGTXT: icmpu32 a0, a1, a0 867; CHECK-UGTXT: rts16 868entry: 869 %icmp = icmp slt i32 %y, %x 870 br i1 %icmp, label %label1, label %label2 871label1: 872 ret i32 1 873label2: 874 ret i32 0 875} 876 877define i32 @brRI_slt(i32 %x) { 878; CHECK-LABEL: brRI_slt: 879; CHECK: # %bb.0: # %entry 880; CHECK-NEXT: movi16 a1, 9 881; CHECK-NEXT: cmplt16 a1, a0 882; CHECK-NEXT: bt32 .LBB23_2 883; CHECK-NEXT: # %bb.1: # %label1 884; CHECK-NEXT: movi16 a0, 1 885; CHECK-NEXT: rts16 886; CHECK-NEXT: .LBB23_2: # %label2 887; CHECK-NEXT: movi16 a0, 0 888; CHECK-NEXT: rts16 889; 890; GENERIC-LABEL: brRI_slt: 891; GENERIC: # %bb.0: # %entry 892; GENERIC-NEXT: .cfi_def_cfa_offset 0 893; GENERIC-NEXT: subi16 sp, sp, 4 894; GENERIC-NEXT: .cfi_def_cfa_offset 4 895; GENERIC-NEXT: movi16 a1, 9 896; GENERIC-NEXT: cmplt16 a1, a0 897; GENERIC-NEXT: bt16 .LBB23_2 898; GENERIC-NEXT: # %bb.1: # %label1 899; GENERIC-NEXT: movi16 a0, 1 900; GENERIC-NEXT: addi16 sp, sp, 4 901; GENERIC-NEXT: rts16 902; GENERIC-NEXT: .LBB23_2: # %label2 903; GENERIC-NEXT: movi16 a0, 0 904; GENERIC-NEXT: addi16 sp, sp, 4 905; GENERIC-NEXT: rts16 906; CHECK-UGTXT: icmpu32 a0, a1, a0 907; CHECK-UGTXT: rts16 908entry: 909 %icmp = icmp slt i32 %x, 10 910 br i1 %icmp, label %label1, label %label2 911label1: 912 ret i32 1 913label2: 914 ret i32 0 915} 916 917define i32 @brR0_slt(i32 %x) { 918; CHECK-LABEL: brR0_slt: 919; CHECK: # %bb.0: # %entry 920; CHECK-NEXT: movih32 a1, 65535 921; CHECK-NEXT: ori32 a1, a1, 65535 922; CHECK-NEXT: cmplt16 a1, a0 923; CHECK-NEXT: bf32 .LBB24_2 924; CHECK-NEXT: # %bb.1: # %label2 925; CHECK-NEXT: movi16 a0, 0 926; CHECK-NEXT: rts16 927; CHECK-NEXT: .LBB24_2: # %label1 928; CHECK-NEXT: movi16 a0, 1 929; CHECK-NEXT: rts16 930; 931; GENERIC-LABEL: brR0_slt: 932; GENERIC: # %bb.0: # %entry 933; GENERIC-NEXT: .cfi_def_cfa_offset 0 934; GENERIC-NEXT: subi16 sp, sp, 4 935; GENERIC-NEXT: .cfi_def_cfa_offset 4 936; GENERIC-NEXT: movi16 a1, 255 937; GENERIC-NEXT: lsli16 a2, a1, 24 938; GENERIC-NEXT: lsli16 a3, a1, 16 939; GENERIC-NEXT: or16 a3, a2 940; GENERIC-NEXT: lsli16 a2, a1, 8 941; GENERIC-NEXT: or16 a2, a3 942; GENERIC-NEXT: or16 a2, a1 943; GENERIC-NEXT: cmplt16 a2, a0 944; GENERIC-NEXT: bf16 .LBB24_2 945; GENERIC-NEXT: # %bb.1: # %label2 946; GENERIC-NEXT: movi16 a0, 0 947; GENERIC-NEXT: addi16 sp, sp, 4 948; GENERIC-NEXT: rts16 949; GENERIC-NEXT: .LBB24_2: # %label1 950; GENERIC-NEXT: movi16 a0, 1 951; GENERIC-NEXT: addi16 sp, sp, 4 952; GENERIC-NEXT: rts16 953; CHECK-UGTXT: icmpu32 a0, a1, a0 954; CHECK-UGTXT: rts16 955entry: 956 %icmp = icmp slt i32 %x, 0 957 br i1 %icmp, label %label1, label %label2 958label1: 959 ret i32 1 960label2: 961 ret i32 0 962} 963 964;SLE 965define i32 @brRR_sle(i32 %x, i32 %y) { 966; CHECK-LABEL: brRR_sle: 967; CHECK: # %bb.0: # %entry 968; CHECK-NEXT: cmplt16 a0, a1 969; CHECK-NEXT: bt32 .LBB25_2 970; CHECK-NEXT: # %bb.1: # %label1 971; CHECK-NEXT: movi16 a0, 1 972; CHECK-NEXT: rts16 973; CHECK-NEXT: .LBB25_2: # %label2 974; CHECK-NEXT: movi16 a0, 0 975; CHECK-NEXT: rts16 976; 977; GENERIC-LABEL: brRR_sle: 978; GENERIC: # %bb.0: # %entry 979; GENERIC-NEXT: .cfi_def_cfa_offset 0 980; GENERIC-NEXT: subi16 sp, sp, 4 981; GENERIC-NEXT: .cfi_def_cfa_offset 4 982; GENERIC-NEXT: cmplt16 a0, a1 983; GENERIC-NEXT: bt16 .LBB25_2 984; GENERIC-NEXT: # %bb.1: # %label1 985; GENERIC-NEXT: movi16 a0, 1 986; GENERIC-NEXT: addi16 sp, sp, 4 987; GENERIC-NEXT: rts16 988; GENERIC-NEXT: .LBB25_2: # %label2 989; GENERIC-NEXT: movi16 a0, 0 990; GENERIC-NEXT: addi16 sp, sp, 4 991; GENERIC-NEXT: rts16 992; CHECK-UGTXT: icmpu32 a0, a1, a0 993; CHECK-UGTXT: rts16 994entry: 995 %icmp = icmp sle i32 %y, %x 996 br i1 %icmp, label %label1, label %label2 997label1: 998 ret i32 1 999label2: 1000 ret i32 0 1001} 1002 1003define i32 @brRI_sle(i32 %x) { 1004; CHECK-LABEL: brRI_sle: 1005; CHECK: # %bb.0: # %entry 1006; CHECK-NEXT: movi16 a1, 10 1007; CHECK-NEXT: cmplt16 a1, a0 1008; CHECK-NEXT: bt32 .LBB26_2 1009; CHECK-NEXT: # %bb.1: # %label1 1010; CHECK-NEXT: movi16 a0, 1 1011; CHECK-NEXT: rts16 1012; CHECK-NEXT: .LBB26_2: # %label2 1013; CHECK-NEXT: movi16 a0, 0 1014; CHECK-NEXT: rts16 1015; 1016; GENERIC-LABEL: brRI_sle: 1017; GENERIC: # %bb.0: # %entry 1018; GENERIC-NEXT: .cfi_def_cfa_offset 0 1019; GENERIC-NEXT: subi16 sp, sp, 4 1020; GENERIC-NEXT: .cfi_def_cfa_offset 4 1021; GENERIC-NEXT: movi16 a1, 10 1022; GENERIC-NEXT: cmplt16 a1, a0 1023; GENERIC-NEXT: bt16 .LBB26_2 1024; GENERIC-NEXT: # %bb.1: # %label1 1025; GENERIC-NEXT: movi16 a0, 1 1026; GENERIC-NEXT: addi16 sp, sp, 4 1027; GENERIC-NEXT: rts16 1028; GENERIC-NEXT: .LBB26_2: # %label2 1029; GENERIC-NEXT: movi16 a0, 0 1030; GENERIC-NEXT: addi16 sp, sp, 4 1031; GENERIC-NEXT: rts16 1032; CHECK-UGTXT: icmpu32 a0, a1, a0 1033; CHECK-UGTXT: rts16 1034entry: 1035 %icmp = icmp sle i32 %x, 10 1036 br i1 %icmp, label %label1, label %label2 1037label1: 1038 ret i32 1 1039label2: 1040 ret i32 0 1041} 1042 1043define i32 @brR0_sle(i32 %x) { 1044; CHECK-LABEL: brR0_sle: 1045; CHECK: # %bb.0: # %entry 1046; CHECK-NEXT: bhz32 a0, .LBB27_2 1047; CHECK-NEXT: # %bb.1: # %label1 1048; CHECK-NEXT: movi16 a0, 1 1049; CHECK-NEXT: rts16 1050; CHECK-NEXT: .LBB27_2: # %label2 1051; CHECK-NEXT: movi16 a0, 0 1052; CHECK-NEXT: rts16 1053; 1054; GENERIC-LABEL: brR0_sle: 1055; GENERIC: # %bb.0: # %entry 1056; GENERIC-NEXT: .cfi_def_cfa_offset 0 1057; GENERIC-NEXT: subi16 sp, sp, 4 1058; GENERIC-NEXT: .cfi_def_cfa_offset 4 1059; GENERIC-NEXT: movi16 a1, 0 1060; GENERIC-NEXT: cmplt16 a1, a0 1061; GENERIC-NEXT: bt16 .LBB27_2 1062; GENERIC-NEXT: # %bb.1: # %label1 1063; GENERIC-NEXT: movi16 a0, 1 1064; GENERIC-NEXT: addi16 sp, sp, 4 1065; GENERIC-NEXT: rts16 1066; GENERIC-NEXT: .LBB27_2: # %label2 1067; GENERIC-NEXT: movi16 a0, 0 1068; GENERIC-NEXT: addi16 sp, sp, 4 1069; GENERIC-NEXT: rts16 1070; CHECK-UGTXT: icmpu32 a0, a1, a0 1071; CHECK-UGTXT: rts16 1072entry: 1073 %icmp = icmp sle i32 %x, 0 1074 br i1 %icmp, label %label1, label %label2 1075label1: 1076 ret i32 1 1077label2: 1078 ret i32 0 1079} 1080 1081 1082define i32 @brCBit(i1 %c) { 1083; CHECK-LABEL: brCBit: 1084; CHECK: # %bb.0: # %entry 1085; CHECK-NEXT: andi32 a0, a0, 1 1086; CHECK-NEXT: bez32 a0, .LBB28_2 1087; CHECK-NEXT: # %bb.1: # %label1 1088; CHECK-NEXT: movi16 a0, 1 1089; CHECK-NEXT: rts16 1090; CHECK-NEXT: .LBB28_2: # %label2 1091; CHECK-NEXT: movi16 a0, 0 1092; CHECK-NEXT: rts16 1093; 1094; GENERIC-LABEL: brCBit: 1095; GENERIC: # %bb.0: # %entry 1096; GENERIC-NEXT: .cfi_def_cfa_offset 0 1097; GENERIC-NEXT: subi16 sp, sp, 4 1098; GENERIC-NEXT: .cfi_def_cfa_offset 4 1099; GENERIC-NEXT: movi16 a1, 1 1100; GENERIC-NEXT: and16 a1, a0 1101; GENERIC-NEXT: cmpnei16 a1, 0 1102; GENERIC-NEXT: bf16 .LBB28_2 1103; GENERIC-NEXT: # %bb.1: # %label1 1104; GENERIC-NEXT: movi16 a0, 1 1105; GENERIC-NEXT: addi16 sp, sp, 4 1106; GENERIC-NEXT: rts16 1107; GENERIC-NEXT: .LBB28_2: # %label2 1108; GENERIC-NEXT: movi16 a0, 0 1109; GENERIC-NEXT: addi16 sp, sp, 4 1110; GENERIC-NEXT: rts16 1111entry: 1112 br i1 %c, label %label1, label %label2 1113label1: 1114 ret i32 1 1115label2: 1116 ret i32 0 1117} 1118 1119 1120;EQ 1121define i64 @brRR_i64_eq(i64 %x, i64 %y) { 1122; CHECK-LABEL: brRR_i64_eq: 1123; CHECK: # %bb.0: # %entry 1124; CHECK-NEXT: xor16 a1, a3 1125; CHECK-NEXT: xor16 a0, a2 1126; CHECK-NEXT: or16 a0, a1 1127; CHECK-NEXT: bnez32 a0, .LBB29_2 1128; CHECK-NEXT: # %bb.1: # %label1 1129; CHECK-NEXT: movi16 a0, 1 1130; CHECK-NEXT: movi16 a1, 0 1131; CHECK-NEXT: rts16 1132; CHECK-NEXT: .LBB29_2: # %label2 1133; CHECK-NEXT: movi16 a0, 0 1134; CHECK-NEXT: movi16 a1, 0 1135; CHECK-NEXT: rts16 1136; 1137; GENERIC-LABEL: brRR_i64_eq: 1138; GENERIC: # %bb.0: # %entry 1139; GENERIC-NEXT: .cfi_def_cfa_offset 0 1140; GENERIC-NEXT: subi16 sp, sp, 4 1141; GENERIC-NEXT: .cfi_def_cfa_offset 4 1142; GENERIC-NEXT: xor16 a1, a3 1143; GENERIC-NEXT: xor16 a0, a2 1144; GENERIC-NEXT: or16 a0, a1 1145; GENERIC-NEXT: cmpnei16 a0, 0 1146; GENERIC-NEXT: bt16 .LBB29_2 1147; GENERIC-NEXT: # %bb.1: # %label1 1148; GENERIC-NEXT: movi16 a0, 1 1149; GENERIC-NEXT: br32 .LBB29_3 1150; GENERIC-NEXT: .LBB29_2: # %label2 1151; GENERIC-NEXT: movi16 a0, 0 1152; GENERIC-NEXT: .LBB29_3: # %label1 1153; GENERIC-NEXT: movi16 a1, 0 1154; GENERIC-NEXT: addi16 sp, sp, 4 1155; GENERIC-NEXT: rts16 1156entry: 1157 %icmp = icmp eq i64 %y, %x 1158 br i1 %icmp, label %label1, label %label2 1159label1: 1160 ret i64 1 1161label2: 1162 ret i64 0 1163} 1164 1165define i64 @brR0_i64_eq(i64 %x) { 1166; CHECK-LABEL: brR0_i64_eq: 1167; CHECK: # %bb.0: # %entry 1168; CHECK-NEXT: xori32 a0, a0, 10 1169; CHECK-NEXT: or16 a0, a1 1170; CHECK-NEXT: bnez32 a0, .LBB30_2 1171; CHECK-NEXT: # %bb.1: # %label1 1172; CHECK-NEXT: movi16 a0, 1 1173; CHECK-NEXT: movi16 a1, 0 1174; CHECK-NEXT: rts16 1175; CHECK-NEXT: .LBB30_2: # %label2 1176; CHECK-NEXT: movi16 a0, 0 1177; CHECK-NEXT: movi16 a1, 0 1178; CHECK-NEXT: rts16 1179; 1180; GENERIC-LABEL: brR0_i64_eq: 1181; GENERIC: # %bb.0: # %entry 1182; GENERIC-NEXT: .cfi_def_cfa_offset 0 1183; GENERIC-NEXT: subi16 sp, sp, 4 1184; GENERIC-NEXT: .cfi_def_cfa_offset 4 1185; GENERIC-NEXT: movi16 a2, 10 1186; GENERIC-NEXT: xor16 a2, a0 1187; GENERIC-NEXT: or16 a2, a1 1188; GENERIC-NEXT: cmpnei16 a2, 0 1189; GENERIC-NEXT: bt16 .LBB30_2 1190; GENERIC-NEXT: # %bb.1: # %label1 1191; GENERIC-NEXT: movi16 a0, 1 1192; GENERIC-NEXT: br32 .LBB30_3 1193; GENERIC-NEXT: .LBB30_2: # %label2 1194; GENERIC-NEXT: movi16 a0, 0 1195; GENERIC-NEXT: .LBB30_3: # %label1 1196; GENERIC-NEXT: movi16 a1, 0 1197; GENERIC-NEXT: addi16 sp, sp, 4 1198; GENERIC-NEXT: rts16 1199entry: 1200 %icmp = icmp eq i64 %x, 10 1201 br i1 %icmp, label %label1, label %label2 1202label1: 1203 ret i64 1 1204label2: 1205 ret i64 0 1206} 1207 1208define i64 @brRI_i64_eq(i64 %x) { 1209; CHECK-LABEL: brRI_i64_eq: 1210; CHECK: # %bb.0: # %entry 1211; CHECK-NEXT: or16 a0, a1 1212; CHECK-NEXT: bez32 a0, .LBB31_2 1213; CHECK-NEXT: # %bb.1: # %label2 1214; CHECK-NEXT: movi16 a0, 0 1215; CHECK-NEXT: movi16 a1, 0 1216; CHECK-NEXT: rts16 1217; CHECK-NEXT: .LBB31_2: # %label1 1218; CHECK-NEXT: movi16 a0, 1 1219; CHECK-NEXT: movi16 a1, 0 1220; CHECK-NEXT: rts16 1221; 1222; GENERIC-LABEL: brRI_i64_eq: 1223; GENERIC: # %bb.0: # %entry 1224; GENERIC-NEXT: .cfi_def_cfa_offset 0 1225; GENERIC-NEXT: subi16 sp, sp, 4 1226; GENERIC-NEXT: .cfi_def_cfa_offset 4 1227; GENERIC-NEXT: or16 a0, a1 1228; GENERIC-NEXT: cmpnei16 a0, 0 1229; GENERIC-NEXT: bf16 .LBB31_2 1230; GENERIC-NEXT: # %bb.1: # %label2 1231; GENERIC-NEXT: movi16 a0, 0 1232; GENERIC-NEXT: br32 .LBB31_3 1233; GENERIC-NEXT: .LBB31_2: # %label1 1234; GENERIC-NEXT: movi16 a0, 1 1235; GENERIC-NEXT: .LBB31_3: # %label1 1236; GENERIC-NEXT: movi16 a1, 0 1237; GENERIC-NEXT: addi16 sp, sp, 4 1238; GENERIC-NEXT: rts16 1239entry: 1240 %icmp = icmp eq i64 %x, 0 1241 br i1 %icmp, label %label1, label %label2 1242label1: 1243 ret i64 1 1244label2: 1245 ret i64 0 1246} 1247 1248;NE 1249define i64 @brRR_i64_ne(i64 %x, i64 %y) { 1250; CHECK-LABEL: brRR_i64_ne: 1251; CHECK: # %bb.0: # %entry 1252; CHECK-NEXT: xor16 a1, a3 1253; CHECK-NEXT: xor16 a0, a2 1254; CHECK-NEXT: or16 a0, a1 1255; CHECK-NEXT: bez32 a0, .LBB32_2 1256; CHECK-NEXT: # %bb.1: # %label1 1257; CHECK-NEXT: movi16 a0, 1 1258; CHECK-NEXT: movi16 a1, 0 1259; CHECK-NEXT: rts16 1260; CHECK-NEXT: .LBB32_2: # %label2 1261; CHECK-NEXT: movi16 a0, 0 1262; CHECK-NEXT: movi16 a1, 0 1263; CHECK-NEXT: rts16 1264; 1265; GENERIC-LABEL: brRR_i64_ne: 1266; GENERIC: # %bb.0: # %entry 1267; GENERIC-NEXT: .cfi_def_cfa_offset 0 1268; GENERIC-NEXT: subi16 sp, sp, 4 1269; GENERIC-NEXT: .cfi_def_cfa_offset 4 1270; GENERIC-NEXT: xor16 a1, a3 1271; GENERIC-NEXT: xor16 a0, a2 1272; GENERIC-NEXT: or16 a0, a1 1273; GENERIC-NEXT: cmpnei16 a0, 0 1274; GENERIC-NEXT: bf16 .LBB32_2 1275; GENERIC-NEXT: # %bb.1: # %label1 1276; GENERIC-NEXT: movi16 a0, 1 1277; GENERIC-NEXT: br32 .LBB32_3 1278; GENERIC-NEXT: .LBB32_2: # %label2 1279; GENERIC-NEXT: movi16 a0, 0 1280; GENERIC-NEXT: .LBB32_3: # %label1 1281; GENERIC-NEXT: movi16 a1, 0 1282; GENERIC-NEXT: addi16 sp, sp, 4 1283; GENERIC-NEXT: rts16 1284entry: 1285 %icmp = icmp ne i64 %y, %x 1286 br i1 %icmp, label %label1, label %label2 1287label1: 1288 ret i64 1 1289label2: 1290 ret i64 0 1291} 1292 1293define i64 @brRI_i64_ne(i64 %x) { 1294; CHECK-LABEL: brRI_i64_ne: 1295; CHECK: # %bb.0: # %entry 1296; CHECK-NEXT: xori32 a0, a0, 10 1297; CHECK-NEXT: or16 a0, a1 1298; CHECK-NEXT: bez32 a0, .LBB33_2 1299; CHECK-NEXT: # %bb.1: # %label1 1300; CHECK-NEXT: movi16 a0, 1 1301; CHECK-NEXT: movi16 a1, 0 1302; CHECK-NEXT: rts16 1303; CHECK-NEXT: .LBB33_2: # %label2 1304; CHECK-NEXT: movi16 a0, 0 1305; CHECK-NEXT: movi16 a1, 0 1306; CHECK-NEXT: rts16 1307; 1308; GENERIC-LABEL: brRI_i64_ne: 1309; GENERIC: # %bb.0: # %entry 1310; GENERIC-NEXT: .cfi_def_cfa_offset 0 1311; GENERIC-NEXT: subi16 sp, sp, 4 1312; GENERIC-NEXT: .cfi_def_cfa_offset 4 1313; GENERIC-NEXT: movi16 a2, 10 1314; GENERIC-NEXT: xor16 a2, a0 1315; GENERIC-NEXT: or16 a2, a1 1316; GENERIC-NEXT: cmpnei16 a2, 0 1317; GENERIC-NEXT: bf16 .LBB33_2 1318; GENERIC-NEXT: # %bb.1: # %label1 1319; GENERIC-NEXT: movi16 a0, 1 1320; GENERIC-NEXT: br32 .LBB33_3 1321; GENERIC-NEXT: .LBB33_2: # %label2 1322; GENERIC-NEXT: movi16 a0, 0 1323; GENERIC-NEXT: .LBB33_3: # %label1 1324; GENERIC-NEXT: movi16 a1, 0 1325; GENERIC-NEXT: addi16 sp, sp, 4 1326; GENERIC-NEXT: rts16 1327entry: 1328 %icmp = icmp ne i64 %x, 10 1329 br i1 %icmp, label %label1, label %label2 1330label1: 1331 ret i64 1 1332label2: 1333 ret i64 0 1334} 1335 1336define i64 @brR0_i64_ne(i64 %x) { 1337; CHECK-LABEL: brR0_i64_ne: 1338; CHECK: # %bb.0: # %entry 1339; CHECK-NEXT: or16 a0, a1 1340; CHECK-NEXT: bez32 a0, .LBB34_2 1341; CHECK-NEXT: # %bb.1: # %label1 1342; CHECK-NEXT: movi16 a0, 1 1343; CHECK-NEXT: movi16 a1, 0 1344; CHECK-NEXT: rts16 1345; CHECK-NEXT: .LBB34_2: # %label2 1346; CHECK-NEXT: movi16 a0, 0 1347; CHECK-NEXT: movi16 a1, 0 1348; CHECK-NEXT: rts16 1349; 1350; GENERIC-LABEL: brR0_i64_ne: 1351; GENERIC: # %bb.0: # %entry 1352; GENERIC-NEXT: .cfi_def_cfa_offset 0 1353; GENERIC-NEXT: subi16 sp, sp, 4 1354; GENERIC-NEXT: .cfi_def_cfa_offset 4 1355; GENERIC-NEXT: or16 a0, a1 1356; GENERIC-NEXT: cmpnei16 a0, 0 1357; GENERIC-NEXT: bf16 .LBB34_2 1358; GENERIC-NEXT: # %bb.1: # %label1 1359; GENERIC-NEXT: movi16 a0, 1 1360; GENERIC-NEXT: br32 .LBB34_3 1361; GENERIC-NEXT: .LBB34_2: # %label2 1362; GENERIC-NEXT: movi16 a0, 0 1363; GENERIC-NEXT: .LBB34_3: # %label1 1364; GENERIC-NEXT: movi16 a1, 0 1365; GENERIC-NEXT: addi16 sp, sp, 4 1366; GENERIC-NEXT: rts16 1367entry: 1368 %icmp = icmp ne i64 %x, 0 1369 br i1 %icmp, label %label1, label %label2 1370label1: 1371 ret i64 1 1372label2: 1373 ret i64 0 1374} 1375 1376;UGT 1377define i64 @brRR_i64_ugt(i64 %x, i64 %y) { 1378; CHECK-LABEL: brRR_i64_ugt: 1379; CHECK: # %bb.0: # %entry 1380; CHECK-NEXT: .cfi_def_cfa_offset 0 1381; CHECK-NEXT: subi16 sp, sp, 16 1382; CHECK-NEXT: .cfi_def_cfa_offset 16 1383; CHECK-NEXT: cmphs16 a1, a3 1384; CHECK-NEXT: mvc32 t0 1385; CHECK-NEXT: st32.w t0, (sp, 12) 1386; CHECK-NEXT: cmphs16 a0, a2 1387; CHECK-NEXT: mvc32 a0 1388; CHECK-NEXT: st16.w a0, (sp, 4) 1389; CHECK-NEXT: cmpne16 a3, a1 1390; CHECK-NEXT: mvc32 a0 1391; CHECK-NEXT: st16.w a0, (sp, 8) 1392; CHECK-NEXT: ld16.w a0, (sp, 4) 1393; CHECK-NEXT: btsti32 a0, 0 1394; CHECK-NEXT: mvc32 a0 1395; CHECK-NEXT: ld16.w a1, (sp, 12) 1396; CHECK-NEXT: btsti32 a1, 0 1397; CHECK-NEXT: mvc32 a1 1398; CHECK-NEXT: ld16.w a2, (sp, 8) 1399; CHECK-NEXT: btsti32 a2, 0 1400; CHECK-NEXT: movf32 a1, a0 1401; CHECK-NEXT: btsti32 a1, 0 1402; CHECK-NEXT: bt32 .LBB35_2 1403; CHECK-NEXT: # %bb.1: # %label1 1404; CHECK-NEXT: movi16 a0, 1 1405; CHECK-NEXT: br32 .LBB35_3 1406; CHECK-NEXT: .LBB35_2: # %label2 1407; CHECK-NEXT: movi16 a0, 0 1408; CHECK-NEXT: .LBB35_3: # %label1 1409; CHECK-NEXT: movi16 a1, 0 1410; CHECK-NEXT: addi16 sp, sp, 16 1411; CHECK-NEXT: rts16 1412; 1413; GENERIC-LABEL: brRR_i64_ugt: 1414; GENERIC: # %bb.0: # %entry 1415; GENERIC-NEXT: subi16 sp, sp, 8 1416; GENERIC-NEXT: .cfi_def_cfa_offset 8 1417; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill 1418; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 1419; GENERIC-NEXT: .cfi_offset l1, -4 1420; GENERIC-NEXT: .cfi_offset l0, -8 1421; GENERIC-NEXT: subi16 sp, sp, 4 1422; GENERIC-NEXT: .cfi_def_cfa_offset 12 1423; GENERIC-NEXT: cmphs16 a1, a3 1424; GENERIC-NEXT: mvcv16 l1 1425; GENERIC-NEXT: movi16 l0, 1 1426; GENERIC-NEXT: cmphs16 a0, a2 1427; GENERIC-NEXT: mvcv16 a0 1428; GENERIC-NEXT: cmpne16 a3, a1 1429; GENERIC-NEXT: mvcv16 a1 1430; GENERIC-NEXT: btsti16 a1, 0 1431; GENERIC-NEXT: bt16 .LBB35_3 1432; GENERIC-NEXT: # %bb.1: # %entry 1433; GENERIC-NEXT: subu16 l0, l1 1434; GENERIC-NEXT: btsti16 l0, 0 1435; GENERIC-NEXT: bf16 .LBB35_4 1436; GENERIC-NEXT: .LBB35_2: # %label2 1437; GENERIC-NEXT: movi16 a0, 0 1438; GENERIC-NEXT: br32 .LBB35_5 1439; GENERIC-NEXT: .LBB35_3: 1440; GENERIC-NEXT: subu16 l0, a0 1441; GENERIC-NEXT: btsti16 l0, 0 1442; GENERIC-NEXT: bt16 .LBB35_2 1443; GENERIC-NEXT: .LBB35_4: # %label1 1444; GENERIC-NEXT: movi16 a0, 1 1445; GENERIC-NEXT: .LBB35_5: # %label1 1446; GENERIC-NEXT: movi16 a1, 0 1447; GENERIC-NEXT: addi16 sp, sp, 4 1448; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 1449; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload 1450; GENERIC-NEXT: addi16 sp, sp, 8 1451; GENERIC-NEXT: rts16 1452; CHECK-UGTXT: icmpu32 a0, a1, a0 1453; CHECK-UGTXT: rts16 1454entry: 1455 %icmp = icmp ugt i64 %y, %x 1456 br i1 %icmp, label %label1, label %label2 1457label1: 1458 ret i64 1 1459label2: 1460 ret i64 0 1461} 1462 1463define i64 @brRI_i64_ugt(i64 %x) { 1464; CHECK-LABEL: brRI_i64_ugt: 1465; CHECK: # %bb.0: # %entry 1466; CHECK-NEXT: .cfi_def_cfa_offset 0 1467; CHECK-NEXT: subi16 sp, sp, 8 1468; CHECK-NEXT: .cfi_def_cfa_offset 8 1469; CHECK-NEXT: cmpnei16 a1, 0 1470; CHECK-NEXT: mvc32 a1 1471; CHECK-NEXT: st16.w a1, (sp, 4) 1472; CHECK-NEXT: cmphsi16 a0, 11 1473; CHECK-NEXT: mvcv16 a0 1474; CHECK-NEXT: movi16 a1, 0 1475; CHECK-NEXT: ld16.w a2, (sp, 4) 1476; CHECK-NEXT: btsti32 a2, 0 1477; CHECK-NEXT: movf32 a1, a0 1478; CHECK-NEXT: btsti32 a1, 0 1479; CHECK-NEXT: bt32 .LBB36_2 1480; CHECK-NEXT: # %bb.1: # %label1 1481; CHECK-NEXT: movi16 a0, 1 1482; CHECK-NEXT: br32 .LBB36_3 1483; CHECK-NEXT: .LBB36_2: # %label2 1484; CHECK-NEXT: movi16 a0, 0 1485; CHECK-NEXT: .LBB36_3: # %label1 1486; CHECK-NEXT: movi16 a1, 0 1487; CHECK-NEXT: addi16 sp, sp, 8 1488; CHECK-NEXT: rts16 1489; 1490; GENERIC-LABEL: brRI_i64_ugt: 1491; GENERIC: # %bb.0: # %entry 1492; GENERIC-NEXT: .cfi_def_cfa_offset 0 1493; GENERIC-NEXT: subi16 sp, sp, 4 1494; GENERIC-NEXT: .cfi_def_cfa_offset 4 1495; GENERIC-NEXT: cmphsi16 a0, 11 1496; GENERIC-NEXT: mvcv16 a0 1497; GENERIC-NEXT: cmpnei16 a1, 0 1498; GENERIC-NEXT: mvcv16 a1 1499; GENERIC-NEXT: btsti16 a1, 0 1500; GENERIC-NEXT: bt16 .LBB36_2 1501; GENERIC-NEXT: # %bb.1: # %entry 1502; GENERIC-NEXT: movi16 a0, 0 1503; GENERIC-NEXT: .LBB36_2: # %entry 1504; GENERIC-NEXT: btsti16 a0, 0 1505; GENERIC-NEXT: bt16 .LBB36_4 1506; GENERIC-NEXT: # %bb.3: # %label1 1507; GENERIC-NEXT: movi16 a0, 1 1508; GENERIC-NEXT: br32 .LBB36_5 1509; GENERIC-NEXT: .LBB36_4: # %label2 1510; GENERIC-NEXT: movi16 a0, 0 1511; GENERIC-NEXT: .LBB36_5: # %label1 1512; GENERIC-NEXT: movi16 a1, 0 1513; GENERIC-NEXT: addi16 sp, sp, 4 1514; GENERIC-NEXT: rts16 1515; CHECK-UGTXT: icmpu32 a0, a1, a0 1516; CHECK-UGTXT: rts16 1517entry: 1518 %icmp = icmp ugt i64 %x, 10 1519 br i1 %icmp, label %label1, label %label2 1520label1: 1521 ret i64 1 1522label2: 1523 ret i64 0 1524} 1525 1526define i64 @brR0_i64_ugt(i64 %x) { 1527; CHECK-LABEL: brR0_i64_ugt: 1528; CHECK: # %bb.0: # %entry 1529; CHECK-NEXT: or16 a0, a1 1530; CHECK-NEXT: bez32 a0, .LBB37_2 1531; CHECK-NEXT: # %bb.1: # %label1 1532; CHECK-NEXT: movi16 a0, 1 1533; CHECK-NEXT: movi16 a1, 0 1534; CHECK-NEXT: rts16 1535; CHECK-NEXT: .LBB37_2: # %label2 1536; CHECK-NEXT: movi16 a0, 0 1537; CHECK-NEXT: movi16 a1, 0 1538; CHECK-NEXT: rts16 1539; 1540; GENERIC-LABEL: brR0_i64_ugt: 1541; GENERIC: # %bb.0: # %entry 1542; GENERIC-NEXT: .cfi_def_cfa_offset 0 1543; GENERIC-NEXT: subi16 sp, sp, 4 1544; GENERIC-NEXT: .cfi_def_cfa_offset 4 1545; GENERIC-NEXT: or16 a0, a1 1546; GENERIC-NEXT: cmpnei16 a0, 0 1547; GENERIC-NEXT: bf16 .LBB37_2 1548; GENERIC-NEXT: # %bb.1: # %label1 1549; GENERIC-NEXT: movi16 a0, 1 1550; GENERIC-NEXT: br32 .LBB37_3 1551; GENERIC-NEXT: .LBB37_2: # %label2 1552; GENERIC-NEXT: movi16 a0, 0 1553; GENERIC-NEXT: .LBB37_3: # %label1 1554; GENERIC-NEXT: movi16 a1, 0 1555; GENERIC-NEXT: addi16 sp, sp, 4 1556; GENERIC-NEXT: rts16 1557; CHECK-UGTXT: icmpu32 a0, a1, a0 1558; CHECK-UGTXT: rts16 1559entry: 1560 %icmp = icmp ugt i64 %x, 0 1561 br i1 %icmp, label %label1, label %label2 1562label1: 1563 ret i64 1 1564label2: 1565 ret i64 0 1566} 1567 1568;UGE 1569define i64 @brRR_i64_uge(i64 %x, i64 %y) { 1570; CHECK-LABEL: brRR_i64_uge: 1571; CHECK: # %bb.0: # %entry 1572; CHECK-NEXT: .cfi_def_cfa_offset 0 1573; CHECK-NEXT: subi16 sp, sp, 8 1574; CHECK-NEXT: .cfi_def_cfa_offset 8 1575; CHECK-NEXT: cmpne16 a3, a1 1576; CHECK-NEXT: mvc32 t0 1577; CHECK-NEXT: st32.w t0, (sp, 4) 1578; CHECK-NEXT: cmphs16 a3, a1 1579; CHECK-NEXT: mvcv16 a1 1580; CHECK-NEXT: cmphs16 a2, a0 1581; CHECK-NEXT: mvcv16 a0 1582; CHECK-NEXT: ld16.w a2, (sp, 4) 1583; CHECK-NEXT: btsti32 a2, 0 1584; CHECK-NEXT: movf32 a1, a0 1585; CHECK-NEXT: btsti32 a1, 0 1586; CHECK-NEXT: bt32 .LBB38_2 1587; CHECK-NEXT: # %bb.1: # %label1 1588; CHECK-NEXT: movi16 a0, 1 1589; CHECK-NEXT: br32 .LBB38_3 1590; CHECK-NEXT: .LBB38_2: # %label2 1591; CHECK-NEXT: movi16 a0, 0 1592; CHECK-NEXT: .LBB38_3: # %label1 1593; CHECK-NEXT: movi16 a1, 0 1594; CHECK-NEXT: addi16 sp, sp, 8 1595; CHECK-NEXT: rts16 1596; 1597; GENERIC-LABEL: brRR_i64_uge: 1598; GENERIC: # %bb.0: # %entry 1599; GENERIC-NEXT: subi16 sp, sp, 4 1600; GENERIC-NEXT: .cfi_def_cfa_offset 4 1601; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 1602; GENERIC-NEXT: .cfi_offset l0, -4 1603; GENERIC-NEXT: subi16 sp, sp, 4 1604; GENERIC-NEXT: .cfi_def_cfa_offset 8 1605; GENERIC-NEXT: cmphs16 a3, a1 1606; GENERIC-NEXT: mvcv16 l0 1607; GENERIC-NEXT: cmphs16 a2, a0 1608; GENERIC-NEXT: mvcv16 a0 1609; GENERIC-NEXT: cmpne16 a3, a1 1610; GENERIC-NEXT: mvcv16 a1 1611; GENERIC-NEXT: btsti16 a1, 0 1612; GENERIC-NEXT: bt16 .LBB38_2 1613; GENERIC-NEXT: # %bb.1: # %entry 1614; GENERIC-NEXT: mov16 a0, l0 1615; GENERIC-NEXT: .LBB38_2: # %entry 1616; GENERIC-NEXT: btsti16 a0, 0 1617; GENERIC-NEXT: bt16 .LBB38_4 1618; GENERIC-NEXT: # %bb.3: # %label1 1619; GENERIC-NEXT: movi16 a0, 1 1620; GENERIC-NEXT: br32 .LBB38_5 1621; GENERIC-NEXT: .LBB38_4: # %label2 1622; GENERIC-NEXT: movi16 a0, 0 1623; GENERIC-NEXT: .LBB38_5: # %label1 1624; GENERIC-NEXT: movi16 a1, 0 1625; GENERIC-NEXT: addi16 sp, sp, 4 1626; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 1627; GENERIC-NEXT: addi16 sp, sp, 4 1628; GENERIC-NEXT: rts16 1629; CHECK-UGTXT: icmpu32 a0, a1, a0 1630; CHECK-UGTXT: rts16 1631entry: 1632 %icmp = icmp uge i64 %y, %x 1633 br i1 %icmp, label %label1, label %label2 1634label1: 1635 ret i64 1 1636label2: 1637 ret i64 0 1638} 1639 1640define i64 @brRI_i64_uge(i64 %x) { 1641; CHECK-LABEL: brRI_i64_uge: 1642; CHECK: # %bb.0: # %entry 1643; CHECK-NEXT: .cfi_def_cfa_offset 0 1644; CHECK-NEXT: subi16 sp, sp, 8 1645; CHECK-NEXT: .cfi_def_cfa_offset 8 1646; CHECK-NEXT: cmpnei16 a1, 0 1647; CHECK-NEXT: mvc32 a1 1648; CHECK-NEXT: st16.w a1, (sp, 4) 1649; CHECK-NEXT: cmphsi16 a0, 10 1650; CHECK-NEXT: mvcv16 a0 1651; CHECK-NEXT: movi16 a1, 0 1652; CHECK-NEXT: ld16.w a2, (sp, 4) 1653; CHECK-NEXT: btsti32 a2, 0 1654; CHECK-NEXT: movf32 a1, a0 1655; CHECK-NEXT: btsti32 a1, 0 1656; CHECK-NEXT: bt32 .LBB39_2 1657; CHECK-NEXT: # %bb.1: # %label1 1658; CHECK-NEXT: movi16 a0, 1 1659; CHECK-NEXT: br32 .LBB39_3 1660; CHECK-NEXT: .LBB39_2: # %label2 1661; CHECK-NEXT: movi16 a0, 0 1662; CHECK-NEXT: .LBB39_3: # %label1 1663; CHECK-NEXT: movi16 a1, 0 1664; CHECK-NEXT: addi16 sp, sp, 8 1665; CHECK-NEXT: rts16 1666; 1667; GENERIC-LABEL: brRI_i64_uge: 1668; GENERIC: # %bb.0: # %entry 1669; GENERIC-NEXT: .cfi_def_cfa_offset 0 1670; GENERIC-NEXT: subi16 sp, sp, 4 1671; GENERIC-NEXT: .cfi_def_cfa_offset 4 1672; GENERIC-NEXT: cmphsi16 a0, 10 1673; GENERIC-NEXT: mvcv16 a0 1674; GENERIC-NEXT: cmpnei16 a1, 0 1675; GENERIC-NEXT: mvcv16 a1 1676; GENERIC-NEXT: btsti16 a1, 0 1677; GENERIC-NEXT: bt16 .LBB39_2 1678; GENERIC-NEXT: # %bb.1: # %entry 1679; GENERIC-NEXT: movi16 a0, 0 1680; GENERIC-NEXT: .LBB39_2: # %entry 1681; GENERIC-NEXT: btsti16 a0, 0 1682; GENERIC-NEXT: bt16 .LBB39_4 1683; GENERIC-NEXT: # %bb.3: # %label1 1684; GENERIC-NEXT: movi16 a0, 1 1685; GENERIC-NEXT: br32 .LBB39_5 1686; GENERIC-NEXT: .LBB39_4: # %label2 1687; GENERIC-NEXT: movi16 a0, 0 1688; GENERIC-NEXT: .LBB39_5: # %label1 1689; GENERIC-NEXT: movi16 a1, 0 1690; GENERIC-NEXT: addi16 sp, sp, 4 1691; GENERIC-NEXT: rts16 1692; CHECK-UGTXT: icmpu32 a0, a1, a0 1693; CHECK-UGTXT: rts16 1694entry: 1695 %icmp = icmp uge i64 %x, 10 1696 br i1 %icmp, label %label1, label %label2 1697label1: 1698 ret i64 1 1699label2: 1700 ret i64 0 1701} 1702 1703;ULT 1704define i64 @brRR_i64_ult(i64 %x, i64 %y) { 1705; CHECK-LABEL: brRR_i64_ult: 1706; CHECK: # %bb.0: # %entry 1707; CHECK-NEXT: .cfi_def_cfa_offset 0 1708; CHECK-NEXT: subi16 sp, sp, 16 1709; CHECK-NEXT: .cfi_def_cfa_offset 16 1710; CHECK-NEXT: cmphs16 a3, a1 1711; CHECK-NEXT: mvc32 t0 1712; CHECK-NEXT: st32.w t0, (sp, 12) 1713; CHECK-NEXT: cmphs16 a2, a0 1714; CHECK-NEXT: mvc32 a0 1715; CHECK-NEXT: st16.w a0, (sp, 4) 1716; CHECK-NEXT: cmpne16 a3, a1 1717; CHECK-NEXT: mvc32 a0 1718; CHECK-NEXT: st16.w a0, (sp, 8) 1719; CHECK-NEXT: ld16.w a0, (sp, 4) 1720; CHECK-NEXT: btsti32 a0, 0 1721; CHECK-NEXT: mvc32 a0 1722; CHECK-NEXT: ld16.w a1, (sp, 12) 1723; CHECK-NEXT: btsti32 a1, 0 1724; CHECK-NEXT: mvc32 a1 1725; CHECK-NEXT: ld16.w a2, (sp, 8) 1726; CHECK-NEXT: btsti32 a2, 0 1727; CHECK-NEXT: movf32 a1, a0 1728; CHECK-NEXT: btsti32 a1, 0 1729; CHECK-NEXT: bt32 .LBB40_2 1730; CHECK-NEXT: # %bb.1: # %label1 1731; CHECK-NEXT: movi16 a0, 1 1732; CHECK-NEXT: br32 .LBB40_3 1733; CHECK-NEXT: .LBB40_2: # %label2 1734; CHECK-NEXT: movi16 a0, 0 1735; CHECK-NEXT: .LBB40_3: # %label1 1736; CHECK-NEXT: movi16 a1, 0 1737; CHECK-NEXT: addi16 sp, sp, 16 1738; CHECK-NEXT: rts16 1739; 1740; GENERIC-LABEL: brRR_i64_ult: 1741; GENERIC: # %bb.0: # %entry 1742; GENERIC-NEXT: subi16 sp, sp, 8 1743; GENERIC-NEXT: .cfi_def_cfa_offset 8 1744; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill 1745; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 1746; GENERIC-NEXT: .cfi_offset l1, -4 1747; GENERIC-NEXT: .cfi_offset l0, -8 1748; GENERIC-NEXT: subi16 sp, sp, 4 1749; GENERIC-NEXT: .cfi_def_cfa_offset 12 1750; GENERIC-NEXT: cmphs16 a3, a1 1751; GENERIC-NEXT: mvcv16 l1 1752; GENERIC-NEXT: movi16 l0, 1 1753; GENERIC-NEXT: cmphs16 a2, a0 1754; GENERIC-NEXT: mvcv16 a0 1755; GENERIC-NEXT: cmpne16 a3, a1 1756; GENERIC-NEXT: mvcv16 a1 1757; GENERIC-NEXT: btsti16 a1, 0 1758; GENERIC-NEXT: bt16 .LBB40_3 1759; GENERIC-NEXT: # %bb.1: # %entry 1760; GENERIC-NEXT: subu16 l0, l1 1761; GENERIC-NEXT: btsti16 l0, 0 1762; GENERIC-NEXT: bf16 .LBB40_4 1763; GENERIC-NEXT: .LBB40_2: # %label2 1764; GENERIC-NEXT: movi16 a0, 0 1765; GENERIC-NEXT: br32 .LBB40_5 1766; GENERIC-NEXT: .LBB40_3: 1767; GENERIC-NEXT: subu16 l0, a0 1768; GENERIC-NEXT: btsti16 l0, 0 1769; GENERIC-NEXT: bt16 .LBB40_2 1770; GENERIC-NEXT: .LBB40_4: # %label1 1771; GENERIC-NEXT: movi16 a0, 1 1772; GENERIC-NEXT: .LBB40_5: # %label1 1773; GENERIC-NEXT: movi16 a1, 0 1774; GENERIC-NEXT: addi16 sp, sp, 4 1775; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 1776; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload 1777; GENERIC-NEXT: addi16 sp, sp, 8 1778; GENERIC-NEXT: rts16 1779; CHECK-UGTXT: icmpu32 a0, a1, a0 1780; CHECK-UGTXT: rts16 1781entry: 1782 %icmp = icmp ult i64 %y, %x 1783 br i1 %icmp, label %label1, label %label2 1784label1: 1785 ret i64 1 1786label2: 1787 ret i64 0 1788} 1789 1790define i64 @brRI_i64_ult(i64 %x) { 1791; CHECK-LABEL: brRI_i64_ult: 1792; CHECK: # %bb.0: # %entry 1793; CHECK-NEXT: movi16 a2, 9 1794; CHECK-NEXT: cmphs16 a2, a0 1795; CHECK-NEXT: mvcv16 a0 1796; CHECK-NEXT: cmpnei16 a1, 0 1797; CHECK-NEXT: mvc32 a1 1798; CHECK-NEXT: movf32 a1, a0 1799; CHECK-NEXT: btsti32 a1, 0 1800; CHECK-NEXT: bt32 .LBB41_2 1801; CHECK-NEXT: # %bb.1: # %label1 1802; CHECK-NEXT: movi16 a0, 1 1803; CHECK-NEXT: movi16 a1, 0 1804; CHECK-NEXT: rts16 1805; CHECK-NEXT: .LBB41_2: # %label2 1806; CHECK-NEXT: movi16 a0, 0 1807; CHECK-NEXT: movi16 a1, 0 1808; CHECK-NEXT: rts16 1809; 1810; GENERIC-LABEL: brRI_i64_ult: 1811; GENERIC: # %bb.0: # %entry 1812; GENERIC-NEXT: .cfi_def_cfa_offset 0 1813; GENERIC-NEXT: subi16 sp, sp, 4 1814; GENERIC-NEXT: .cfi_def_cfa_offset 4 1815; GENERIC-NEXT: cmpnei16 a1, 0 1816; GENERIC-NEXT: mvcv16 a1 1817; GENERIC-NEXT: movi16 a2, 9 1818; GENERIC-NEXT: cmphs16 a2, a0 1819; GENERIC-NEXT: mvcv16 a0 1820; GENERIC-NEXT: btsti16 a1, 0 1821; GENERIC-NEXT: bt16 .LBB41_2 1822; GENERIC-NEXT: # %bb.1: # %entry 1823; GENERIC-NEXT: movi16 a0, 1 1824; GENERIC-NEXT: subu16 a0, a1 1825; GENERIC-NEXT: .LBB41_2: # %entry 1826; GENERIC-NEXT: btsti16 a0, 0 1827; GENERIC-NEXT: bt16 .LBB41_4 1828; GENERIC-NEXT: # %bb.3: # %label1 1829; GENERIC-NEXT: movi16 a0, 1 1830; GENERIC-NEXT: br32 .LBB41_5 1831; GENERIC-NEXT: .LBB41_4: # %label2 1832; GENERIC-NEXT: movi16 a0, 0 1833; GENERIC-NEXT: .LBB41_5: # %label1 1834; GENERIC-NEXT: movi16 a1, 0 1835; GENERIC-NEXT: addi16 sp, sp, 4 1836; GENERIC-NEXT: rts16 1837; CHECK-UGTXT: icmpu32 a0, a1, a0 1838; CHECK-UGTXT: rts16 1839entry: 1840 %icmp = icmp ult i64 %x, 10 1841 br i1 %icmp, label %label1, label %label2 1842label1: 1843 ret i64 1 1844label2: 1845 ret i64 0 1846} 1847 1848 1849;ULE 1850define i64 @brRR_i64_ule(i64 %x, i64 %y) { 1851; CHECK-LABEL: brRR_i64_ule: 1852; CHECK: # %bb.0: # %entry 1853; CHECK-NEXT: .cfi_def_cfa_offset 0 1854; CHECK-NEXT: subi16 sp, sp, 8 1855; CHECK-NEXT: .cfi_def_cfa_offset 8 1856; CHECK-NEXT: cmpne16 a3, a1 1857; CHECK-NEXT: mvc32 t0 1858; CHECK-NEXT: st32.w t0, (sp, 4) 1859; CHECK-NEXT: cmphs16 a1, a3 1860; CHECK-NEXT: mvcv16 a1 1861; CHECK-NEXT: cmphs16 a0, a2 1862; CHECK-NEXT: mvcv16 a0 1863; CHECK-NEXT: ld16.w a2, (sp, 4) 1864; CHECK-NEXT: btsti32 a2, 0 1865; CHECK-NEXT: movf32 a1, a0 1866; CHECK-NEXT: btsti32 a1, 0 1867; CHECK-NEXT: bt32 .LBB42_2 1868; CHECK-NEXT: # %bb.1: # %label1 1869; CHECK-NEXT: movi16 a0, 1 1870; CHECK-NEXT: br32 .LBB42_3 1871; CHECK-NEXT: .LBB42_2: # %label2 1872; CHECK-NEXT: movi16 a0, 0 1873; CHECK-NEXT: .LBB42_3: # %label1 1874; CHECK-NEXT: movi16 a1, 0 1875; CHECK-NEXT: addi16 sp, sp, 8 1876; CHECK-NEXT: rts16 1877; 1878; GENERIC-LABEL: brRR_i64_ule: 1879; GENERIC: # %bb.0: # %entry 1880; GENERIC-NEXT: subi16 sp, sp, 4 1881; GENERIC-NEXT: .cfi_def_cfa_offset 4 1882; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 1883; GENERIC-NEXT: .cfi_offset l0, -4 1884; GENERIC-NEXT: subi16 sp, sp, 4 1885; GENERIC-NEXT: .cfi_def_cfa_offset 8 1886; GENERIC-NEXT: cmphs16 a1, a3 1887; GENERIC-NEXT: mvcv16 l0 1888; GENERIC-NEXT: cmphs16 a0, a2 1889; GENERIC-NEXT: mvcv16 a0 1890; GENERIC-NEXT: cmpne16 a3, a1 1891; GENERIC-NEXT: mvcv16 a1 1892; GENERIC-NEXT: btsti16 a1, 0 1893; GENERIC-NEXT: bt16 .LBB42_2 1894; GENERIC-NEXT: # %bb.1: # %entry 1895; GENERIC-NEXT: mov16 a0, l0 1896; GENERIC-NEXT: .LBB42_2: # %entry 1897; GENERIC-NEXT: btsti16 a0, 0 1898; GENERIC-NEXT: bt16 .LBB42_4 1899; GENERIC-NEXT: # %bb.3: # %label1 1900; GENERIC-NEXT: movi16 a0, 1 1901; GENERIC-NEXT: br32 .LBB42_5 1902; GENERIC-NEXT: .LBB42_4: # %label2 1903; GENERIC-NEXT: movi16 a0, 0 1904; GENERIC-NEXT: .LBB42_5: # %label1 1905; GENERIC-NEXT: movi16 a1, 0 1906; GENERIC-NEXT: addi16 sp, sp, 4 1907; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 1908; GENERIC-NEXT: addi16 sp, sp, 4 1909; GENERIC-NEXT: rts16 1910; CHECK-UGTXT: icmpu32 a0, a1, a0 1911; CHECK-UGTXT: rts16 1912entry: 1913 %icmp = icmp ule i64 %y, %x 1914 br i1 %icmp, label %label1, label %label2 1915label1: 1916 ret i64 1 1917label2: 1918 ret i64 0 1919} 1920 1921define i64 @brRI_i64_ule(i64 %x) { 1922; CHECK-LABEL: brRI_i64_ule: 1923; CHECK: # %bb.0: # %entry 1924; CHECK-NEXT: movi16 a2, 10 1925; CHECK-NEXT: cmphs16 a2, a0 1926; CHECK-NEXT: mvcv16 a0 1927; CHECK-NEXT: cmpnei16 a1, 0 1928; CHECK-NEXT: mvc32 a1 1929; CHECK-NEXT: movf32 a1, a0 1930; CHECK-NEXT: btsti32 a1, 0 1931; CHECK-NEXT: bt32 .LBB43_2 1932; CHECK-NEXT: # %bb.1: # %label1 1933; CHECK-NEXT: movi16 a0, 1 1934; CHECK-NEXT: movi16 a1, 0 1935; CHECK-NEXT: rts16 1936; CHECK-NEXT: .LBB43_2: # %label2 1937; CHECK-NEXT: movi16 a0, 0 1938; CHECK-NEXT: movi16 a1, 0 1939; CHECK-NEXT: rts16 1940; 1941; GENERIC-LABEL: brRI_i64_ule: 1942; GENERIC: # %bb.0: # %entry 1943; GENERIC-NEXT: .cfi_def_cfa_offset 0 1944; GENERIC-NEXT: subi16 sp, sp, 4 1945; GENERIC-NEXT: .cfi_def_cfa_offset 4 1946; GENERIC-NEXT: cmpnei16 a1, 0 1947; GENERIC-NEXT: mvcv16 a1 1948; GENERIC-NEXT: movi16 a2, 10 1949; GENERIC-NEXT: cmphs16 a2, a0 1950; GENERIC-NEXT: mvcv16 a0 1951; GENERIC-NEXT: btsti16 a1, 0 1952; GENERIC-NEXT: bt16 .LBB43_2 1953; GENERIC-NEXT: # %bb.1: # %entry 1954; GENERIC-NEXT: movi16 a0, 1 1955; GENERIC-NEXT: subu16 a0, a1 1956; GENERIC-NEXT: .LBB43_2: # %entry 1957; GENERIC-NEXT: btsti16 a0, 0 1958; GENERIC-NEXT: bt16 .LBB43_4 1959; GENERIC-NEXT: # %bb.3: # %label1 1960; GENERIC-NEXT: movi16 a0, 1 1961; GENERIC-NEXT: br32 .LBB43_5 1962; GENERIC-NEXT: .LBB43_4: # %label2 1963; GENERIC-NEXT: movi16 a0, 0 1964; GENERIC-NEXT: .LBB43_5: # %label1 1965; GENERIC-NEXT: movi16 a1, 0 1966; GENERIC-NEXT: addi16 sp, sp, 4 1967; GENERIC-NEXT: rts16 1968; CHECK-UGTXT: icmpu32 a0, a1, a0 1969; CHECK-UGTXT: rts16 1970entry: 1971 %icmp = icmp ule i64 %x, 10 1972 br i1 %icmp, label %label1, label %label2 1973label1: 1974 ret i64 1 1975label2: 1976 ret i64 0 1977} 1978 1979define i64 @brR0_i64_ule(i64 %x) { 1980; CHECK-LABEL: brR0_i64_ule: 1981; CHECK: # %bb.0: # %entry 1982; CHECK-NEXT: or16 a0, a1 1983; CHECK-NEXT: bnez32 a0, .LBB44_2 1984; CHECK-NEXT: # %bb.1: # %label1 1985; CHECK-NEXT: movi16 a0, 1 1986; CHECK-NEXT: movi16 a1, 0 1987; CHECK-NEXT: rts16 1988; CHECK-NEXT: .LBB44_2: # %label2 1989; CHECK-NEXT: movi16 a0, 0 1990; CHECK-NEXT: movi16 a1, 0 1991; CHECK-NEXT: rts16 1992; 1993; GENERIC-LABEL: brR0_i64_ule: 1994; GENERIC: # %bb.0: # %entry 1995; GENERIC-NEXT: .cfi_def_cfa_offset 0 1996; GENERIC-NEXT: subi16 sp, sp, 4 1997; GENERIC-NEXT: .cfi_def_cfa_offset 4 1998; GENERIC-NEXT: or16 a0, a1 1999; GENERIC-NEXT: cmpnei16 a0, 0 2000; GENERIC-NEXT: bt16 .LBB44_2 2001; GENERIC-NEXT: # %bb.1: # %label1 2002; GENERIC-NEXT: movi16 a0, 1 2003; GENERIC-NEXT: br32 .LBB44_3 2004; GENERIC-NEXT: .LBB44_2: # %label2 2005; GENERIC-NEXT: movi16 a0, 0 2006; GENERIC-NEXT: .LBB44_3: # %label1 2007; GENERIC-NEXT: movi16 a1, 0 2008; GENERIC-NEXT: addi16 sp, sp, 4 2009; GENERIC-NEXT: rts16 2010; CHECK-UGTXT: icmpu32 a0, a1, a0 2011; CHECK-UGTXT: rts16 2012entry: 2013 %icmp = icmp ule i64 %x, 0 2014 br i1 %icmp, label %label1, label %label2 2015label1: 2016 ret i64 1 2017label2: 2018 ret i64 0 2019} 2020 2021;SGT 2022define i64 @brRR_i64_sgt(i64 %x, i64 %y) { 2023; CHECK-LABEL: brRR_i64_sgt: 2024; CHECK: # %bb.0: # %entry 2025; CHECK-NEXT: .cfi_def_cfa_offset 0 2026; CHECK-NEXT: subi16 sp, sp, 12 2027; CHECK-NEXT: .cfi_def_cfa_offset 12 2028; CHECK-NEXT: cmphs16 a0, a2 2029; CHECK-NEXT: mvc32 a0 2030; CHECK-NEXT: st16.w a0, (sp, 4) 2031; CHECK-NEXT: cmpne16 a3, a1 2032; CHECK-NEXT: mvc32 a0 2033; CHECK-NEXT: st16.w a0, (sp, 8) 2034; CHECK-NEXT: cmplt16 a1, a3 2035; CHECK-NEXT: mvcv16 a0 2036; CHECK-NEXT: ld16.w a1, (sp, 4) 2037; CHECK-NEXT: btsti32 a1, 0 2038; CHECK-NEXT: mvc32 a1 2039; CHECK-NEXT: ld16.w a2, (sp, 8) 2040; CHECK-NEXT: btsti32 a2, 0 2041; CHECK-NEXT: movf32 a0, a1 2042; CHECK-NEXT: btsti32 a0, 0 2043; CHECK-NEXT: bt32 .LBB45_2 2044; CHECK-NEXT: # %bb.1: # %label1 2045; CHECK-NEXT: movi16 a0, 1 2046; CHECK-NEXT: br32 .LBB45_3 2047; CHECK-NEXT: .LBB45_2: # %label2 2048; CHECK-NEXT: movi16 a0, 0 2049; CHECK-NEXT: .LBB45_3: # %label1 2050; CHECK-NEXT: movi16 a1, 0 2051; CHECK-NEXT: addi16 sp, sp, 12 2052; CHECK-NEXT: rts16 2053; 2054; GENERIC-LABEL: brRR_i64_sgt: 2055; GENERIC: # %bb.0: # %entry 2056; GENERIC-NEXT: .cfi_def_cfa_offset 0 2057; GENERIC-NEXT: subi16 sp, sp, 4 2058; GENERIC-NEXT: .cfi_def_cfa_offset 4 2059; GENERIC-NEXT: cmphs16 a0, a2 2060; GENERIC-NEXT: mvcv16 a2 2061; GENERIC-NEXT: cmplt16 a1, a3 2062; GENERIC-NEXT: mvcv16 a0 2063; GENERIC-NEXT: cmpne16 a3, a1 2064; GENERIC-NEXT: mvcv16 a1 2065; GENERIC-NEXT: btsti16 a1, 0 2066; GENERIC-NEXT: bf16 .LBB45_2 2067; GENERIC-NEXT: # %bb.1: 2068; GENERIC-NEXT: movi16 a0, 1 2069; GENERIC-NEXT: subu16 a0, a2 2070; GENERIC-NEXT: .LBB45_2: # %entry 2071; GENERIC-NEXT: btsti16 a0, 0 2072; GENERIC-NEXT: bt16 .LBB45_4 2073; GENERIC-NEXT: # %bb.3: # %label1 2074; GENERIC-NEXT: movi16 a0, 1 2075; GENERIC-NEXT: br32 .LBB45_5 2076; GENERIC-NEXT: .LBB45_4: # %label2 2077; GENERIC-NEXT: movi16 a0, 0 2078; GENERIC-NEXT: .LBB45_5: # %label1 2079; GENERIC-NEXT: movi16 a1, 0 2080; GENERIC-NEXT: addi16 sp, sp, 4 2081; GENERIC-NEXT: rts16 2082; CHECK-UGTXT: icmpu32 a0, a1, a0 2083; CHECK-UGTXT: rts16 2084entry: 2085 %icmp = icmp sgt i64 %y, %x 2086 br i1 %icmp, label %label1, label %label2 2087label1: 2088 ret i64 1 2089label2: 2090 ret i64 0 2091} 2092 2093define i64 @brRI_i64_sgt(i64 %x) { 2094; CHECK-LABEL: brRI_i64_sgt: 2095; CHECK: # %bb.0: # %entry 2096; CHECK-NEXT: .cfi_def_cfa_offset 0 2097; CHECK-NEXT: subi16 sp, sp, 12 2098; CHECK-NEXT: .cfi_def_cfa_offset 12 2099; CHECK-NEXT: movi16 a2, 0 2100; CHECK-NEXT: cmplt16 a1, a2 2101; CHECK-NEXT: mvc32 a2 2102; CHECK-NEXT: st16.w a2, (sp, 4) 2103; CHECK-NEXT: cmpnei16 a1, 0 2104; CHECK-NEXT: mvc32 a1 2105; CHECK-NEXT: st16.w a1, (sp, 8) 2106; CHECK-NEXT: cmphsi16 a0, 11 2107; CHECK-NEXT: mvcv16 a0 2108; CHECK-NEXT: ld16.w a1, (sp, 4) 2109; CHECK-NEXT: btsti32 a1, 0 2110; CHECK-NEXT: mvc32 a1 2111; CHECK-NEXT: ld16.w a2, (sp, 8) 2112; CHECK-NEXT: btsti32 a2, 0 2113; CHECK-NEXT: movf32 a1, a0 2114; CHECK-NEXT: btsti32 a1, 0 2115; CHECK-NEXT: bt32 .LBB46_2 2116; CHECK-NEXT: # %bb.1: # %label1 2117; CHECK-NEXT: movi16 a0, 1 2118; CHECK-NEXT: br32 .LBB46_3 2119; CHECK-NEXT: .LBB46_2: # %label2 2120; CHECK-NEXT: movi16 a0, 0 2121; CHECK-NEXT: .LBB46_3: # %label1 2122; CHECK-NEXT: movi16 a1, 0 2123; CHECK-NEXT: addi16 sp, sp, 12 2124; CHECK-NEXT: rts16 2125; 2126; GENERIC-LABEL: brRI_i64_sgt: 2127; GENERIC: # %bb.0: # %entry 2128; GENERIC-NEXT: .cfi_def_cfa_offset 0 2129; GENERIC-NEXT: subi16 sp, sp, 4 2130; GENERIC-NEXT: .cfi_def_cfa_offset 4 2131; GENERIC-NEXT: movi16 a2, 0 2132; GENERIC-NEXT: cmplt16 a1, a2 2133; GENERIC-NEXT: mvcv16 a2 2134; GENERIC-NEXT: cmphsi16 a0, 11 2135; GENERIC-NEXT: mvcv16 a0 2136; GENERIC-NEXT: cmpnei16 a1, 0 2137; GENERIC-NEXT: mvcv16 a1 2138; GENERIC-NEXT: btsti16 a1, 0 2139; GENERIC-NEXT: bt16 .LBB46_2 2140; GENERIC-NEXT: # %bb.1: # %entry 2141; GENERIC-NEXT: movi16 a0, 1 2142; GENERIC-NEXT: subu16 a0, a2 2143; GENERIC-NEXT: .LBB46_2: # %entry 2144; GENERIC-NEXT: btsti16 a0, 0 2145; GENERIC-NEXT: bt16 .LBB46_4 2146; GENERIC-NEXT: # %bb.3: # %label1 2147; GENERIC-NEXT: movi16 a0, 1 2148; GENERIC-NEXT: br32 .LBB46_5 2149; GENERIC-NEXT: .LBB46_4: # %label2 2150; GENERIC-NEXT: movi16 a0, 0 2151; GENERIC-NEXT: .LBB46_5: # %label1 2152; GENERIC-NEXT: movi16 a1, 0 2153; GENERIC-NEXT: addi16 sp, sp, 4 2154; GENERIC-NEXT: rts16 2155; CHECK-UGTXT: icmpu32 a0, a1, a0 2156; CHECK-UGTXT: rts16 2157entry: 2158 %icmp = icmp sgt i64 %x, 10 2159 br i1 %icmp, label %label1, label %label2 2160label1: 2161 ret i64 1 2162label2: 2163 ret i64 0 2164} 2165 2166define i64 @brR0_i64_sgt(i64 %x) { 2167; CHECK-LABEL: brR0_i64_sgt: 2168; CHECK: # %bb.0: # %entry 2169; CHECK-NEXT: .cfi_def_cfa_offset 0 2170; CHECK-NEXT: subi16 sp, sp, 12 2171; CHECK-NEXT: .cfi_def_cfa_offset 12 2172; CHECK-NEXT: movi16 a2, 0 2173; CHECK-NEXT: cmplt16 a1, a2 2174; CHECK-NEXT: mvc32 a2 2175; CHECK-NEXT: st16.w a2, (sp, 4) 2176; CHECK-NEXT: cmpnei16 a1, 0 2177; CHECK-NEXT: mvc32 a1 2178; CHECK-NEXT: st16.w a1, (sp, 8) 2179; CHECK-NEXT: cmpnei16 a0, 0 2180; CHECK-NEXT: mvcv16 a0 2181; CHECK-NEXT: ld16.w a1, (sp, 4) 2182; CHECK-NEXT: btsti32 a1, 0 2183; CHECK-NEXT: mvc32 a1 2184; CHECK-NEXT: ld16.w a2, (sp, 8) 2185; CHECK-NEXT: btsti32 a2, 0 2186; CHECK-NEXT: movf32 a1, a0 2187; CHECK-NEXT: btsti32 a1, 0 2188; CHECK-NEXT: bt32 .LBB47_2 2189; CHECK-NEXT: # %bb.1: # %label1 2190; CHECK-NEXT: movi16 a0, 1 2191; CHECK-NEXT: br32 .LBB47_3 2192; CHECK-NEXT: .LBB47_2: # %label2 2193; CHECK-NEXT: movi16 a0, 0 2194; CHECK-NEXT: .LBB47_3: # %label1 2195; CHECK-NEXT: movi16 a1, 0 2196; CHECK-NEXT: addi16 sp, sp, 12 2197; CHECK-NEXT: rts16 2198; 2199; GENERIC-LABEL: brR0_i64_sgt: 2200; GENERIC: # %bb.0: # %entry 2201; GENERIC-NEXT: .cfi_def_cfa_offset 0 2202; GENERIC-NEXT: subi16 sp, sp, 4 2203; GENERIC-NEXT: .cfi_def_cfa_offset 4 2204; GENERIC-NEXT: movi16 a2, 0 2205; GENERIC-NEXT: cmplt16 a1, a2 2206; GENERIC-NEXT: mvcv16 a2 2207; GENERIC-NEXT: cmpnei16 a0, 0 2208; GENERIC-NEXT: mvcv16 a0 2209; GENERIC-NEXT: cmpnei16 a1, 0 2210; GENERIC-NEXT: mvcv16 a1 2211; GENERIC-NEXT: btsti16 a1, 0 2212; GENERIC-NEXT: bt16 .LBB47_2 2213; GENERIC-NEXT: # %bb.1: # %entry 2214; GENERIC-NEXT: movi16 a0, 1 2215; GENERIC-NEXT: subu16 a0, a2 2216; GENERIC-NEXT: .LBB47_2: # %entry 2217; GENERIC-NEXT: btsti16 a0, 0 2218; GENERIC-NEXT: bt16 .LBB47_4 2219; GENERIC-NEXT: # %bb.3: # %label1 2220; GENERIC-NEXT: movi16 a0, 1 2221; GENERIC-NEXT: br32 .LBB47_5 2222; GENERIC-NEXT: .LBB47_4: # %label2 2223; GENERIC-NEXT: movi16 a0, 0 2224; GENERIC-NEXT: .LBB47_5: # %label1 2225; GENERIC-NEXT: movi16 a1, 0 2226; GENERIC-NEXT: addi16 sp, sp, 4 2227; GENERIC-NEXT: rts16 2228; CHECK-UGTXT: icmpu32 a0, a1, a0 2229; CHECK-UGTXT: rts16 2230entry: 2231 %icmp = icmp sgt i64 %x, 0 2232 br i1 %icmp, label %label1, label %label2 2233label1: 2234 ret i64 1 2235label2: 2236 ret i64 0 2237} 2238 2239;SGE 2240define i64 @brRR_i64_sge(i64 %x, i64 %y) { 2241; CHECK-LABEL: brRR_i64_sge: 2242; CHECK: # %bb.0: # %entry 2243; CHECK-NEXT: .cfi_def_cfa_offset 0 2244; CHECK-NEXT: subi16 sp, sp, 12 2245; CHECK-NEXT: .cfi_def_cfa_offset 12 2246; CHECK-NEXT: cmplt16 a3, a1 2247; CHECK-NEXT: mvc32 t0 2248; CHECK-NEXT: st32.w t0, (sp, 4) 2249; CHECK-NEXT: cmpne16 a3, a1 2250; CHECK-NEXT: mvc32 a1 2251; CHECK-NEXT: st16.w a1, (sp, 8) 2252; CHECK-NEXT: cmphs16 a2, a0 2253; CHECK-NEXT: mvcv16 a0 2254; CHECK-NEXT: ld16.w a1, (sp, 4) 2255; CHECK-NEXT: btsti32 a1, 0 2256; CHECK-NEXT: mvc32 a1 2257; CHECK-NEXT: ld16.w a2, (sp, 8) 2258; CHECK-NEXT: btsti32 a2, 0 2259; CHECK-NEXT: movf32 a1, a0 2260; CHECK-NEXT: btsti32 a1, 0 2261; CHECK-NEXT: bt32 .LBB48_2 2262; CHECK-NEXT: # %bb.1: # %label1 2263; CHECK-NEXT: movi16 a0, 1 2264; CHECK-NEXT: br32 .LBB48_3 2265; CHECK-NEXT: .LBB48_2: # %label2 2266; CHECK-NEXT: movi16 a0, 0 2267; CHECK-NEXT: .LBB48_3: # %label1 2268; CHECK-NEXT: movi16 a1, 0 2269; CHECK-NEXT: addi16 sp, sp, 12 2270; CHECK-NEXT: rts16 2271; 2272; GENERIC-LABEL: brRR_i64_sge: 2273; GENERIC: # %bb.0: # %entry 2274; GENERIC-NEXT: subi16 sp, sp, 4 2275; GENERIC-NEXT: .cfi_def_cfa_offset 4 2276; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 2277; GENERIC-NEXT: .cfi_offset l0, -4 2278; GENERIC-NEXT: subi16 sp, sp, 4 2279; GENERIC-NEXT: .cfi_def_cfa_offset 8 2280; GENERIC-NEXT: cmplt16 a3, a1 2281; GENERIC-NEXT: mvcv16 l0 2282; GENERIC-NEXT: cmphs16 a2, a0 2283; GENERIC-NEXT: mvcv16 a0 2284; GENERIC-NEXT: cmpne16 a3, a1 2285; GENERIC-NEXT: mvcv16 a1 2286; GENERIC-NEXT: btsti16 a1, 0 2287; GENERIC-NEXT: bt16 .LBB48_2 2288; GENERIC-NEXT: # %bb.1: # %entry 2289; GENERIC-NEXT: movi16 a0, 1 2290; GENERIC-NEXT: subu16 a0, l0 2291; GENERIC-NEXT: .LBB48_2: # %entry 2292; GENERIC-NEXT: btsti16 a0, 0 2293; GENERIC-NEXT: bt16 .LBB48_4 2294; GENERIC-NEXT: # %bb.3: # %label1 2295; GENERIC-NEXT: movi16 a0, 1 2296; GENERIC-NEXT: br32 .LBB48_5 2297; GENERIC-NEXT: .LBB48_4: # %label2 2298; GENERIC-NEXT: movi16 a0, 0 2299; GENERIC-NEXT: .LBB48_5: # %label1 2300; GENERIC-NEXT: movi16 a1, 0 2301; GENERIC-NEXT: addi16 sp, sp, 4 2302; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 2303; GENERIC-NEXT: addi16 sp, sp, 4 2304; GENERIC-NEXT: rts16 2305; CHECK-UGTXT: icmpu32 a0, a1, a0 2306; CHECK-UGTXT: rts16 2307entry: 2308 %icmp = icmp sge i64 %y, %x 2309 br i1 %icmp, label %label1, label %label2 2310label1: 2311 ret i64 1 2312label2: 2313 ret i64 0 2314} 2315 2316define i64 @brRI_i64_sge(i64 %x) { 2317; CHECK-LABEL: brRI_i64_sge: 2318; CHECK: # %bb.0: # %entry 2319; CHECK-NEXT: .cfi_def_cfa_offset 0 2320; CHECK-NEXT: subi16 sp, sp, 12 2321; CHECK-NEXT: .cfi_def_cfa_offset 12 2322; CHECK-NEXT: movi16 a2, 0 2323; CHECK-NEXT: cmplt16 a1, a2 2324; CHECK-NEXT: mvc32 a2 2325; CHECK-NEXT: st16.w a2, (sp, 4) 2326; CHECK-NEXT: cmpnei16 a1, 0 2327; CHECK-NEXT: mvc32 a1 2328; CHECK-NEXT: st16.w a1, (sp, 8) 2329; CHECK-NEXT: cmphsi16 a0, 10 2330; CHECK-NEXT: mvcv16 a0 2331; CHECK-NEXT: ld16.w a1, (sp, 4) 2332; CHECK-NEXT: btsti32 a1, 0 2333; CHECK-NEXT: mvc32 a1 2334; CHECK-NEXT: ld16.w a2, (sp, 8) 2335; CHECK-NEXT: btsti32 a2, 0 2336; CHECK-NEXT: movf32 a1, a0 2337; CHECK-NEXT: btsti32 a1, 0 2338; CHECK-NEXT: bt32 .LBB49_2 2339; CHECK-NEXT: # %bb.1: # %label1 2340; CHECK-NEXT: movi16 a0, 1 2341; CHECK-NEXT: br32 .LBB49_3 2342; CHECK-NEXT: .LBB49_2: # %label2 2343; CHECK-NEXT: movi16 a0, 0 2344; CHECK-NEXT: .LBB49_3: # %label1 2345; CHECK-NEXT: movi16 a1, 0 2346; CHECK-NEXT: addi16 sp, sp, 12 2347; CHECK-NEXT: rts16 2348; 2349; GENERIC-LABEL: brRI_i64_sge: 2350; GENERIC: # %bb.0: # %entry 2351; GENERIC-NEXT: .cfi_def_cfa_offset 0 2352; GENERIC-NEXT: subi16 sp, sp, 4 2353; GENERIC-NEXT: .cfi_def_cfa_offset 4 2354; GENERIC-NEXT: movi16 a2, 0 2355; GENERIC-NEXT: cmplt16 a1, a2 2356; GENERIC-NEXT: mvcv16 a2 2357; GENERIC-NEXT: cmphsi16 a0, 10 2358; GENERIC-NEXT: mvcv16 a0 2359; GENERIC-NEXT: cmpnei16 a1, 0 2360; GENERIC-NEXT: mvcv16 a1 2361; GENERIC-NEXT: btsti16 a1, 0 2362; GENERIC-NEXT: bt16 .LBB49_2 2363; GENERIC-NEXT: # %bb.1: # %entry 2364; GENERIC-NEXT: movi16 a0, 1 2365; GENERIC-NEXT: subu16 a0, a2 2366; GENERIC-NEXT: .LBB49_2: # %entry 2367; GENERIC-NEXT: btsti16 a0, 0 2368; GENERIC-NEXT: bt16 .LBB49_4 2369; GENERIC-NEXT: # %bb.3: # %label1 2370; GENERIC-NEXT: movi16 a0, 1 2371; GENERIC-NEXT: br32 .LBB49_5 2372; GENERIC-NEXT: .LBB49_4: # %label2 2373; GENERIC-NEXT: movi16 a0, 0 2374; GENERIC-NEXT: .LBB49_5: # %label1 2375; GENERIC-NEXT: movi16 a1, 0 2376; GENERIC-NEXT: addi16 sp, sp, 4 2377; GENERIC-NEXT: rts16 2378; CHECK-UGTXT: icmpu32 a0, a1, a0 2379; CHECK-UGTXT: rts16 2380entry: 2381 %icmp = icmp sge i64 %x, 10 2382 br i1 %icmp, label %label1, label %label2 2383label1: 2384 ret i64 1 2385label2: 2386 ret i64 0 2387} 2388 2389define i64 @brR0_i64_sge(i64 %x) { 2390; CHECK-LABEL: brR0_i64_sge: 2391; CHECK: # %bb.0: # %entry 2392; CHECK-NEXT: blz32 a1, .LBB50_2 2393; CHECK-NEXT: # %bb.1: # %label1 2394; CHECK-NEXT: movi16 a0, 1 2395; CHECK-NEXT: movi16 a1, 0 2396; CHECK-NEXT: rts16 2397; CHECK-NEXT: .LBB50_2: # %label2 2398; CHECK-NEXT: movi16 a0, 0 2399; CHECK-NEXT: movi16 a1, 0 2400; CHECK-NEXT: rts16 2401; 2402; GENERIC-LABEL: brR0_i64_sge: 2403; GENERIC: # %bb.0: # %entry 2404; GENERIC-NEXT: .cfi_def_cfa_offset 0 2405; GENERIC-NEXT: subi16 sp, sp, 4 2406; GENERIC-NEXT: .cfi_def_cfa_offset 4 2407; GENERIC-NEXT: movi16 a0, 0 2408; GENERIC-NEXT: cmplt16 a1, a0 2409; GENERIC-NEXT: bt16 .LBB50_2 2410; GENERIC-NEXT: # %bb.1: # %label1 2411; GENERIC-NEXT: movi16 a0, 1 2412; GENERIC-NEXT: br32 .LBB50_3 2413; GENERIC-NEXT: .LBB50_2: # %label2 2414; GENERIC-NEXT: movi16 a0, 0 2415; GENERIC-NEXT: .LBB50_3: # %label1 2416; GENERIC-NEXT: movi16 a1, 0 2417; GENERIC-NEXT: addi16 sp, sp, 4 2418; GENERIC-NEXT: rts16 2419; CHECK-UGTXT: icmpu32 a0, a1, a0 2420; CHECK-UGTXT: rts16 2421entry: 2422 %icmp = icmp sge i64 %x, 0 2423 br i1 %icmp, label %label1, label %label2 2424label1: 2425 ret i64 1 2426label2: 2427 ret i64 0 2428} 2429 2430;SLT 2431define i64 @brRR_i64_slt(i64 %x, i64 %y) { 2432; CHECK-LABEL: brRR_i64_slt: 2433; CHECK: # %bb.0: # %entry 2434; CHECK-NEXT: .cfi_def_cfa_offset 0 2435; CHECK-NEXT: subi16 sp, sp, 12 2436; CHECK-NEXT: .cfi_def_cfa_offset 12 2437; CHECK-NEXT: cmphs16 a2, a0 2438; CHECK-NEXT: mvc32 a0 2439; CHECK-NEXT: st16.w a0, (sp, 4) 2440; CHECK-NEXT: cmpne16 a3, a1 2441; CHECK-NEXT: mvc32 a0 2442; CHECK-NEXT: st16.w a0, (sp, 8) 2443; CHECK-NEXT: cmplt16 a3, a1 2444; CHECK-NEXT: mvcv16 a0 2445; CHECK-NEXT: ld16.w a1, (sp, 4) 2446; CHECK-NEXT: btsti32 a1, 0 2447; CHECK-NEXT: mvc32 a1 2448; CHECK-NEXT: ld16.w a2, (sp, 8) 2449; CHECK-NEXT: btsti32 a2, 0 2450; CHECK-NEXT: movf32 a0, a1 2451; CHECK-NEXT: btsti32 a0, 0 2452; CHECK-NEXT: bt32 .LBB51_2 2453; CHECK-NEXT: # %bb.1: # %label1 2454; CHECK-NEXT: movi16 a0, 1 2455; CHECK-NEXT: br32 .LBB51_3 2456; CHECK-NEXT: .LBB51_2: # %label2 2457; CHECK-NEXT: movi16 a0, 0 2458; CHECK-NEXT: .LBB51_3: # %label1 2459; CHECK-NEXT: movi16 a1, 0 2460; CHECK-NEXT: addi16 sp, sp, 12 2461; CHECK-NEXT: rts16 2462; 2463; GENERIC-LABEL: brRR_i64_slt: 2464; GENERIC: # %bb.0: # %entry 2465; GENERIC-NEXT: .cfi_def_cfa_offset 0 2466; GENERIC-NEXT: subi16 sp, sp, 4 2467; GENERIC-NEXT: .cfi_def_cfa_offset 4 2468; GENERIC-NEXT: cmphs16 a2, a0 2469; GENERIC-NEXT: mvcv16 a2 2470; GENERIC-NEXT: cmplt16 a3, a1 2471; GENERIC-NEXT: mvcv16 a0 2472; GENERIC-NEXT: cmpne16 a3, a1 2473; GENERIC-NEXT: mvcv16 a1 2474; GENERIC-NEXT: btsti16 a1, 0 2475; GENERIC-NEXT: bf16 .LBB51_2 2476; GENERIC-NEXT: # %bb.1: 2477; GENERIC-NEXT: movi16 a0, 1 2478; GENERIC-NEXT: subu16 a0, a2 2479; GENERIC-NEXT: .LBB51_2: # %entry 2480; GENERIC-NEXT: btsti16 a0, 0 2481; GENERIC-NEXT: bt16 .LBB51_4 2482; GENERIC-NEXT: # %bb.3: # %label1 2483; GENERIC-NEXT: movi16 a0, 1 2484; GENERIC-NEXT: br32 .LBB51_5 2485; GENERIC-NEXT: .LBB51_4: # %label2 2486; GENERIC-NEXT: movi16 a0, 0 2487; GENERIC-NEXT: .LBB51_5: # %label1 2488; GENERIC-NEXT: movi16 a1, 0 2489; GENERIC-NEXT: addi16 sp, sp, 4 2490; GENERIC-NEXT: rts16 2491; CHECK-UGTXT: icmpu32 a0, a1, a0 2492; CHECK-UGTXT: rts16 2493entry: 2494 %icmp = icmp slt i64 %y, %x 2495 br i1 %icmp, label %label1, label %label2 2496label1: 2497 ret i64 1 2498label2: 2499 ret i64 0 2500} 2501 2502define i64 @brRI_i64_slt(i64 %x) { 2503; CHECK-LABEL: brRI_i64_slt: 2504; CHECK: # %bb.0: # %entry 2505; CHECK-NEXT: .cfi_def_cfa_offset 0 2506; CHECK-NEXT: subi16 sp, sp, 12 2507; CHECK-NEXT: .cfi_def_cfa_offset 12 2508; CHECK-NEXT: movi16 a2, 0 2509; CHECK-NEXT: cmplt16 a2, a1 2510; CHECK-NEXT: mvc32 a2 2511; CHECK-NEXT: st16.w a2, (sp, 8) 2512; CHECK-NEXT: movi16 a2, 9 2513; CHECK-NEXT: cmphs16 a2, a0 2514; CHECK-NEXT: mvcv16 a0 2515; CHECK-NEXT: cmpnei16 a1, 0 2516; CHECK-NEXT: mvc32 a1 2517; CHECK-NEXT: st16.w a1, (sp, 4) 2518; CHECK-NEXT: ld16.w a1, (sp, 8) 2519; CHECK-NEXT: btsti32 a1, 0 2520; CHECK-NEXT: mvc32 a1 2521; CHECK-NEXT: ld16.w a2, (sp, 4) 2522; CHECK-NEXT: btsti32 a2, 0 2523; CHECK-NEXT: movf32 a1, a0 2524; CHECK-NEXT: btsti32 a1, 0 2525; CHECK-NEXT: bt32 .LBB52_2 2526; CHECK-NEXT: # %bb.1: # %label1 2527; CHECK-NEXT: movi16 a0, 1 2528; CHECK-NEXT: br32 .LBB52_3 2529; CHECK-NEXT: .LBB52_2: # %label2 2530; CHECK-NEXT: movi16 a0, 0 2531; CHECK-NEXT: .LBB52_3: # %label1 2532; CHECK-NEXT: movi16 a1, 0 2533; CHECK-NEXT: addi16 sp, sp, 12 2534; CHECK-NEXT: rts16 2535; 2536; GENERIC-LABEL: brRI_i64_slt: 2537; GENERIC: # %bb.0: # %entry 2538; GENERIC-NEXT: .cfi_def_cfa_offset 0 2539; GENERIC-NEXT: subi16 sp, sp, 4 2540; GENERIC-NEXT: .cfi_def_cfa_offset 4 2541; GENERIC-NEXT: movi16 a2, 0 2542; GENERIC-NEXT: cmplt16 a2, a1 2543; GENERIC-NEXT: mvcv16 a2 2544; GENERIC-NEXT: movi16 a3, 9 2545; GENERIC-NEXT: cmphs16 a3, a0 2546; GENERIC-NEXT: mvcv16 a0 2547; GENERIC-NEXT: cmpnei16 a1, 0 2548; GENERIC-NEXT: mvcv16 a1 2549; GENERIC-NEXT: btsti16 a1, 0 2550; GENERIC-NEXT: bt16 .LBB52_2 2551; GENERIC-NEXT: # %bb.1: # %entry 2552; GENERIC-NEXT: movi16 a0, 1 2553; GENERIC-NEXT: subu16 a0, a2 2554; GENERIC-NEXT: .LBB52_2: # %entry 2555; GENERIC-NEXT: btsti16 a0, 0 2556; GENERIC-NEXT: bt16 .LBB52_4 2557; GENERIC-NEXT: # %bb.3: # %label1 2558; GENERIC-NEXT: movi16 a0, 1 2559; GENERIC-NEXT: br32 .LBB52_5 2560; GENERIC-NEXT: .LBB52_4: # %label2 2561; GENERIC-NEXT: movi16 a0, 0 2562; GENERIC-NEXT: .LBB52_5: # %label1 2563; GENERIC-NEXT: movi16 a1, 0 2564; GENERIC-NEXT: addi16 sp, sp, 4 2565; GENERIC-NEXT: rts16 2566; CHECK-UGTXT: icmpu32 a0, a1, a0 2567; CHECK-UGTXT: rts16 2568entry: 2569 %icmp = icmp slt i64 %x, 10 2570 br i1 %icmp, label %label1, label %label2 2571label1: 2572 ret i64 1 2573label2: 2574 ret i64 0 2575} 2576 2577define i64 @brR0_i64_slt(i64 %x) { 2578; CHECK-LABEL: brR0_i64_slt: 2579; CHECK: # %bb.0: # %entry 2580; CHECK-NEXT: movih32 a0, 65535 2581; CHECK-NEXT: ori32 a0, a0, 65535 2582; CHECK-NEXT: cmplt16 a0, a1 2583; CHECK-NEXT: bf32 .LBB53_2 2584; CHECK-NEXT: # %bb.1: # %label2 2585; CHECK-NEXT: movi16 a0, 0 2586; CHECK-NEXT: movi16 a1, 0 2587; CHECK-NEXT: rts16 2588; CHECK-NEXT: .LBB53_2: # %label1 2589; CHECK-NEXT: movi16 a0, 1 2590; CHECK-NEXT: movi16 a1, 0 2591; CHECK-NEXT: rts16 2592; 2593; GENERIC-LABEL: brR0_i64_slt: 2594; GENERIC: # %bb.0: # %entry 2595; GENERIC-NEXT: .cfi_def_cfa_offset 0 2596; GENERIC-NEXT: subi16 sp, sp, 4 2597; GENERIC-NEXT: .cfi_def_cfa_offset 4 2598; GENERIC-NEXT: movi16 a0, 255 2599; GENERIC-NEXT: lsli16 a2, a0, 24 2600; GENERIC-NEXT: lsli16 a3, a0, 16 2601; GENERIC-NEXT: or16 a3, a2 2602; GENERIC-NEXT: lsli16 a2, a0, 8 2603; GENERIC-NEXT: or16 a2, a3 2604; GENERIC-NEXT: or16 a2, a0 2605; GENERIC-NEXT: cmplt16 a2, a1 2606; GENERIC-NEXT: bf16 .LBB53_2 2607; GENERIC-NEXT: # %bb.1: # %label2 2608; GENERIC-NEXT: movi16 a0, 0 2609; GENERIC-NEXT: br32 .LBB53_3 2610; GENERIC-NEXT: .LBB53_2: # %label1 2611; GENERIC-NEXT: movi16 a0, 1 2612; GENERIC-NEXT: .LBB53_3: # %label1 2613; GENERIC-NEXT: movi16 a1, 0 2614; GENERIC-NEXT: addi16 sp, sp, 4 2615; GENERIC-NEXT: rts16 2616; CHECK-UGTXT: icmpu32 a0, a1, a0 2617; CHECK-UGTXT: rts16 2618entry: 2619 %icmp = icmp slt i64 %x, 0 2620 br i1 %icmp, label %label1, label %label2 2621label1: 2622 ret i64 1 2623label2: 2624 ret i64 0 2625} 2626 2627;SLE 2628define i64 @brRR_i64_sle(i64 %x, i64 %y) { 2629; CHECK-LABEL: brRR_i64_sle: 2630; CHECK: # %bb.0: # %entry 2631; CHECK-NEXT: .cfi_def_cfa_offset 0 2632; CHECK-NEXT: subi16 sp, sp, 12 2633; CHECK-NEXT: .cfi_def_cfa_offset 12 2634; CHECK-NEXT: cmplt16 a1, a3 2635; CHECK-NEXT: mvc32 t0 2636; CHECK-NEXT: st32.w t0, (sp, 4) 2637; CHECK-NEXT: cmpne16 a3, a1 2638; CHECK-NEXT: mvc32 a1 2639; CHECK-NEXT: st16.w a1, (sp, 8) 2640; CHECK-NEXT: cmphs16 a0, a2 2641; CHECK-NEXT: mvcv16 a0 2642; CHECK-NEXT: ld16.w a1, (sp, 4) 2643; CHECK-NEXT: btsti32 a1, 0 2644; CHECK-NEXT: mvc32 a1 2645; CHECK-NEXT: ld16.w a2, (sp, 8) 2646; CHECK-NEXT: btsti32 a2, 0 2647; CHECK-NEXT: movf32 a1, a0 2648; CHECK-NEXT: btsti32 a1, 0 2649; CHECK-NEXT: bt32 .LBB54_2 2650; CHECK-NEXT: # %bb.1: # %label1 2651; CHECK-NEXT: movi16 a0, 1 2652; CHECK-NEXT: br32 .LBB54_3 2653; CHECK-NEXT: .LBB54_2: # %label2 2654; CHECK-NEXT: movi16 a0, 0 2655; CHECK-NEXT: .LBB54_3: # %label1 2656; CHECK-NEXT: movi16 a1, 0 2657; CHECK-NEXT: addi16 sp, sp, 12 2658; CHECK-NEXT: rts16 2659; 2660; GENERIC-LABEL: brRR_i64_sle: 2661; GENERIC: # %bb.0: # %entry 2662; GENERIC-NEXT: subi16 sp, sp, 4 2663; GENERIC-NEXT: .cfi_def_cfa_offset 4 2664; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 2665; GENERIC-NEXT: .cfi_offset l0, -4 2666; GENERIC-NEXT: subi16 sp, sp, 4 2667; GENERIC-NEXT: .cfi_def_cfa_offset 8 2668; GENERIC-NEXT: cmplt16 a1, a3 2669; GENERIC-NEXT: mvcv16 l0 2670; GENERIC-NEXT: cmphs16 a0, a2 2671; GENERIC-NEXT: mvcv16 a0 2672; GENERIC-NEXT: cmpne16 a3, a1 2673; GENERIC-NEXT: mvcv16 a1 2674; GENERIC-NEXT: btsti16 a1, 0 2675; GENERIC-NEXT: bt16 .LBB54_2 2676; GENERIC-NEXT: # %bb.1: # %entry 2677; GENERIC-NEXT: movi16 a0, 1 2678; GENERIC-NEXT: subu16 a0, l0 2679; GENERIC-NEXT: .LBB54_2: # %entry 2680; GENERIC-NEXT: btsti16 a0, 0 2681; GENERIC-NEXT: bt16 .LBB54_4 2682; GENERIC-NEXT: # %bb.3: # %label1 2683; GENERIC-NEXT: movi16 a0, 1 2684; GENERIC-NEXT: br32 .LBB54_5 2685; GENERIC-NEXT: .LBB54_4: # %label2 2686; GENERIC-NEXT: movi16 a0, 0 2687; GENERIC-NEXT: .LBB54_5: # %label1 2688; GENERIC-NEXT: movi16 a1, 0 2689; GENERIC-NEXT: addi16 sp, sp, 4 2690; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 2691; GENERIC-NEXT: addi16 sp, sp, 4 2692; GENERIC-NEXT: rts16 2693; CHECK-UGTXT: icmpu32 a0, a1, a0 2694; CHECK-UGTXT: rts16 2695entry: 2696 %icmp = icmp sle i64 %y, %x 2697 br i1 %icmp, label %label1, label %label2 2698label1: 2699 ret i64 1 2700label2: 2701 ret i64 0 2702} 2703 2704define i64 @brRI_i64_sle(i64 %x) { 2705; CHECK-LABEL: brRI_i64_sle: 2706; CHECK: # %bb.0: # %entry 2707; CHECK-NEXT: .cfi_def_cfa_offset 0 2708; CHECK-NEXT: subi16 sp, sp, 12 2709; CHECK-NEXT: .cfi_def_cfa_offset 12 2710; CHECK-NEXT: movi16 a2, 0 2711; CHECK-NEXT: cmplt16 a2, a1 2712; CHECK-NEXT: mvc32 a2 2713; CHECK-NEXT: st16.w a2, (sp, 8) 2714; CHECK-NEXT: movi16 a2, 10 2715; CHECK-NEXT: cmphs16 a2, a0 2716; CHECK-NEXT: mvcv16 a0 2717; CHECK-NEXT: cmpnei16 a1, 0 2718; CHECK-NEXT: mvc32 a1 2719; CHECK-NEXT: st16.w a1, (sp, 4) 2720; CHECK-NEXT: ld16.w a1, (sp, 8) 2721; CHECK-NEXT: btsti32 a1, 0 2722; CHECK-NEXT: mvc32 a1 2723; CHECK-NEXT: ld16.w a2, (sp, 4) 2724; CHECK-NEXT: btsti32 a2, 0 2725; CHECK-NEXT: movf32 a1, a0 2726; CHECK-NEXT: btsti32 a1, 0 2727; CHECK-NEXT: bt32 .LBB55_2 2728; CHECK-NEXT: # %bb.1: # %label1 2729; CHECK-NEXT: movi16 a0, 1 2730; CHECK-NEXT: br32 .LBB55_3 2731; CHECK-NEXT: .LBB55_2: # %label2 2732; CHECK-NEXT: movi16 a0, 0 2733; CHECK-NEXT: .LBB55_3: # %label1 2734; CHECK-NEXT: movi16 a1, 0 2735; CHECK-NEXT: addi16 sp, sp, 12 2736; CHECK-NEXT: rts16 2737; 2738; GENERIC-LABEL: brRI_i64_sle: 2739; GENERIC: # %bb.0: # %entry 2740; GENERIC-NEXT: .cfi_def_cfa_offset 0 2741; GENERIC-NEXT: subi16 sp, sp, 4 2742; GENERIC-NEXT: .cfi_def_cfa_offset 4 2743; GENERIC-NEXT: movi16 a2, 0 2744; GENERIC-NEXT: cmplt16 a2, a1 2745; GENERIC-NEXT: mvcv16 a2 2746; GENERIC-NEXT: movi16 a3, 10 2747; GENERIC-NEXT: cmphs16 a3, a0 2748; GENERIC-NEXT: mvcv16 a0 2749; GENERIC-NEXT: cmpnei16 a1, 0 2750; GENERIC-NEXT: mvcv16 a1 2751; GENERIC-NEXT: btsti16 a1, 0 2752; GENERIC-NEXT: bt16 .LBB55_2 2753; GENERIC-NEXT: # %bb.1: # %entry 2754; GENERIC-NEXT: movi16 a0, 1 2755; GENERIC-NEXT: subu16 a0, a2 2756; GENERIC-NEXT: .LBB55_2: # %entry 2757; GENERIC-NEXT: btsti16 a0, 0 2758; GENERIC-NEXT: bt16 .LBB55_4 2759; GENERIC-NEXT: # %bb.3: # %label1 2760; GENERIC-NEXT: movi16 a0, 1 2761; GENERIC-NEXT: br32 .LBB55_5 2762; GENERIC-NEXT: .LBB55_4: # %label2 2763; GENERIC-NEXT: movi16 a0, 0 2764; GENERIC-NEXT: .LBB55_5: # %label1 2765; GENERIC-NEXT: movi16 a1, 0 2766; GENERIC-NEXT: addi16 sp, sp, 4 2767; GENERIC-NEXT: rts16 2768; CHECK-UGTXT: icmpu32 a0, a1, a0 2769; CHECK-UGTXT: rts16 2770entry: 2771 %icmp = icmp sle i64 %x, 10 2772 br i1 %icmp, label %label1, label %label2 2773label1: 2774 ret i64 1 2775label2: 2776 ret i64 0 2777} 2778 2779define i64 @brR0_i64_sle(i64 %x) { 2780; CHECK-LABEL: brR0_i64_sle: 2781; CHECK: # %bb.0: # %entry 2782; CHECK-NEXT: .cfi_def_cfa_offset 0 2783; CHECK-NEXT: subi16 sp, sp, 16 2784; CHECK-NEXT: .cfi_def_cfa_offset 16 2785; CHECK-NEXT: movi16 a2, 0 2786; CHECK-NEXT: cmplt16 a2, a1 2787; CHECK-NEXT: mvc32 a2 2788; CHECK-NEXT: st16.w a2, (sp, 12) 2789; CHECK-NEXT: cmpnei16 a0, 0 2790; CHECK-NEXT: mvc32 a0 2791; CHECK-NEXT: st16.w a0, (sp, 4) 2792; CHECK-NEXT: cmpnei16 a1, 0 2793; CHECK-NEXT: mvc32 a0 2794; CHECK-NEXT: st16.w a0, (sp, 8) 2795; CHECK-NEXT: ld16.w a0, (sp, 4) 2796; CHECK-NEXT: btsti32 a0, 0 2797; CHECK-NEXT: mvc32 a0 2798; CHECK-NEXT: ld16.w a1, (sp, 12) 2799; CHECK-NEXT: btsti32 a1, 0 2800; CHECK-NEXT: mvc32 a1 2801; CHECK-NEXT: ld16.w a2, (sp, 8) 2802; CHECK-NEXT: btsti32 a2, 0 2803; CHECK-NEXT: movf32 a1, a0 2804; CHECK-NEXT: btsti32 a1, 0 2805; CHECK-NEXT: bt32 .LBB56_2 2806; CHECK-NEXT: # %bb.1: # %label1 2807; CHECK-NEXT: movi16 a0, 1 2808; CHECK-NEXT: br32 .LBB56_3 2809; CHECK-NEXT: .LBB56_2: # %label2 2810; CHECK-NEXT: movi16 a0, 0 2811; CHECK-NEXT: .LBB56_3: # %label1 2812; CHECK-NEXT: movi16 a1, 0 2813; CHECK-NEXT: addi16 sp, sp, 16 2814; CHECK-NEXT: rts16 2815; 2816; GENERIC-LABEL: brR0_i64_sle: 2817; GENERIC: # %bb.0: # %entry 2818; GENERIC-NEXT: .cfi_def_cfa_offset 0 2819; GENERIC-NEXT: subi16 sp, sp, 4 2820; GENERIC-NEXT: .cfi_def_cfa_offset 4 2821; GENERIC-NEXT: movi16 a2, 0 2822; GENERIC-NEXT: cmplt16 a2, a1 2823; GENERIC-NEXT: mvcv16 a3 2824; GENERIC-NEXT: movi16 a2, 1 2825; GENERIC-NEXT: cmpnei16 a0, 0 2826; GENERIC-NEXT: mvcv16 a0 2827; GENERIC-NEXT: cmpnei16 a1, 0 2828; GENERIC-NEXT: mvcv16 a1 2829; GENERIC-NEXT: btsti16 a1, 0 2830; GENERIC-NEXT: bt16 .LBB56_3 2831; GENERIC-NEXT: # %bb.1: # %entry 2832; GENERIC-NEXT: subu16 a2, a3 2833; GENERIC-NEXT: btsti16 a2, 0 2834; GENERIC-NEXT: bf16 .LBB56_4 2835; GENERIC-NEXT: .LBB56_2: # %label2 2836; GENERIC-NEXT: movi16 a0, 0 2837; GENERIC-NEXT: br32 .LBB56_5 2838; GENERIC-NEXT: .LBB56_3: 2839; GENERIC-NEXT: subu16 a2, a0 2840; GENERIC-NEXT: btsti16 a2, 0 2841; GENERIC-NEXT: bt16 .LBB56_2 2842; GENERIC-NEXT: .LBB56_4: # %label1 2843; GENERIC-NEXT: movi16 a0, 1 2844; GENERIC-NEXT: .LBB56_5: # %label1 2845; GENERIC-NEXT: movi16 a1, 0 2846; GENERIC-NEXT: addi16 sp, sp, 4 2847; GENERIC-NEXT: rts16 2848; CHECK-UGTXT: icmpu32 a0, a1, a0 2849; CHECK-UGTXT: rts16 2850entry: 2851 %icmp = icmp sle i64 %x, 0 2852 br i1 %icmp, label %label1, label %label2 2853label1: 2854 ret i64 1 2855label2: 2856 ret i64 0 2857} 2858 2859 2860define i64 @brCBit_i64(i1 %c) { 2861; CHECK-LABEL: brCBit_i64: 2862; CHECK: # %bb.0: # %entry 2863; CHECK-NEXT: andi32 a0, a0, 1 2864; CHECK-NEXT: bez32 a0, .LBB57_2 2865; CHECK-NEXT: # %bb.1: # %label1 2866; CHECK-NEXT: movi16 a0, 1 2867; CHECK-NEXT: movi16 a1, 0 2868; CHECK-NEXT: rts16 2869; CHECK-NEXT: .LBB57_2: # %label2 2870; CHECK-NEXT: movi16 a0, 0 2871; CHECK-NEXT: movi16 a1, 0 2872; CHECK-NEXT: rts16 2873; 2874; GENERIC-LABEL: brCBit_i64: 2875; GENERIC: # %bb.0: # %entry 2876; GENERIC-NEXT: .cfi_def_cfa_offset 0 2877; GENERIC-NEXT: subi16 sp, sp, 4 2878; GENERIC-NEXT: .cfi_def_cfa_offset 4 2879; GENERIC-NEXT: movi16 a1, 1 2880; GENERIC-NEXT: and16 a1, a0 2881; GENERIC-NEXT: cmpnei16 a1, 0 2882; GENERIC-NEXT: bf16 .LBB57_2 2883; GENERIC-NEXT: # %bb.1: # %label1 2884; GENERIC-NEXT: movi16 a0, 1 2885; GENERIC-NEXT: br32 .LBB57_3 2886; GENERIC-NEXT: .LBB57_2: # %label2 2887; GENERIC-NEXT: movi16 a0, 0 2888; GENERIC-NEXT: .LBB57_3: # %label1 2889; GENERIC-NEXT: movi16 a1, 0 2890; GENERIC-NEXT: addi16 sp, sp, 4 2891; GENERIC-NEXT: rts16 2892entry: 2893 br i1 %c, label %label1, label %label2 2894label1: 2895 ret i64 1 2896label2: 2897 ret i64 0 2898} 2899 2900 2901;EQ 2902define i16 @brRR_i16_eq(i16 %x, i16 %y) { 2903; CHECK-LABEL: brRR_i16_eq: 2904; CHECK: # %bb.0: # %entry 2905; CHECK-NEXT: zexth16 a0, a0 2906; CHECK-NEXT: zexth16 a1, a1 2907; CHECK-NEXT: cmpne16 a1, a0 2908; CHECK-NEXT: bt32 .LBB58_2 2909; CHECK-NEXT: # %bb.1: # %label1 2910; CHECK-NEXT: movi16 a0, 1 2911; CHECK-NEXT: rts16 2912; CHECK-NEXT: .LBB58_2: # %label2 2913; CHECK-NEXT: movi16 a0, 0 2914; CHECK-NEXT: rts16 2915; 2916; GENERIC-LABEL: brRR_i16_eq: 2917; GENERIC: # %bb.0: # %entry 2918; GENERIC-NEXT: subi16 sp, sp, 4 2919; GENERIC-NEXT: .cfi_def_cfa_offset 4 2920; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 2921; GENERIC-NEXT: .cfi_offset l0, -4 2922; GENERIC-NEXT: subi16 sp, sp, 4 2923; GENERIC-NEXT: .cfi_def_cfa_offset 8 2924; GENERIC-NEXT: movi16 a2, 0 2925; GENERIC-NEXT: lsli16 a3, a2, 24 2926; GENERIC-NEXT: lsli16 a2, a2, 16 2927; GENERIC-NEXT: or16 a2, a3 2928; GENERIC-NEXT: movi16 a3, 255 2929; GENERIC-NEXT: lsli16 l0, a3, 8 2930; GENERIC-NEXT: or16 l0, a2 2931; GENERIC-NEXT: or16 l0, a3 2932; GENERIC-NEXT: and16 a0, l0 2933; GENERIC-NEXT: and16 l0, a1 2934; GENERIC-NEXT: cmpne16 l0, a0 2935; GENERIC-NEXT: bt16 .LBB58_2 2936; GENERIC-NEXT: # %bb.1: # %label1 2937; GENERIC-NEXT: movi16 a0, 1 2938; GENERIC-NEXT: br32 .LBB58_3 2939; GENERIC-NEXT: .LBB58_2: # %label2 2940; GENERIC-NEXT: movi16 a0, 0 2941; GENERIC-NEXT: .LBB58_3: # %label1 2942; GENERIC-NEXT: addi16 sp, sp, 4 2943; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 2944; GENERIC-NEXT: addi16 sp, sp, 4 2945; GENERIC-NEXT: rts16 2946entry: 2947 %icmp = icmp eq i16 %y, %x 2948 br i1 %icmp, label %label1, label %label2 2949label1: 2950 ret i16 1 2951label2: 2952 ret i16 0 2953} 2954 2955define i16 @brRI_i16_eq(i16 %x) { 2956; CHECK-LABEL: brRI_i16_eq: 2957; CHECK: # %bb.0: # %entry 2958; CHECK-NEXT: zexth16 a0, a0 2959; CHECK-NEXT: cmpnei16 a0, 10 2960; CHECK-NEXT: bt32 .LBB59_2 2961; CHECK-NEXT: # %bb.1: # %label1 2962; CHECK-NEXT: movi16 a0, 1 2963; CHECK-NEXT: rts16 2964; CHECK-NEXT: .LBB59_2: # %label2 2965; CHECK-NEXT: movi16 a0, 0 2966; CHECK-NEXT: rts16 2967; 2968; GENERIC-LABEL: brRI_i16_eq: 2969; GENERIC: # %bb.0: # %entry 2970; GENERIC-NEXT: .cfi_def_cfa_offset 0 2971; GENERIC-NEXT: subi16 sp, sp, 4 2972; GENERIC-NEXT: .cfi_def_cfa_offset 4 2973; GENERIC-NEXT: movi16 a1, 0 2974; GENERIC-NEXT: lsli16 a2, a1, 24 2975; GENERIC-NEXT: lsli16 a1, a1, 16 2976; GENERIC-NEXT: or16 a1, a2 2977; GENERIC-NEXT: movi16 a2, 255 2978; GENERIC-NEXT: lsli16 a3, a2, 8 2979; GENERIC-NEXT: or16 a3, a1 2980; GENERIC-NEXT: or16 a3, a2 2981; GENERIC-NEXT: and16 a3, a0 2982; GENERIC-NEXT: cmpnei16 a3, 10 2983; GENERIC-NEXT: bt16 .LBB59_2 2984; GENERIC-NEXT: # %bb.1: # %label1 2985; GENERIC-NEXT: movi16 a0, 1 2986; GENERIC-NEXT: addi16 sp, sp, 4 2987; GENERIC-NEXT: rts16 2988; GENERIC-NEXT: .LBB59_2: # %label2 2989; GENERIC-NEXT: movi16 a0, 0 2990; GENERIC-NEXT: addi16 sp, sp, 4 2991; GENERIC-NEXT: rts16 2992entry: 2993 %icmp = icmp eq i16 %x, 10 2994 br i1 %icmp, label %label1, label %label2 2995label1: 2996 ret i16 1 2997label2: 2998 ret i16 0 2999} 3000 3001define i16 @brR0_i16_eq(i16 %x) { 3002; CHECK-LABEL: brR0_i16_eq: 3003; CHECK: # %bb.0: # %entry 3004; CHECK-NEXT: zexth16 a0, a0 3005; CHECK-NEXT: bez32 a0, .LBB60_2 3006; CHECK-NEXT: # %bb.1: # %label2 3007; CHECK-NEXT: movi16 a0, 0 3008; CHECK-NEXT: rts16 3009; CHECK-NEXT: .LBB60_2: # %label1 3010; CHECK-NEXT: movi16 a0, 1 3011; CHECK-NEXT: rts16 3012; 3013; GENERIC-LABEL: brR0_i16_eq: 3014; GENERIC: # %bb.0: # %entry 3015; GENERIC-NEXT: .cfi_def_cfa_offset 0 3016; GENERIC-NEXT: subi16 sp, sp, 4 3017; GENERIC-NEXT: .cfi_def_cfa_offset 4 3018; GENERIC-NEXT: movi16 a1, 0 3019; GENERIC-NEXT: lsli16 a2, a1, 24 3020; GENERIC-NEXT: lsli16 a1, a1, 16 3021; GENERIC-NEXT: or16 a1, a2 3022; GENERIC-NEXT: movi16 a2, 255 3023; GENERIC-NEXT: lsli16 a3, a2, 8 3024; GENERIC-NEXT: or16 a3, a1 3025; GENERIC-NEXT: or16 a3, a2 3026; GENERIC-NEXT: and16 a3, a0 3027; GENERIC-NEXT: cmpnei16 a3, 0 3028; GENERIC-NEXT: bf16 .LBB60_2 3029; GENERIC-NEXT: # %bb.1: # %label2 3030; GENERIC-NEXT: movi16 a0, 0 3031; GENERIC-NEXT: addi16 sp, sp, 4 3032; GENERIC-NEXT: rts16 3033; GENERIC-NEXT: .LBB60_2: # %label1 3034; GENERIC-NEXT: movi16 a0, 1 3035; GENERIC-NEXT: addi16 sp, sp, 4 3036; GENERIC-NEXT: rts16 3037entry: 3038 %icmp = icmp eq i16 %x, 0 3039 br i1 %icmp, label %label1, label %label2 3040label1: 3041 ret i16 1 3042label2: 3043 ret i16 0 3044} 3045 3046;NE 3047define i16 @brRR_i16_ne(i16 %x, i16 %y) { 3048; CHECK-LABEL: brRR_i16_ne: 3049; CHECK: # %bb.0: # %entry 3050; CHECK-NEXT: zexth16 a0, a0 3051; CHECK-NEXT: zexth16 a1, a1 3052; CHECK-NEXT: cmpne16 a1, a0 3053; CHECK-NEXT: bf32 .LBB61_2 3054; CHECK-NEXT: # %bb.1: # %label1 3055; CHECK-NEXT: movi16 a0, 1 3056; CHECK-NEXT: rts16 3057; CHECK-NEXT: .LBB61_2: # %label2 3058; CHECK-NEXT: movi16 a0, 0 3059; CHECK-NEXT: rts16 3060; 3061; GENERIC-LABEL: brRR_i16_ne: 3062; GENERIC: # %bb.0: # %entry 3063; GENERIC-NEXT: subi16 sp, sp, 4 3064; GENERIC-NEXT: .cfi_def_cfa_offset 4 3065; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 3066; GENERIC-NEXT: .cfi_offset l0, -4 3067; GENERIC-NEXT: subi16 sp, sp, 4 3068; GENERIC-NEXT: .cfi_def_cfa_offset 8 3069; GENERIC-NEXT: movi16 a2, 0 3070; GENERIC-NEXT: lsli16 a3, a2, 24 3071; GENERIC-NEXT: lsli16 a2, a2, 16 3072; GENERIC-NEXT: or16 a2, a3 3073; GENERIC-NEXT: movi16 a3, 255 3074; GENERIC-NEXT: lsli16 l0, a3, 8 3075; GENERIC-NEXT: or16 l0, a2 3076; GENERIC-NEXT: or16 l0, a3 3077; GENERIC-NEXT: and16 a0, l0 3078; GENERIC-NEXT: and16 l0, a1 3079; GENERIC-NEXT: cmpne16 l0, a0 3080; GENERIC-NEXT: bf16 .LBB61_2 3081; GENERIC-NEXT: # %bb.1: # %label1 3082; GENERIC-NEXT: movi16 a0, 1 3083; GENERIC-NEXT: br32 .LBB61_3 3084; GENERIC-NEXT: .LBB61_2: # %label2 3085; GENERIC-NEXT: movi16 a0, 0 3086; GENERIC-NEXT: .LBB61_3: # %label1 3087; GENERIC-NEXT: addi16 sp, sp, 4 3088; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 3089; GENERIC-NEXT: addi16 sp, sp, 4 3090; GENERIC-NEXT: rts16 3091entry: 3092 %icmp = icmp ne i16 %y, %x 3093 br i1 %icmp, label %label1, label %label2 3094label1: 3095 ret i16 1 3096label2: 3097 ret i16 0 3098} 3099 3100define i16 @brRI_i16_ne(i16 %x) { 3101; CHECK-LABEL: brRI_i16_ne: 3102; CHECK: # %bb.0: # %entry 3103; CHECK-NEXT: zexth16 a0, a0 3104; CHECK-NEXT: cmpnei16 a0, 10 3105; CHECK-NEXT: bf32 .LBB62_2 3106; CHECK-NEXT: # %bb.1: # %label1 3107; CHECK-NEXT: movi16 a0, 1 3108; CHECK-NEXT: rts16 3109; CHECK-NEXT: .LBB62_2: # %label2 3110; CHECK-NEXT: movi16 a0, 0 3111; CHECK-NEXT: rts16 3112; 3113; GENERIC-LABEL: brRI_i16_ne: 3114; GENERIC: # %bb.0: # %entry 3115; GENERIC-NEXT: .cfi_def_cfa_offset 0 3116; GENERIC-NEXT: subi16 sp, sp, 4 3117; GENERIC-NEXT: .cfi_def_cfa_offset 4 3118; GENERIC-NEXT: movi16 a1, 0 3119; GENERIC-NEXT: lsli16 a2, a1, 24 3120; GENERIC-NEXT: lsli16 a1, a1, 16 3121; GENERIC-NEXT: or16 a1, a2 3122; GENERIC-NEXT: movi16 a2, 255 3123; GENERIC-NEXT: lsli16 a3, a2, 8 3124; GENERIC-NEXT: or16 a3, a1 3125; GENERIC-NEXT: or16 a3, a2 3126; GENERIC-NEXT: and16 a3, a0 3127; GENERIC-NEXT: cmpnei16 a3, 10 3128; GENERIC-NEXT: bf16 .LBB62_2 3129; GENERIC-NEXT: # %bb.1: # %label1 3130; GENERIC-NEXT: movi16 a0, 1 3131; GENERIC-NEXT: addi16 sp, sp, 4 3132; GENERIC-NEXT: rts16 3133; GENERIC-NEXT: .LBB62_2: # %label2 3134; GENERIC-NEXT: movi16 a0, 0 3135; GENERIC-NEXT: addi16 sp, sp, 4 3136; GENERIC-NEXT: rts16 3137entry: 3138 %icmp = icmp ne i16 %x, 10 3139 br i1 %icmp, label %label1, label %label2 3140label1: 3141 ret i16 1 3142label2: 3143 ret i16 0 3144} 3145 3146define i16 @brR0_i16_ne(i16 %x) { 3147; CHECK-LABEL: brR0_i16_ne: 3148; CHECK: # %bb.0: # %entry 3149; CHECK-NEXT: zexth16 a0, a0 3150; CHECK-NEXT: bez32 a0, .LBB63_2 3151; CHECK-NEXT: # %bb.1: # %label1 3152; CHECK-NEXT: movi16 a0, 1 3153; CHECK-NEXT: rts16 3154; CHECK-NEXT: .LBB63_2: # %label2 3155; CHECK-NEXT: movi16 a0, 0 3156; CHECK-NEXT: rts16 3157; 3158; GENERIC-LABEL: brR0_i16_ne: 3159; GENERIC: # %bb.0: # %entry 3160; GENERIC-NEXT: .cfi_def_cfa_offset 0 3161; GENERIC-NEXT: subi16 sp, sp, 4 3162; GENERIC-NEXT: .cfi_def_cfa_offset 4 3163; GENERIC-NEXT: movi16 a1, 0 3164; GENERIC-NEXT: lsli16 a2, a1, 24 3165; GENERIC-NEXT: lsli16 a1, a1, 16 3166; GENERIC-NEXT: or16 a1, a2 3167; GENERIC-NEXT: movi16 a2, 255 3168; GENERIC-NEXT: lsli16 a3, a2, 8 3169; GENERIC-NEXT: or16 a3, a1 3170; GENERIC-NEXT: or16 a3, a2 3171; GENERIC-NEXT: and16 a3, a0 3172; GENERIC-NEXT: cmpnei16 a3, 0 3173; GENERIC-NEXT: bf16 .LBB63_2 3174; GENERIC-NEXT: # %bb.1: # %label1 3175; GENERIC-NEXT: movi16 a0, 1 3176; GENERIC-NEXT: addi16 sp, sp, 4 3177; GENERIC-NEXT: rts16 3178; GENERIC-NEXT: .LBB63_2: # %label2 3179; GENERIC-NEXT: movi16 a0, 0 3180; GENERIC-NEXT: addi16 sp, sp, 4 3181; GENERIC-NEXT: rts16 3182entry: 3183 %icmp = icmp ne i16 %x, 0 3184 br i1 %icmp, label %label1, label %label2 3185label1: 3186 ret i16 1 3187label2: 3188 ret i16 0 3189} 3190 3191;UGT 3192define i16 @brRR_i16_ugt(i16 %x, i16 %y) { 3193; CHECK-LABEL: brRR_i16_ugt: 3194; CHECK: # %bb.0: # %entry 3195; CHECK-NEXT: zexth16 a1, a1 3196; CHECK-NEXT: zexth16 a0, a0 3197; CHECK-NEXT: cmphs16 a0, a1 3198; CHECK-NEXT: bt32 .LBB64_2 3199; CHECK-NEXT: # %bb.1: # %label1 3200; CHECK-NEXT: movi16 a0, 1 3201; CHECK-NEXT: rts16 3202; CHECK-NEXT: .LBB64_2: # %label2 3203; CHECK-NEXT: movi16 a0, 0 3204; CHECK-NEXT: rts16 3205; 3206; GENERIC-LABEL: brRR_i16_ugt: 3207; GENERIC: # %bb.0: # %entry 3208; GENERIC-NEXT: subi16 sp, sp, 4 3209; GENERIC-NEXT: .cfi_def_cfa_offset 4 3210; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 3211; GENERIC-NEXT: .cfi_offset l0, -4 3212; GENERIC-NEXT: subi16 sp, sp, 4 3213; GENERIC-NEXT: .cfi_def_cfa_offset 8 3214; GENERIC-NEXT: movi16 a2, 0 3215; GENERIC-NEXT: lsli16 a3, a2, 24 3216; GENERIC-NEXT: lsli16 a2, a2, 16 3217; GENERIC-NEXT: or16 a2, a3 3218; GENERIC-NEXT: movi16 a3, 255 3219; GENERIC-NEXT: lsli16 l0, a3, 8 3220; GENERIC-NEXT: or16 l0, a2 3221; GENERIC-NEXT: or16 l0, a3 3222; GENERIC-NEXT: and16 a1, l0 3223; GENERIC-NEXT: and16 l0, a0 3224; GENERIC-NEXT: cmphs16 l0, a1 3225; GENERIC-NEXT: bt16 .LBB64_2 3226; GENERIC-NEXT: # %bb.1: # %label1 3227; GENERIC-NEXT: movi16 a0, 1 3228; GENERIC-NEXT: br32 .LBB64_3 3229; GENERIC-NEXT: .LBB64_2: # %label2 3230; GENERIC-NEXT: movi16 a0, 0 3231; GENERIC-NEXT: .LBB64_3: # %label1 3232; GENERIC-NEXT: addi16 sp, sp, 4 3233; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 3234; GENERIC-NEXT: addi16 sp, sp, 4 3235; GENERIC-NEXT: rts16 3236; CHECK-UGTXT: icmpu32 a0, a1, a0 3237; CHECK-UGTXT: rts16 3238entry: 3239 %icmp = icmp ugt i16 %y, %x 3240 br i1 %icmp, label %label1, label %label2 3241label1: 3242 ret i16 1 3243label2: 3244 ret i16 0 3245} 3246 3247define i16 @brRI_i16_ugt(i16 %x) { 3248; CHECK-LABEL: brRI_i16_ugt: 3249; CHECK: # %bb.0: # %entry 3250; CHECK-NEXT: zexth16 a0, a0 3251; CHECK-NEXT: cmphsi16 a0, 11 3252; CHECK-NEXT: bf32 .LBB65_2 3253; CHECK-NEXT: # %bb.1: # %label1 3254; CHECK-NEXT: movi16 a0, 1 3255; CHECK-NEXT: rts16 3256; CHECK-NEXT: .LBB65_2: # %label2 3257; CHECK-NEXT: movi16 a0, 0 3258; CHECK-NEXT: rts16 3259; 3260; GENERIC-LABEL: brRI_i16_ugt: 3261; GENERIC: # %bb.0: # %entry 3262; GENERIC-NEXT: .cfi_def_cfa_offset 0 3263; GENERIC-NEXT: subi16 sp, sp, 4 3264; GENERIC-NEXT: .cfi_def_cfa_offset 4 3265; GENERIC-NEXT: movi16 a1, 0 3266; GENERIC-NEXT: lsli16 a2, a1, 24 3267; GENERIC-NEXT: lsli16 a1, a1, 16 3268; GENERIC-NEXT: or16 a1, a2 3269; GENERIC-NEXT: movi16 a2, 255 3270; GENERIC-NEXT: lsli16 a3, a2, 8 3271; GENERIC-NEXT: or16 a3, a1 3272; GENERIC-NEXT: or16 a3, a2 3273; GENERIC-NEXT: and16 a3, a0 3274; GENERIC-NEXT: cmphsi16 a3, 11 3275; GENERIC-NEXT: bf16 .LBB65_2 3276; GENERIC-NEXT: # %bb.1: # %label1 3277; GENERIC-NEXT: movi16 a0, 1 3278; GENERIC-NEXT: addi16 sp, sp, 4 3279; GENERIC-NEXT: rts16 3280; GENERIC-NEXT: .LBB65_2: # %label2 3281; GENERIC-NEXT: movi16 a0, 0 3282; GENERIC-NEXT: addi16 sp, sp, 4 3283; GENERIC-NEXT: rts16 3284; CHECK-UGTXT: icmpu32 a0, a1, a0 3285; CHECK-UGTXT: rts16 3286entry: 3287 %icmp = icmp ugt i16 %x, 10 3288 br i1 %icmp, label %label1, label %label2 3289label1: 3290 ret i16 1 3291label2: 3292 ret i16 0 3293} 3294 3295define i16 @brR0_i16_ugt(i16 %x) { 3296; CHECK-LABEL: brR0_i16_ugt: 3297; CHECK: # %bb.0: # %entry 3298; CHECK-NEXT: zexth16 a0, a0 3299; CHECK-NEXT: bez32 a0, .LBB66_2 3300; CHECK-NEXT: # %bb.1: # %label1 3301; CHECK-NEXT: movi16 a0, 1 3302; CHECK-NEXT: rts16 3303; CHECK-NEXT: .LBB66_2: # %label2 3304; CHECK-NEXT: movi16 a0, 0 3305; CHECK-NEXT: rts16 3306; 3307; GENERIC-LABEL: brR0_i16_ugt: 3308; GENERIC: # %bb.0: # %entry 3309; GENERIC-NEXT: .cfi_def_cfa_offset 0 3310; GENERIC-NEXT: subi16 sp, sp, 4 3311; GENERIC-NEXT: .cfi_def_cfa_offset 4 3312; GENERIC-NEXT: movi16 a1, 0 3313; GENERIC-NEXT: lsli16 a2, a1, 24 3314; GENERIC-NEXT: lsli16 a1, a1, 16 3315; GENERIC-NEXT: or16 a1, a2 3316; GENERIC-NEXT: movi16 a2, 255 3317; GENERIC-NEXT: lsli16 a3, a2, 8 3318; GENERIC-NEXT: or16 a3, a1 3319; GENERIC-NEXT: or16 a3, a2 3320; GENERIC-NEXT: and16 a3, a0 3321; GENERIC-NEXT: cmpnei16 a3, 0 3322; GENERIC-NEXT: bf16 .LBB66_2 3323; GENERIC-NEXT: # %bb.1: # %label1 3324; GENERIC-NEXT: movi16 a0, 1 3325; GENERIC-NEXT: addi16 sp, sp, 4 3326; GENERIC-NEXT: rts16 3327; GENERIC-NEXT: .LBB66_2: # %label2 3328; GENERIC-NEXT: movi16 a0, 0 3329; GENERIC-NEXT: addi16 sp, sp, 4 3330; GENERIC-NEXT: rts16 3331; CHECK-UGTXT: icmpu32 a0, a1, a0 3332; CHECK-UGTXT: rts16 3333entry: 3334 %icmp = icmp ugt i16 %x, 0 3335 br i1 %icmp, label %label1, label %label2 3336label1: 3337 ret i16 1 3338label2: 3339 ret i16 0 3340} 3341 3342;UGE 3343define i16 @brRR_i16_uge(i16 %x, i16 %y) { 3344; CHECK-LABEL: brRR_i16_uge: 3345; CHECK: # %bb.0: # %entry 3346; CHECK-NEXT: zexth16 a0, a0 3347; CHECK-NEXT: zexth16 a1, a1 3348; CHECK-NEXT: cmphs16 a1, a0 3349; CHECK-NEXT: bf32 .LBB67_2 3350; CHECK-NEXT: # %bb.1: # %label1 3351; CHECK-NEXT: movi16 a0, 1 3352; CHECK-NEXT: rts16 3353; CHECK-NEXT: .LBB67_2: # %label2 3354; CHECK-NEXT: movi16 a0, 0 3355; CHECK-NEXT: rts16 3356; 3357; GENERIC-LABEL: brRR_i16_uge: 3358; GENERIC: # %bb.0: # %entry 3359; GENERIC-NEXT: subi16 sp, sp, 4 3360; GENERIC-NEXT: .cfi_def_cfa_offset 4 3361; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 3362; GENERIC-NEXT: .cfi_offset l0, -4 3363; GENERIC-NEXT: subi16 sp, sp, 4 3364; GENERIC-NEXT: .cfi_def_cfa_offset 8 3365; GENERIC-NEXT: movi16 a2, 0 3366; GENERIC-NEXT: lsli16 a3, a2, 24 3367; GENERIC-NEXT: lsli16 a2, a2, 16 3368; GENERIC-NEXT: or16 a2, a3 3369; GENERIC-NEXT: movi16 a3, 255 3370; GENERIC-NEXT: lsli16 l0, a3, 8 3371; GENERIC-NEXT: or16 l0, a2 3372; GENERIC-NEXT: or16 l0, a3 3373; GENERIC-NEXT: and16 a0, l0 3374; GENERIC-NEXT: and16 l0, a1 3375; GENERIC-NEXT: cmphs16 l0, a0 3376; GENERIC-NEXT: bf16 .LBB67_2 3377; GENERIC-NEXT: # %bb.1: # %label1 3378; GENERIC-NEXT: movi16 a0, 1 3379; GENERIC-NEXT: br32 .LBB67_3 3380; GENERIC-NEXT: .LBB67_2: # %label2 3381; GENERIC-NEXT: movi16 a0, 0 3382; GENERIC-NEXT: .LBB67_3: # %label1 3383; GENERIC-NEXT: addi16 sp, sp, 4 3384; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 3385; GENERIC-NEXT: addi16 sp, sp, 4 3386; GENERIC-NEXT: rts16 3387; CHECK-UGTXT: icmpu32 a0, a1, a0 3388; CHECK-UGTXT: rts16 3389entry: 3390 %icmp = icmp uge i16 %y, %x 3391 br i1 %icmp, label %label1, label %label2 3392label1: 3393 ret i16 1 3394label2: 3395 ret i16 0 3396} 3397 3398define i16 @brRI_i16_uge(i16 %x) { 3399; CHECK-LABEL: brRI_i16_uge: 3400; CHECK: # %bb.0: # %entry 3401; CHECK-NEXT: zexth16 a0, a0 3402; CHECK-NEXT: cmphsi16 a0, 10 3403; CHECK-NEXT: bf32 .LBB68_2 3404; CHECK-NEXT: # %bb.1: # %label1 3405; CHECK-NEXT: movi16 a0, 1 3406; CHECK-NEXT: rts16 3407; CHECK-NEXT: .LBB68_2: # %label2 3408; CHECK-NEXT: movi16 a0, 0 3409; CHECK-NEXT: rts16 3410; 3411; GENERIC-LABEL: brRI_i16_uge: 3412; GENERIC: # %bb.0: # %entry 3413; GENERIC-NEXT: .cfi_def_cfa_offset 0 3414; GENERIC-NEXT: subi16 sp, sp, 4 3415; GENERIC-NEXT: .cfi_def_cfa_offset 4 3416; GENERIC-NEXT: movi16 a1, 0 3417; GENERIC-NEXT: lsli16 a2, a1, 24 3418; GENERIC-NEXT: lsli16 a1, a1, 16 3419; GENERIC-NEXT: or16 a1, a2 3420; GENERIC-NEXT: movi16 a2, 255 3421; GENERIC-NEXT: lsli16 a3, a2, 8 3422; GENERIC-NEXT: or16 a3, a1 3423; GENERIC-NEXT: or16 a3, a2 3424; GENERIC-NEXT: and16 a3, a0 3425; GENERIC-NEXT: cmphsi16 a3, 10 3426; GENERIC-NEXT: bf16 .LBB68_2 3427; GENERIC-NEXT: # %bb.1: # %label1 3428; GENERIC-NEXT: movi16 a0, 1 3429; GENERIC-NEXT: addi16 sp, sp, 4 3430; GENERIC-NEXT: rts16 3431; GENERIC-NEXT: .LBB68_2: # %label2 3432; GENERIC-NEXT: movi16 a0, 0 3433; GENERIC-NEXT: addi16 sp, sp, 4 3434; GENERIC-NEXT: rts16 3435; CHECK-UGTXT: icmpu32 a0, a1, a0 3436; CHECK-UGTXT: rts16 3437entry: 3438 %icmp = icmp uge i16 %x, 10 3439 br i1 %icmp, label %label1, label %label2 3440label1: 3441 ret i16 1 3442label2: 3443 ret i16 0 3444} 3445 3446;ULT 3447define i16 @brRR_i16_ult(i16 %x, i16 %y) { 3448; CHECK-LABEL: brRR_i16_ult: 3449; CHECK: # %bb.0: # %entry 3450; CHECK-NEXT: zexth16 a0, a0 3451; CHECK-NEXT: zexth16 a1, a1 3452; CHECK-NEXT: cmphs16 a1, a0 3453; CHECK-NEXT: bt32 .LBB69_2 3454; CHECK-NEXT: # %bb.1: # %label1 3455; CHECK-NEXT: movi16 a0, 1 3456; CHECK-NEXT: rts16 3457; CHECK-NEXT: .LBB69_2: # %label2 3458; CHECK-NEXT: movi16 a0, 0 3459; CHECK-NEXT: rts16 3460; 3461; GENERIC-LABEL: brRR_i16_ult: 3462; GENERIC: # %bb.0: # %entry 3463; GENERIC-NEXT: subi16 sp, sp, 4 3464; GENERIC-NEXT: .cfi_def_cfa_offset 4 3465; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 3466; GENERIC-NEXT: .cfi_offset l0, -4 3467; GENERIC-NEXT: subi16 sp, sp, 4 3468; GENERIC-NEXT: .cfi_def_cfa_offset 8 3469; GENERIC-NEXT: movi16 a2, 0 3470; GENERIC-NEXT: lsli16 a3, a2, 24 3471; GENERIC-NEXT: lsli16 a2, a2, 16 3472; GENERIC-NEXT: or16 a2, a3 3473; GENERIC-NEXT: movi16 a3, 255 3474; GENERIC-NEXT: lsli16 l0, a3, 8 3475; GENERIC-NEXT: or16 l0, a2 3476; GENERIC-NEXT: or16 l0, a3 3477; GENERIC-NEXT: and16 a0, l0 3478; GENERIC-NEXT: and16 l0, a1 3479; GENERIC-NEXT: cmphs16 l0, a0 3480; GENERIC-NEXT: bt16 .LBB69_2 3481; GENERIC-NEXT: # %bb.1: # %label1 3482; GENERIC-NEXT: movi16 a0, 1 3483; GENERIC-NEXT: br32 .LBB69_3 3484; GENERIC-NEXT: .LBB69_2: # %label2 3485; GENERIC-NEXT: movi16 a0, 0 3486; GENERIC-NEXT: .LBB69_3: # %label1 3487; GENERIC-NEXT: addi16 sp, sp, 4 3488; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 3489; GENERIC-NEXT: addi16 sp, sp, 4 3490; GENERIC-NEXT: rts16 3491; CHECK-UGTXT: icmpu32 a0, a1, a0 3492; CHECK-UGTXT: rts16 3493entry: 3494 %icmp = icmp ult i16 %y, %x 3495 br i1 %icmp, label %label1, label %label2 3496label1: 3497 ret i16 1 3498label2: 3499 ret i16 0 3500} 3501 3502define i16 @brRI_i16_ult(i16 %x) { 3503; CHECK-LABEL: brRI_i16_ult: 3504; CHECK: # %bb.0: # %entry 3505; CHECK-NEXT: zexth16 a0, a0 3506; CHECK-NEXT: movi16 a1, 9 3507; CHECK-NEXT: cmphs16 a1, a0 3508; CHECK-NEXT: bf32 .LBB70_2 3509; CHECK-NEXT: # %bb.1: # %label1 3510; CHECK-NEXT: movi16 a0, 1 3511; CHECK-NEXT: rts16 3512; CHECK-NEXT: .LBB70_2: # %label2 3513; CHECK-NEXT: movi16 a0, 0 3514; CHECK-NEXT: rts16 3515; 3516; GENERIC-LABEL: brRI_i16_ult: 3517; GENERIC: # %bb.0: # %entry 3518; GENERIC-NEXT: .cfi_def_cfa_offset 0 3519; GENERIC-NEXT: subi16 sp, sp, 4 3520; GENERIC-NEXT: .cfi_def_cfa_offset 4 3521; GENERIC-NEXT: movi16 a1, 0 3522; GENERIC-NEXT: lsli16 a2, a1, 24 3523; GENERIC-NEXT: lsli16 a1, a1, 16 3524; GENERIC-NEXT: or16 a1, a2 3525; GENERIC-NEXT: movi16 a2, 255 3526; GENERIC-NEXT: lsli16 a3, a2, 8 3527; GENERIC-NEXT: or16 a3, a1 3528; GENERIC-NEXT: or16 a3, a2 3529; GENERIC-NEXT: and16 a3, a0 3530; GENERIC-NEXT: movi16 a0, 9 3531; GENERIC-NEXT: cmphs16 a0, a3 3532; GENERIC-NEXT: bf16 .LBB70_2 3533; GENERIC-NEXT: # %bb.1: # %label1 3534; GENERIC-NEXT: movi16 a0, 1 3535; GENERIC-NEXT: addi16 sp, sp, 4 3536; GENERIC-NEXT: rts16 3537; GENERIC-NEXT: .LBB70_2: # %label2 3538; GENERIC-NEXT: movi16 a0, 0 3539; GENERIC-NEXT: addi16 sp, sp, 4 3540; GENERIC-NEXT: rts16 3541; CHECK-UGTXT: icmpu32 a0, a1, a0 3542; CHECK-UGTXT: rts16 3543entry: 3544 %icmp = icmp ult i16 %x, 10 3545 br i1 %icmp, label %label1, label %label2 3546label1: 3547 ret i16 1 3548label2: 3549 ret i16 0 3550} 3551 3552 3553;ULE 3554define i16 @brRR_i16_ule(i16 %x, i16 %y) { 3555; CHECK-LABEL: brRR_i16_ule: 3556; CHECK: # %bb.0: # %entry 3557; CHECK-NEXT: zexth16 a1, a1 3558; CHECK-NEXT: zexth16 a0, a0 3559; CHECK-NEXT: cmphs16 a0, a1 3560; CHECK-NEXT: bf32 .LBB71_2 3561; CHECK-NEXT: # %bb.1: # %label1 3562; CHECK-NEXT: movi16 a0, 1 3563; CHECK-NEXT: rts16 3564; CHECK-NEXT: .LBB71_2: # %label2 3565; CHECK-NEXT: movi16 a0, 0 3566; CHECK-NEXT: rts16 3567; 3568; GENERIC-LABEL: brRR_i16_ule: 3569; GENERIC: # %bb.0: # %entry 3570; GENERIC-NEXT: subi16 sp, sp, 4 3571; GENERIC-NEXT: .cfi_def_cfa_offset 4 3572; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill 3573; GENERIC-NEXT: .cfi_offset l0, -4 3574; GENERIC-NEXT: subi16 sp, sp, 4 3575; GENERIC-NEXT: .cfi_def_cfa_offset 8 3576; GENERIC-NEXT: movi16 a2, 0 3577; GENERIC-NEXT: lsli16 a3, a2, 24 3578; GENERIC-NEXT: lsli16 a2, a2, 16 3579; GENERIC-NEXT: or16 a2, a3 3580; GENERIC-NEXT: movi16 a3, 255 3581; GENERIC-NEXT: lsli16 l0, a3, 8 3582; GENERIC-NEXT: or16 l0, a2 3583; GENERIC-NEXT: or16 l0, a3 3584; GENERIC-NEXT: and16 a1, l0 3585; GENERIC-NEXT: and16 l0, a0 3586; GENERIC-NEXT: cmphs16 l0, a1 3587; GENERIC-NEXT: bf16 .LBB71_2 3588; GENERIC-NEXT: # %bb.1: # %label1 3589; GENERIC-NEXT: movi16 a0, 1 3590; GENERIC-NEXT: br32 .LBB71_3 3591; GENERIC-NEXT: .LBB71_2: # %label2 3592; GENERIC-NEXT: movi16 a0, 0 3593; GENERIC-NEXT: .LBB71_3: # %label1 3594; GENERIC-NEXT: addi16 sp, sp, 4 3595; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload 3596; GENERIC-NEXT: addi16 sp, sp, 4 3597; GENERIC-NEXT: rts16 3598; CHECK-UGTXT: icmpu32 a0, a1, a0 3599; CHECK-UGTXT: rts16 3600entry: 3601 %icmp = icmp ule i16 %y, %x 3602 br i1 %icmp, label %label1, label %label2 3603label1: 3604 ret i16 1 3605label2: 3606 ret i16 0 3607} 3608 3609define i16 @brRI_i16_ule(i16 %x) { 3610; CHECK-LABEL: brRI_i16_ule: 3611; CHECK: # %bb.0: # %entry 3612; CHECK-NEXT: zexth16 a0, a0 3613; CHECK-NEXT: movi16 a1, 10 3614; CHECK-NEXT: cmphs16 a1, a0 3615; CHECK-NEXT: bf32 .LBB72_2 3616; CHECK-NEXT: # %bb.1: # %label1 3617; CHECK-NEXT: movi16 a0, 1 3618; CHECK-NEXT: rts16 3619; CHECK-NEXT: .LBB72_2: # %label2 3620; CHECK-NEXT: movi16 a0, 0 3621; CHECK-NEXT: rts16 3622; 3623; GENERIC-LABEL: brRI_i16_ule: 3624; GENERIC: # %bb.0: # %entry 3625; GENERIC-NEXT: .cfi_def_cfa_offset 0 3626; GENERIC-NEXT: subi16 sp, sp, 4 3627; GENERIC-NEXT: .cfi_def_cfa_offset 4 3628; GENERIC-NEXT: movi16 a1, 0 3629; GENERIC-NEXT: lsli16 a2, a1, 24 3630; GENERIC-NEXT: lsli16 a1, a1, 16 3631; GENERIC-NEXT: or16 a1, a2 3632; GENERIC-NEXT: movi16 a2, 255 3633; GENERIC-NEXT: lsli16 a3, a2, 8 3634; GENERIC-NEXT: or16 a3, a1 3635; GENERIC-NEXT: or16 a3, a2 3636; GENERIC-NEXT: and16 a3, a0 3637; GENERIC-NEXT: movi16 a0, 10 3638; GENERIC-NEXT: cmphs16 a0, a3 3639; GENERIC-NEXT: bf16 .LBB72_2 3640; GENERIC-NEXT: # %bb.1: # %label1 3641; GENERIC-NEXT: movi16 a0, 1 3642; GENERIC-NEXT: addi16 sp, sp, 4 3643; GENERIC-NEXT: rts16 3644; GENERIC-NEXT: .LBB72_2: # %label2 3645; GENERIC-NEXT: movi16 a0, 0 3646; GENERIC-NEXT: addi16 sp, sp, 4 3647; GENERIC-NEXT: rts16 3648; CHECK-UGTXT: icmpu32 a0, a1, a0 3649; CHECK-UGTXT: rts16 3650entry: 3651 %icmp = icmp ule i16 %x, 10 3652 br i1 %icmp, label %label1, label %label2 3653label1: 3654 ret i16 1 3655label2: 3656 ret i16 0 3657} 3658 3659define i16 @brR0_i16_ule(i16 %x) { 3660; CHECK-LABEL: brR0_i16_ule: 3661; CHECK: # %bb.0: # %entry 3662; CHECK-NEXT: zexth16 a0, a0 3663; CHECK-NEXT: bnez32 a0, .LBB73_2 3664; CHECK-NEXT: # %bb.1: # %label1 3665; CHECK-NEXT: movi16 a0, 1 3666; CHECK-NEXT: rts16 3667; CHECK-NEXT: .LBB73_2: # %label2 3668; CHECK-NEXT: movi16 a0, 0 3669; CHECK-NEXT: rts16 3670; 3671; GENERIC-LABEL: brR0_i16_ule: 3672; GENERIC: # %bb.0: # %entry 3673; GENERIC-NEXT: .cfi_def_cfa_offset 0 3674; GENERIC-NEXT: subi16 sp, sp, 4 3675; GENERIC-NEXT: .cfi_def_cfa_offset 4 3676; GENERIC-NEXT: movi16 a1, 0 3677; GENERIC-NEXT: lsli16 a2, a1, 24 3678; GENERIC-NEXT: lsli16 a1, a1, 16 3679; GENERIC-NEXT: or16 a1, a2 3680; GENERIC-NEXT: movi16 a2, 255 3681; GENERIC-NEXT: lsli16 a3, a2, 8 3682; GENERIC-NEXT: or16 a3, a1 3683; GENERIC-NEXT: or16 a3, a2 3684; GENERIC-NEXT: and16 a3, a0 3685; GENERIC-NEXT: cmpnei16 a3, 0 3686; GENERIC-NEXT: bt16 .LBB73_2 3687; GENERIC-NEXT: # %bb.1: # %label1 3688; GENERIC-NEXT: movi16 a0, 1 3689; GENERIC-NEXT: addi16 sp, sp, 4 3690; GENERIC-NEXT: rts16 3691; GENERIC-NEXT: .LBB73_2: # %label2 3692; GENERIC-NEXT: movi16 a0, 0 3693; GENERIC-NEXT: addi16 sp, sp, 4 3694; GENERIC-NEXT: rts16 3695; CHECK-UGTXT: icmpu32 a0, a1, a0 3696; CHECK-UGTXT: rts16 3697entry: 3698 %icmp = icmp ule i16 %x, 0 3699 br i1 %icmp, label %label1, label %label2 3700label1: 3701 ret i16 1 3702label2: 3703 ret i16 0 3704} 3705 3706;SGT 3707define i16 @brRR_i16_sgt(i16 %x, i16 %y) { 3708; CHECK-LABEL: brRR_i16_sgt: 3709; CHECK: # %bb.0: # %entry 3710; CHECK-NEXT: sexth16 a1, a1 3711; CHECK-NEXT: sexth16 a0, a0 3712; CHECK-NEXT: cmplt16 a0, a1 3713; CHECK-NEXT: bf32 .LBB74_2 3714; CHECK-NEXT: # %bb.1: # %label1 3715; CHECK-NEXT: movi16 a0, 1 3716; CHECK-NEXT: rts16 3717; CHECK-NEXT: .LBB74_2: # %label2 3718; CHECK-NEXT: movi16 a0, 0 3719; CHECK-NEXT: rts16 3720; 3721; GENERIC-LABEL: brRR_i16_sgt: 3722; GENERIC: # %bb.0: # %entry 3723; GENERIC-NEXT: .cfi_def_cfa_offset 0 3724; GENERIC-NEXT: subi16 sp, sp, 4 3725; GENERIC-NEXT: .cfi_def_cfa_offset 4 3726; GENERIC-NEXT: sexth16 a1, a1 3727; GENERIC-NEXT: sexth16 a0, a0 3728; GENERIC-NEXT: cmplt16 a0, a1 3729; GENERIC-NEXT: bf16 .LBB74_2 3730; GENERIC-NEXT: # %bb.1: # %label1 3731; GENERIC-NEXT: movi16 a0, 1 3732; GENERIC-NEXT: addi16 sp, sp, 4 3733; GENERIC-NEXT: rts16 3734; GENERIC-NEXT: .LBB74_2: # %label2 3735; GENERIC-NEXT: movi16 a0, 0 3736; GENERIC-NEXT: addi16 sp, sp, 4 3737; GENERIC-NEXT: rts16 3738; CHECK-UGTXT: icmpu32 a0, a1, a0 3739; CHECK-UGTXT: rts16 3740entry: 3741 %icmp = icmp sgt i16 %y, %x 3742 br i1 %icmp, label %label1, label %label2 3743label1: 3744 ret i16 1 3745label2: 3746 ret i16 0 3747} 3748 3749define i16 @brRI_i16_sgt(i16 %x) { 3750; CHECK-LABEL: brRI_i16_sgt: 3751; CHECK: # %bb.0: # %entry 3752; CHECK-NEXT: sexth16 a0, a0 3753; CHECK-NEXT: cmplti16 a0, 11 3754; CHECK-NEXT: bt32 .LBB75_2 3755; CHECK-NEXT: # %bb.1: # %label1 3756; CHECK-NEXT: movi16 a0, 1 3757; CHECK-NEXT: rts16 3758; CHECK-NEXT: .LBB75_2: # %label2 3759; CHECK-NEXT: movi16 a0, 0 3760; CHECK-NEXT: rts16 3761; 3762; GENERIC-LABEL: brRI_i16_sgt: 3763; GENERIC: # %bb.0: # %entry 3764; GENERIC-NEXT: .cfi_def_cfa_offset 0 3765; GENERIC-NEXT: subi16 sp, sp, 4 3766; GENERIC-NEXT: .cfi_def_cfa_offset 4 3767; GENERIC-NEXT: sexth16 a0, a0 3768; GENERIC-NEXT: cmplti16 a0, 11 3769; GENERIC-NEXT: bt16 .LBB75_2 3770; GENERIC-NEXT: # %bb.1: # %label1 3771; GENERIC-NEXT: movi16 a0, 1 3772; GENERIC-NEXT: addi16 sp, sp, 4 3773; GENERIC-NEXT: rts16 3774; GENERIC-NEXT: .LBB75_2: # %label2 3775; GENERIC-NEXT: movi16 a0, 0 3776; GENERIC-NEXT: addi16 sp, sp, 4 3777; GENERIC-NEXT: rts16 3778; CHECK-UGTXT: icmpu32 a0, a1, a0 3779; CHECK-UGTXT: rts16 3780entry: 3781 %icmp = icmp sgt i16 %x, 10 3782 br i1 %icmp, label %label1, label %label2 3783label1: 3784 ret i16 1 3785label2: 3786 ret i16 0 3787} 3788 3789define i16 @brR0_i16_sgt(i16 %x) { 3790; CHECK-LABEL: brR0_i16_sgt: 3791; CHECK: # %bb.0: # %entry 3792; CHECK-NEXT: sexth16 a0, a0 3793; CHECK-NEXT: cmplti16 a0, 1 3794; CHECK-NEXT: bt32 .LBB76_2 3795; CHECK-NEXT: # %bb.1: # %label1 3796; CHECK-NEXT: movi16 a0, 1 3797; CHECK-NEXT: rts16 3798; CHECK-NEXT: .LBB76_2: # %label2 3799; CHECK-NEXT: movi16 a0, 0 3800; CHECK-NEXT: rts16 3801; 3802; GENERIC-LABEL: brR0_i16_sgt: 3803; GENERIC: # %bb.0: # %entry 3804; GENERIC-NEXT: .cfi_def_cfa_offset 0 3805; GENERIC-NEXT: subi16 sp, sp, 4 3806; GENERIC-NEXT: .cfi_def_cfa_offset 4 3807; GENERIC-NEXT: sexth16 a0, a0 3808; GENERIC-NEXT: cmplti16 a0, 1 3809; GENERIC-NEXT: bt16 .LBB76_2 3810; GENERIC-NEXT: # %bb.1: # %label1 3811; GENERIC-NEXT: movi16 a0, 1 3812; GENERIC-NEXT: addi16 sp, sp, 4 3813; GENERIC-NEXT: rts16 3814; GENERIC-NEXT: .LBB76_2: # %label2 3815; GENERIC-NEXT: movi16 a0, 0 3816; GENERIC-NEXT: addi16 sp, sp, 4 3817; GENERIC-NEXT: rts16 3818; CHECK-UGTXT: icmpu32 a0, a1, a0 3819; CHECK-UGTXT: rts16 3820entry: 3821 %icmp = icmp sgt i16 %x, 0 3822 br i1 %icmp, label %label1, label %label2 3823label1: 3824 ret i16 1 3825label2: 3826 ret i16 0 3827} 3828 3829;SGE 3830define i16 @brRR_i16_sge(i16 %x, i16 %y) { 3831; CHECK-LABEL: brRR_i16_sge: 3832; CHECK: # %bb.0: # %entry 3833; CHECK-NEXT: sexth16 a0, a0 3834; CHECK-NEXT: sexth16 a1, a1 3835; CHECK-NEXT: cmplt16 a1, a0 3836; CHECK-NEXT: bt32 .LBB77_2 3837; CHECK-NEXT: # %bb.1: # %label1 3838; CHECK-NEXT: movi16 a0, 1 3839; CHECK-NEXT: rts16 3840; CHECK-NEXT: .LBB77_2: # %label2 3841; CHECK-NEXT: movi16 a0, 0 3842; CHECK-NEXT: rts16 3843; 3844; GENERIC-LABEL: brRR_i16_sge: 3845; GENERIC: # %bb.0: # %entry 3846; GENERIC-NEXT: .cfi_def_cfa_offset 0 3847; GENERIC-NEXT: subi16 sp, sp, 4 3848; GENERIC-NEXT: .cfi_def_cfa_offset 4 3849; GENERIC-NEXT: sexth16 a0, a0 3850; GENERIC-NEXT: sexth16 a1, a1 3851; GENERIC-NEXT: cmplt16 a1, a0 3852; GENERIC-NEXT: bt16 .LBB77_2 3853; GENERIC-NEXT: # %bb.1: # %label1 3854; GENERIC-NEXT: movi16 a0, 1 3855; GENERIC-NEXT: addi16 sp, sp, 4 3856; GENERIC-NEXT: rts16 3857; GENERIC-NEXT: .LBB77_2: # %label2 3858; GENERIC-NEXT: movi16 a0, 0 3859; GENERIC-NEXT: addi16 sp, sp, 4 3860; GENERIC-NEXT: rts16 3861; CHECK-UGTXT: icmpu32 a0, a1, a0 3862; CHECK-UGTXT: rts16 3863entry: 3864 %icmp = icmp sge i16 %y, %x 3865 br i1 %icmp, label %label1, label %label2 3866label1: 3867 ret i16 1 3868label2: 3869 ret i16 0 3870} 3871 3872define i16 @brRI_i16_sge(i16 %x) { 3873; CHECK-LABEL: brRI_i16_sge: 3874; CHECK: # %bb.0: # %entry 3875; CHECK-NEXT: sexth16 a0, a0 3876; CHECK-NEXT: cmplti16 a0, 10 3877; CHECK-NEXT: bt32 .LBB78_2 3878; CHECK-NEXT: # %bb.1: # %label1 3879; CHECK-NEXT: movi16 a0, 1 3880; CHECK-NEXT: rts16 3881; CHECK-NEXT: .LBB78_2: # %label2 3882; CHECK-NEXT: movi16 a0, 0 3883; CHECK-NEXT: rts16 3884; 3885; GENERIC-LABEL: brRI_i16_sge: 3886; GENERIC: # %bb.0: # %entry 3887; GENERIC-NEXT: .cfi_def_cfa_offset 0 3888; GENERIC-NEXT: subi16 sp, sp, 4 3889; GENERIC-NEXT: .cfi_def_cfa_offset 4 3890; GENERIC-NEXT: sexth16 a0, a0 3891; GENERIC-NEXT: cmplti16 a0, 10 3892; GENERIC-NEXT: bt16 .LBB78_2 3893; GENERIC-NEXT: # %bb.1: # %label1 3894; GENERIC-NEXT: movi16 a0, 1 3895; GENERIC-NEXT: addi16 sp, sp, 4 3896; GENERIC-NEXT: rts16 3897; GENERIC-NEXT: .LBB78_2: # %label2 3898; GENERIC-NEXT: movi16 a0, 0 3899; GENERIC-NEXT: addi16 sp, sp, 4 3900; GENERIC-NEXT: rts16 3901; CHECK-UGTXT: icmpu32 a0, a1, a0 3902; CHECK-UGTXT: rts16 3903entry: 3904 %icmp = icmp sge i16 %x, 10 3905 br i1 %icmp, label %label1, label %label2 3906label1: 3907 ret i16 1 3908label2: 3909 ret i16 0 3910} 3911 3912define i16 @brR0_i16_sge(i16 %x) { 3913; CHECK-LABEL: brR0_i16_sge: 3914; CHECK: # %bb.0: # %entry 3915; CHECK-NEXT: sexth16 a0, a0 3916; CHECK-NEXT: blz32 a0, .LBB79_2 3917; CHECK-NEXT: # %bb.1: # %label1 3918; CHECK-NEXT: movi16 a0, 1 3919; CHECK-NEXT: rts16 3920; CHECK-NEXT: .LBB79_2: # %label2 3921; CHECK-NEXT: movi16 a0, 0 3922; CHECK-NEXT: rts16 3923; 3924; GENERIC-LABEL: brR0_i16_sge: 3925; GENERIC: # %bb.0: # %entry 3926; GENERIC-NEXT: .cfi_def_cfa_offset 0 3927; GENERIC-NEXT: subi16 sp, sp, 4 3928; GENERIC-NEXT: .cfi_def_cfa_offset 4 3929; GENERIC-NEXT: sexth16 a0, a0 3930; GENERIC-NEXT: movi16 a1, 0 3931; GENERIC-NEXT: cmplt16 a0, a1 3932; GENERIC-NEXT: bt16 .LBB79_2 3933; GENERIC-NEXT: # %bb.1: # %label1 3934; GENERIC-NEXT: movi16 a0, 1 3935; GENERIC-NEXT: addi16 sp, sp, 4 3936; GENERIC-NEXT: rts16 3937; GENERIC-NEXT: .LBB79_2: # %label2 3938; GENERIC-NEXT: movi16 a0, 0 3939; GENERIC-NEXT: addi16 sp, sp, 4 3940; GENERIC-NEXT: rts16 3941; CHECK-UGTXT: icmpu32 a0, a1, a0 3942; CHECK-UGTXT: rts16 3943entry: 3944 %icmp = icmp sge i16 %x, 0 3945 br i1 %icmp, label %label1, label %label2 3946label1: 3947 ret i16 1 3948label2: 3949 ret i16 0 3950} 3951 3952;SLT 3953define i16 @brRR_i16_slt(i16 %x, i16 %y) { 3954; CHECK-LABEL: brRR_i16_slt: 3955; CHECK: # %bb.0: # %entry 3956; CHECK-NEXT: sexth16 a0, a0 3957; CHECK-NEXT: sexth16 a1, a1 3958; CHECK-NEXT: cmplt16 a1, a0 3959; CHECK-NEXT: bf32 .LBB80_2 3960; CHECK-NEXT: # %bb.1: # %label1 3961; CHECK-NEXT: movi16 a0, 1 3962; CHECK-NEXT: rts16 3963; CHECK-NEXT: .LBB80_2: # %label2 3964; CHECK-NEXT: movi16 a0, 0 3965; CHECK-NEXT: rts16 3966; 3967; GENERIC-LABEL: brRR_i16_slt: 3968; GENERIC: # %bb.0: # %entry 3969; GENERIC-NEXT: .cfi_def_cfa_offset 0 3970; GENERIC-NEXT: subi16 sp, sp, 4 3971; GENERIC-NEXT: .cfi_def_cfa_offset 4 3972; GENERIC-NEXT: sexth16 a0, a0 3973; GENERIC-NEXT: sexth16 a1, a1 3974; GENERIC-NEXT: cmplt16 a1, a0 3975; GENERIC-NEXT: bf16 .LBB80_2 3976; GENERIC-NEXT: # %bb.1: # %label1 3977; GENERIC-NEXT: movi16 a0, 1 3978; GENERIC-NEXT: addi16 sp, sp, 4 3979; GENERIC-NEXT: rts16 3980; GENERIC-NEXT: .LBB80_2: # %label2 3981; GENERIC-NEXT: movi16 a0, 0 3982; GENERIC-NEXT: addi16 sp, sp, 4 3983; GENERIC-NEXT: rts16 3984; CHECK-UGTXT: icmpu32 a0, a1, a0 3985; CHECK-UGTXT: rts16 3986entry: 3987 %icmp = icmp slt i16 %y, %x 3988 br i1 %icmp, label %label1, label %label2 3989label1: 3990 ret i16 1 3991label2: 3992 ret i16 0 3993} 3994 3995define i16 @brRI_i16_slt(i16 %x) { 3996; CHECK-LABEL: brRI_i16_slt: 3997; CHECK: # %bb.0: # %entry 3998; CHECK-NEXT: sexth16 a0, a0 3999; CHECK-NEXT: movi16 a1, 9 4000; CHECK-NEXT: cmplt16 a1, a0 4001; CHECK-NEXT: bt32 .LBB81_2 4002; CHECK-NEXT: # %bb.1: # %label1 4003; CHECK-NEXT: movi16 a0, 1 4004; CHECK-NEXT: rts16 4005; CHECK-NEXT: .LBB81_2: # %label2 4006; CHECK-NEXT: movi16 a0, 0 4007; CHECK-NEXT: rts16 4008; 4009; GENERIC-LABEL: brRI_i16_slt: 4010; GENERIC: # %bb.0: # %entry 4011; GENERIC-NEXT: .cfi_def_cfa_offset 0 4012; GENERIC-NEXT: subi16 sp, sp, 4 4013; GENERIC-NEXT: .cfi_def_cfa_offset 4 4014; GENERIC-NEXT: sexth16 a0, a0 4015; GENERIC-NEXT: movi16 a1, 9 4016; GENERIC-NEXT: cmplt16 a1, a0 4017; GENERIC-NEXT: bt16 .LBB81_2 4018; GENERIC-NEXT: # %bb.1: # %label1 4019; GENERIC-NEXT: movi16 a0, 1 4020; GENERIC-NEXT: addi16 sp, sp, 4 4021; GENERIC-NEXT: rts16 4022; GENERIC-NEXT: .LBB81_2: # %label2 4023; GENERIC-NEXT: movi16 a0, 0 4024; GENERIC-NEXT: addi16 sp, sp, 4 4025; GENERIC-NEXT: rts16 4026; CHECK-UGTXT: icmpu32 a0, a1, a0 4027; CHECK-UGTXT: rts16 4028entry: 4029 %icmp = icmp slt i16 %x, 10 4030 br i1 %icmp, label %label1, label %label2 4031label1: 4032 ret i16 1 4033label2: 4034 ret i16 0 4035} 4036 4037define i16 @brR0_i16_slt(i16 %x) { 4038; CHECK-LABEL: brR0_i16_slt: 4039; CHECK: # %bb.0: # %entry 4040; CHECK-NEXT: sexth16 a0, a0 4041; CHECK-NEXT: movih32 a1, 65535 4042; CHECK-NEXT: ori32 a1, a1, 65535 4043; CHECK-NEXT: cmplt16 a1, a0 4044; CHECK-NEXT: bf32 .LBB82_2 4045; CHECK-NEXT: # %bb.1: # %label2 4046; CHECK-NEXT: movi16 a0, 0 4047; CHECK-NEXT: rts16 4048; CHECK-NEXT: .LBB82_2: # %label1 4049; CHECK-NEXT: movi16 a0, 1 4050; CHECK-NEXT: rts16 4051; 4052; GENERIC-LABEL: brR0_i16_slt: 4053; GENERIC: # %bb.0: # %entry 4054; GENERIC-NEXT: .cfi_def_cfa_offset 0 4055; GENERIC-NEXT: subi16 sp, sp, 4 4056; GENERIC-NEXT: .cfi_def_cfa_offset 4 4057; GENERIC-NEXT: sexth16 a0, a0 4058; GENERIC-NEXT: movi16 a1, 255 4059; GENERIC-NEXT: lsli16 a2, a1, 24 4060; GENERIC-NEXT: lsli16 a3, a1, 16 4061; GENERIC-NEXT: or16 a3, a2 4062; GENERIC-NEXT: lsli16 a2, a1, 8 4063; GENERIC-NEXT: or16 a2, a3 4064; GENERIC-NEXT: or16 a2, a1 4065; GENERIC-NEXT: cmplt16 a2, a0 4066; GENERIC-NEXT: bf16 .LBB82_2 4067; GENERIC-NEXT: # %bb.1: # %label2 4068; GENERIC-NEXT: movi16 a0, 0 4069; GENERIC-NEXT: addi16 sp, sp, 4 4070; GENERIC-NEXT: rts16 4071; GENERIC-NEXT: .LBB82_2: # %label1 4072; GENERIC-NEXT: movi16 a0, 1 4073; GENERIC-NEXT: addi16 sp, sp, 4 4074; GENERIC-NEXT: rts16 4075; CHECK-UGTXT: icmpu32 a0, a1, a0 4076; CHECK-UGTXT: rts16 4077entry: 4078 %icmp = icmp slt i16 %x, 0 4079 br i1 %icmp, label %label1, label %label2 4080label1: 4081 ret i16 1 4082label2: 4083 ret i16 0 4084} 4085 4086;SLE 4087define i16 @brRR_i16_sle(i16 %x, i16 %y) { 4088; CHECK-LABEL: brRR_i16_sle: 4089; CHECK: # %bb.0: # %entry 4090; CHECK-NEXT: sexth16 a1, a1 4091; CHECK-NEXT: sexth16 a0, a0 4092; CHECK-NEXT: cmplt16 a0, a1 4093; CHECK-NEXT: bt32 .LBB83_2 4094; CHECK-NEXT: # %bb.1: # %label1 4095; CHECK-NEXT: movi16 a0, 1 4096; CHECK-NEXT: rts16 4097; CHECK-NEXT: .LBB83_2: # %label2 4098; CHECK-NEXT: movi16 a0, 0 4099; CHECK-NEXT: rts16 4100; 4101; GENERIC-LABEL: brRR_i16_sle: 4102; GENERIC: # %bb.0: # %entry 4103; GENERIC-NEXT: .cfi_def_cfa_offset 0 4104; GENERIC-NEXT: subi16 sp, sp, 4 4105; GENERIC-NEXT: .cfi_def_cfa_offset 4 4106; GENERIC-NEXT: sexth16 a1, a1 4107; GENERIC-NEXT: sexth16 a0, a0 4108; GENERIC-NEXT: cmplt16 a0, a1 4109; GENERIC-NEXT: bt16 .LBB83_2 4110; GENERIC-NEXT: # %bb.1: # %label1 4111; GENERIC-NEXT: movi16 a0, 1 4112; GENERIC-NEXT: addi16 sp, sp, 4 4113; GENERIC-NEXT: rts16 4114; GENERIC-NEXT: .LBB83_2: # %label2 4115; GENERIC-NEXT: movi16 a0, 0 4116; GENERIC-NEXT: addi16 sp, sp, 4 4117; GENERIC-NEXT: rts16 4118; CHECK-UGTXT: icmpu32 a0, a1, a0 4119; CHECK-UGTXT: rts16 4120entry: 4121 %icmp = icmp sle i16 %y, %x 4122 br i1 %icmp, label %label1, label %label2 4123label1: 4124 ret i16 1 4125label2: 4126 ret i16 0 4127} 4128 4129define i16 @brRI_i16_sle(i16 %x) { 4130; CHECK-LABEL: brRI_i16_sle: 4131; CHECK: # %bb.0: # %entry 4132; CHECK-NEXT: sexth16 a0, a0 4133; CHECK-NEXT: movi16 a1, 10 4134; CHECK-NEXT: cmplt16 a1, a0 4135; CHECK-NEXT: bt32 .LBB84_2 4136; CHECK-NEXT: # %bb.1: # %label1 4137; CHECK-NEXT: movi16 a0, 1 4138; CHECK-NEXT: rts16 4139; CHECK-NEXT: .LBB84_2: # %label2 4140; CHECK-NEXT: movi16 a0, 0 4141; CHECK-NEXT: rts16 4142; 4143; GENERIC-LABEL: brRI_i16_sle: 4144; GENERIC: # %bb.0: # %entry 4145; GENERIC-NEXT: .cfi_def_cfa_offset 0 4146; GENERIC-NEXT: subi16 sp, sp, 4 4147; GENERIC-NEXT: .cfi_def_cfa_offset 4 4148; GENERIC-NEXT: sexth16 a0, a0 4149; GENERIC-NEXT: movi16 a1, 10 4150; GENERIC-NEXT: cmplt16 a1, a0 4151; GENERIC-NEXT: bt16 .LBB84_2 4152; GENERIC-NEXT: # %bb.1: # %label1 4153; GENERIC-NEXT: movi16 a0, 1 4154; GENERIC-NEXT: addi16 sp, sp, 4 4155; GENERIC-NEXT: rts16 4156; GENERIC-NEXT: .LBB84_2: # %label2 4157; GENERIC-NEXT: movi16 a0, 0 4158; GENERIC-NEXT: addi16 sp, sp, 4 4159; GENERIC-NEXT: rts16 4160; CHECK-UGTXT: icmpu32 a0, a1, a0 4161; CHECK-UGTXT: rts16 4162entry: 4163 %icmp = icmp sle i16 %x, 10 4164 br i1 %icmp, label %label1, label %label2 4165label1: 4166 ret i16 1 4167label2: 4168 ret i16 0 4169} 4170 4171define i16 @brR0_i16_sle(i16 %x) { 4172; CHECK-LABEL: brR0_i16_sle: 4173; CHECK: # %bb.0: # %entry 4174; CHECK-NEXT: sexth16 a0, a0 4175; CHECK-NEXT: bhz32 a0, .LBB85_2 4176; CHECK-NEXT: # %bb.1: # %label1 4177; CHECK-NEXT: movi16 a0, 1 4178; CHECK-NEXT: rts16 4179; CHECK-NEXT: .LBB85_2: # %label2 4180; CHECK-NEXT: movi16 a0, 0 4181; CHECK-NEXT: rts16 4182; 4183; GENERIC-LABEL: brR0_i16_sle: 4184; GENERIC: # %bb.0: # %entry 4185; GENERIC-NEXT: .cfi_def_cfa_offset 0 4186; GENERIC-NEXT: subi16 sp, sp, 4 4187; GENERIC-NEXT: .cfi_def_cfa_offset 4 4188; GENERIC-NEXT: sexth16 a0, a0 4189; GENERIC-NEXT: movi16 a1, 0 4190; GENERIC-NEXT: cmplt16 a1, a0 4191; GENERIC-NEXT: bt16 .LBB85_2 4192; GENERIC-NEXT: # %bb.1: # %label1 4193; GENERIC-NEXT: movi16 a0, 1 4194; GENERIC-NEXT: addi16 sp, sp, 4 4195; GENERIC-NEXT: rts16 4196; GENERIC-NEXT: .LBB85_2: # %label2 4197; GENERIC-NEXT: movi16 a0, 0 4198; GENERIC-NEXT: addi16 sp, sp, 4 4199; GENERIC-NEXT: rts16 4200; CHECK-UGTXT: icmpu32 a0, a1, a0 4201; CHECK-UGTXT: rts16 4202entry: 4203 %icmp = icmp sle i16 %x, 0 4204 br i1 %icmp, label %label1, label %label2 4205label1: 4206 ret i16 1 4207label2: 4208 ret i16 0 4209} 4210 4211 4212define i16 @brCBit_i16(i1 %c) { 4213; CHECK-LABEL: brCBit_i16: 4214; CHECK: # %bb.0: # %entry 4215; CHECK-NEXT: andi32 a0, a0, 1 4216; CHECK-NEXT: bez32 a0, .LBB86_2 4217; CHECK-NEXT: # %bb.1: # %label1 4218; CHECK-NEXT: movi16 a0, 1 4219; CHECK-NEXT: rts16 4220; CHECK-NEXT: .LBB86_2: # %label2 4221; CHECK-NEXT: movi16 a0, 0 4222; CHECK-NEXT: rts16 4223; 4224; GENERIC-LABEL: brCBit_i16: 4225; GENERIC: # %bb.0: # %entry 4226; GENERIC-NEXT: .cfi_def_cfa_offset 0 4227; GENERIC-NEXT: subi16 sp, sp, 4 4228; GENERIC-NEXT: .cfi_def_cfa_offset 4 4229; GENERIC-NEXT: movi16 a1, 1 4230; GENERIC-NEXT: and16 a1, a0 4231; GENERIC-NEXT: cmpnei16 a1, 0 4232; GENERIC-NEXT: bf16 .LBB86_2 4233; GENERIC-NEXT: # %bb.1: # %label1 4234; GENERIC-NEXT: movi16 a0, 1 4235; GENERIC-NEXT: addi16 sp, sp, 4 4236; GENERIC-NEXT: rts16 4237; GENERIC-NEXT: .LBB86_2: # %label2 4238; GENERIC-NEXT: movi16 a0, 0 4239; GENERIC-NEXT: addi16 sp, sp, 4 4240; GENERIC-NEXT: rts16 4241entry: 4242 br i1 %c, label %label1, label %label2 4243label1: 4244 ret i16 1 4245label2: 4246 ret i16 0 4247} 4248 4249 4250;EQ 4251define i8 @brRR_i8_eq(i8 %x, i8 %y) { 4252; CHECK-LABEL: brRR_i8_eq: 4253; CHECK: # %bb.0: # %entry 4254; CHECK-NEXT: zextb16 a0, a0 4255; CHECK-NEXT: zextb16 a1, a1 4256; CHECK-NEXT: cmpne16 a1, a0 4257; CHECK-NEXT: bt32 .LBB87_2 4258; CHECK-NEXT: # %bb.1: # %label1 4259; CHECK-NEXT: movi16 a0, 1 4260; CHECK-NEXT: rts16 4261; CHECK-NEXT: .LBB87_2: # %label2 4262; CHECK-NEXT: movi16 a0, 0 4263; CHECK-NEXT: rts16 4264; 4265; GENERIC-LABEL: brRR_i8_eq: 4266; GENERIC: # %bb.0: # %entry 4267; GENERIC-NEXT: .cfi_def_cfa_offset 0 4268; GENERIC-NEXT: subi16 sp, sp, 4 4269; GENERIC-NEXT: .cfi_def_cfa_offset 4 4270; GENERIC-NEXT: movi16 a2, 255 4271; GENERIC-NEXT: and16 a0, a2 4272; GENERIC-NEXT: and16 a1, a2 4273; GENERIC-NEXT: cmpne16 a1, a0 4274; GENERIC-NEXT: bt16 .LBB87_2 4275; GENERIC-NEXT: # %bb.1: # %label1 4276; GENERIC-NEXT: movi16 a0, 1 4277; GENERIC-NEXT: addi16 sp, sp, 4 4278; GENERIC-NEXT: rts16 4279; GENERIC-NEXT: .LBB87_2: # %label2 4280; GENERIC-NEXT: movi16 a0, 0 4281; GENERIC-NEXT: addi16 sp, sp, 4 4282; GENERIC-NEXT: rts16 4283entry: 4284 %icmp = icmp eq i8 %y, %x 4285 br i1 %icmp, label %label1, label %label2 4286label1: 4287 ret i8 1 4288label2: 4289 ret i8 0 4290} 4291 4292define i8 @brRI_i8_eq(i8 %x) { 4293; CHECK-LABEL: brRI_i8_eq: 4294; CHECK: # %bb.0: # %entry 4295; CHECK-NEXT: zextb16 a0, a0 4296; CHECK-NEXT: cmpnei16 a0, 10 4297; CHECK-NEXT: bt32 .LBB88_2 4298; CHECK-NEXT: # %bb.1: # %label1 4299; CHECK-NEXT: movi16 a0, 1 4300; CHECK-NEXT: rts16 4301; CHECK-NEXT: .LBB88_2: # %label2 4302; CHECK-NEXT: movi16 a0, 0 4303; CHECK-NEXT: rts16 4304; 4305; GENERIC-LABEL: brRI_i8_eq: 4306; GENERIC: # %bb.0: # %entry 4307; GENERIC-NEXT: .cfi_def_cfa_offset 0 4308; GENERIC-NEXT: subi16 sp, sp, 4 4309; GENERIC-NEXT: .cfi_def_cfa_offset 4 4310; GENERIC-NEXT: movi16 a1, 255 4311; GENERIC-NEXT: and16 a1, a0 4312; GENERIC-NEXT: cmpnei16 a1, 10 4313; GENERIC-NEXT: bt16 .LBB88_2 4314; GENERIC-NEXT: # %bb.1: # %label1 4315; GENERIC-NEXT: movi16 a0, 1 4316; GENERIC-NEXT: addi16 sp, sp, 4 4317; GENERIC-NEXT: rts16 4318; GENERIC-NEXT: .LBB88_2: # %label2 4319; GENERIC-NEXT: movi16 a0, 0 4320; GENERIC-NEXT: addi16 sp, sp, 4 4321; GENERIC-NEXT: rts16 4322entry: 4323 %icmp = icmp eq i8 %x, 10 4324 br i1 %icmp, label %label1, label %label2 4325label1: 4326 ret i8 1 4327label2: 4328 ret i8 0 4329} 4330 4331define i8 @brR0_i8_eq(i8 %x) { 4332; CHECK-LABEL: brR0_i8_eq: 4333; CHECK: # %bb.0: # %entry 4334; CHECK-NEXT: zextb16 a0, a0 4335; CHECK-NEXT: bez32 a0, .LBB89_2 4336; CHECK-NEXT: # %bb.1: # %label2 4337; CHECK-NEXT: movi16 a0, 0 4338; CHECK-NEXT: rts16 4339; CHECK-NEXT: .LBB89_2: # %label1 4340; CHECK-NEXT: movi16 a0, 1 4341; CHECK-NEXT: rts16 4342; 4343; GENERIC-LABEL: brR0_i8_eq: 4344; GENERIC: # %bb.0: # %entry 4345; GENERIC-NEXT: .cfi_def_cfa_offset 0 4346; GENERIC-NEXT: subi16 sp, sp, 4 4347; GENERIC-NEXT: .cfi_def_cfa_offset 4 4348; GENERIC-NEXT: movi16 a1, 255 4349; GENERIC-NEXT: and16 a1, a0 4350; GENERIC-NEXT: cmpnei16 a1, 0 4351; GENERIC-NEXT: bf16 .LBB89_2 4352; GENERIC-NEXT: # %bb.1: # %label2 4353; GENERIC-NEXT: movi16 a0, 0 4354; GENERIC-NEXT: addi16 sp, sp, 4 4355; GENERIC-NEXT: rts16 4356; GENERIC-NEXT: .LBB89_2: # %label1 4357; GENERIC-NEXT: movi16 a0, 1 4358; GENERIC-NEXT: addi16 sp, sp, 4 4359; GENERIC-NEXT: rts16 4360entry: 4361 %icmp = icmp eq i8 %x, 0 4362 br i1 %icmp, label %label1, label %label2 4363label1: 4364 ret i8 1 4365label2: 4366 ret i8 0 4367} 4368 4369;NE 4370define i8 @brRR_i8_ne(i8 %x, i8 %y) { 4371; CHECK-LABEL: brRR_i8_ne: 4372; CHECK: # %bb.0: # %entry 4373; CHECK-NEXT: zextb16 a0, a0 4374; CHECK-NEXT: zextb16 a1, a1 4375; CHECK-NEXT: cmpne16 a1, a0 4376; CHECK-NEXT: bf32 .LBB90_2 4377; CHECK-NEXT: # %bb.1: # %label1 4378; CHECK-NEXT: movi16 a0, 1 4379; CHECK-NEXT: rts16 4380; CHECK-NEXT: .LBB90_2: # %label2 4381; CHECK-NEXT: movi16 a0, 0 4382; CHECK-NEXT: rts16 4383; 4384; GENERIC-LABEL: brRR_i8_ne: 4385; GENERIC: # %bb.0: # %entry 4386; GENERIC-NEXT: .cfi_def_cfa_offset 0 4387; GENERIC-NEXT: subi16 sp, sp, 4 4388; GENERIC-NEXT: .cfi_def_cfa_offset 4 4389; GENERIC-NEXT: movi16 a2, 255 4390; GENERIC-NEXT: and16 a0, a2 4391; GENERIC-NEXT: and16 a1, a2 4392; GENERIC-NEXT: cmpne16 a1, a0 4393; GENERIC-NEXT: bf16 .LBB90_2 4394; GENERIC-NEXT: # %bb.1: # %label1 4395; GENERIC-NEXT: movi16 a0, 1 4396; GENERIC-NEXT: addi16 sp, sp, 4 4397; GENERIC-NEXT: rts16 4398; GENERIC-NEXT: .LBB90_2: # %label2 4399; GENERIC-NEXT: movi16 a0, 0 4400; GENERIC-NEXT: addi16 sp, sp, 4 4401; GENERIC-NEXT: rts16 4402entry: 4403 %icmp = icmp ne i8 %y, %x 4404 br i1 %icmp, label %label1, label %label2 4405label1: 4406 ret i8 1 4407label2: 4408 ret i8 0 4409} 4410 4411define i8 @brRI_i8_ne(i8 %x) { 4412; CHECK-LABEL: brRI_i8_ne: 4413; CHECK: # %bb.0: # %entry 4414; CHECK-NEXT: zextb16 a0, a0 4415; CHECK-NEXT: cmpnei16 a0, 10 4416; CHECK-NEXT: bf32 .LBB91_2 4417; CHECK-NEXT: # %bb.1: # %label1 4418; CHECK-NEXT: movi16 a0, 1 4419; CHECK-NEXT: rts16 4420; CHECK-NEXT: .LBB91_2: # %label2 4421; CHECK-NEXT: movi16 a0, 0 4422; CHECK-NEXT: rts16 4423; 4424; GENERIC-LABEL: brRI_i8_ne: 4425; GENERIC: # %bb.0: # %entry 4426; GENERIC-NEXT: .cfi_def_cfa_offset 0 4427; GENERIC-NEXT: subi16 sp, sp, 4 4428; GENERIC-NEXT: .cfi_def_cfa_offset 4 4429; GENERIC-NEXT: movi16 a1, 255 4430; GENERIC-NEXT: and16 a1, a0 4431; GENERIC-NEXT: cmpnei16 a1, 10 4432; GENERIC-NEXT: bf16 .LBB91_2 4433; GENERIC-NEXT: # %bb.1: # %label1 4434; GENERIC-NEXT: movi16 a0, 1 4435; GENERIC-NEXT: addi16 sp, sp, 4 4436; GENERIC-NEXT: rts16 4437; GENERIC-NEXT: .LBB91_2: # %label2 4438; GENERIC-NEXT: movi16 a0, 0 4439; GENERIC-NEXT: addi16 sp, sp, 4 4440; GENERIC-NEXT: rts16 4441entry: 4442 %icmp = icmp ne i8 %x, 10 4443 br i1 %icmp, label %label1, label %label2 4444label1: 4445 ret i8 1 4446label2: 4447 ret i8 0 4448} 4449 4450define i8 @brR0_i8_ne(i8 %x) { 4451; CHECK-LABEL: brR0_i8_ne: 4452; CHECK: # %bb.0: # %entry 4453; CHECK-NEXT: zextb16 a0, a0 4454; CHECK-NEXT: bez32 a0, .LBB92_2 4455; CHECK-NEXT: # %bb.1: # %label1 4456; CHECK-NEXT: movi16 a0, 1 4457; CHECK-NEXT: rts16 4458; CHECK-NEXT: .LBB92_2: # %label2 4459; CHECK-NEXT: movi16 a0, 0 4460; CHECK-NEXT: rts16 4461; 4462; GENERIC-LABEL: brR0_i8_ne: 4463; GENERIC: # %bb.0: # %entry 4464; GENERIC-NEXT: .cfi_def_cfa_offset 0 4465; GENERIC-NEXT: subi16 sp, sp, 4 4466; GENERIC-NEXT: .cfi_def_cfa_offset 4 4467; GENERIC-NEXT: movi16 a1, 255 4468; GENERIC-NEXT: and16 a1, a0 4469; GENERIC-NEXT: cmpnei16 a1, 0 4470; GENERIC-NEXT: bf16 .LBB92_2 4471; GENERIC-NEXT: # %bb.1: # %label1 4472; GENERIC-NEXT: movi16 a0, 1 4473; GENERIC-NEXT: addi16 sp, sp, 4 4474; GENERIC-NEXT: rts16 4475; GENERIC-NEXT: .LBB92_2: # %label2 4476; GENERIC-NEXT: movi16 a0, 0 4477; GENERIC-NEXT: addi16 sp, sp, 4 4478; GENERIC-NEXT: rts16 4479entry: 4480 %icmp = icmp ne i8 %x, 0 4481 br i1 %icmp, label %label1, label %label2 4482label1: 4483 ret i8 1 4484label2: 4485 ret i8 0 4486} 4487 4488;UGT 4489define i8 @brRR_i8_ugt(i8 %x, i8 %y) { 4490; CHECK-LABEL: brRR_i8_ugt: 4491; CHECK: # %bb.0: # %entry 4492; CHECK-NEXT: zextb16 a1, a1 4493; CHECK-NEXT: zextb16 a0, a0 4494; CHECK-NEXT: cmphs16 a0, a1 4495; CHECK-NEXT: bt32 .LBB93_2 4496; CHECK-NEXT: # %bb.1: # %label1 4497; CHECK-NEXT: movi16 a0, 1 4498; CHECK-NEXT: rts16 4499; CHECK-NEXT: .LBB93_2: # %label2 4500; CHECK-NEXT: movi16 a0, 0 4501; CHECK-NEXT: rts16 4502; 4503; GENERIC-LABEL: brRR_i8_ugt: 4504; GENERIC: # %bb.0: # %entry 4505; GENERIC-NEXT: .cfi_def_cfa_offset 0 4506; GENERIC-NEXT: subi16 sp, sp, 4 4507; GENERIC-NEXT: .cfi_def_cfa_offset 4 4508; GENERIC-NEXT: movi16 a2, 255 4509; GENERIC-NEXT: and16 a1, a2 4510; GENERIC-NEXT: and16 a0, a2 4511; GENERIC-NEXT: cmphs16 a0, a1 4512; GENERIC-NEXT: bt16 .LBB93_2 4513; GENERIC-NEXT: # %bb.1: # %label1 4514; GENERIC-NEXT: movi16 a0, 1 4515; GENERIC-NEXT: addi16 sp, sp, 4 4516; GENERIC-NEXT: rts16 4517; GENERIC-NEXT: .LBB93_2: # %label2 4518; GENERIC-NEXT: movi16 a0, 0 4519; GENERIC-NEXT: addi16 sp, sp, 4 4520; GENERIC-NEXT: rts16 4521; CHECK-UGTXT: icmpu32 a0, a1, a0 4522; CHECK-UGTXT: rts16 4523entry: 4524 %icmp = icmp ugt i8 %y, %x 4525 br i1 %icmp, label %label1, label %label2 4526label1: 4527 ret i8 1 4528label2: 4529 ret i8 0 4530} 4531 4532define i8 @brRI_i8_ugt(i8 %x) { 4533; CHECK-LABEL: brRI_i8_ugt: 4534; CHECK: # %bb.0: # %entry 4535; CHECK-NEXT: zextb16 a0, a0 4536; CHECK-NEXT: cmphsi16 a0, 11 4537; CHECK-NEXT: bf32 .LBB94_2 4538; CHECK-NEXT: # %bb.1: # %label1 4539; CHECK-NEXT: movi16 a0, 1 4540; CHECK-NEXT: rts16 4541; CHECK-NEXT: .LBB94_2: # %label2 4542; CHECK-NEXT: movi16 a0, 0 4543; CHECK-NEXT: rts16 4544; 4545; GENERIC-LABEL: brRI_i8_ugt: 4546; GENERIC: # %bb.0: # %entry 4547; GENERIC-NEXT: .cfi_def_cfa_offset 0 4548; GENERIC-NEXT: subi16 sp, sp, 4 4549; GENERIC-NEXT: .cfi_def_cfa_offset 4 4550; GENERIC-NEXT: movi16 a1, 255 4551; GENERIC-NEXT: and16 a1, a0 4552; GENERIC-NEXT: cmphsi16 a1, 11 4553; GENERIC-NEXT: bf16 .LBB94_2 4554; GENERIC-NEXT: # %bb.1: # %label1 4555; GENERIC-NEXT: movi16 a0, 1 4556; GENERIC-NEXT: addi16 sp, sp, 4 4557; GENERIC-NEXT: rts16 4558; GENERIC-NEXT: .LBB94_2: # %label2 4559; GENERIC-NEXT: movi16 a0, 0 4560; GENERIC-NEXT: addi16 sp, sp, 4 4561; GENERIC-NEXT: rts16 4562; CHECK-UGTXT: icmpu32 a0, a1, a0 4563; CHECK-UGTXT: rts16 4564entry: 4565 %icmp = icmp ugt i8 %x, 10 4566 br i1 %icmp, label %label1, label %label2 4567label1: 4568 ret i8 1 4569label2: 4570 ret i8 0 4571} 4572 4573define i8 @brR0_i8_ugt(i8 %x) { 4574; CHECK-LABEL: brR0_i8_ugt: 4575; CHECK: # %bb.0: # %entry 4576; CHECK-NEXT: zextb16 a0, a0 4577; CHECK-NEXT: bez32 a0, .LBB95_2 4578; CHECK-NEXT: # %bb.1: # %label1 4579; CHECK-NEXT: movi16 a0, 1 4580; CHECK-NEXT: rts16 4581; CHECK-NEXT: .LBB95_2: # %label2 4582; CHECK-NEXT: movi16 a0, 0 4583; CHECK-NEXT: rts16 4584; 4585; GENERIC-LABEL: brR0_i8_ugt: 4586; GENERIC: # %bb.0: # %entry 4587; GENERIC-NEXT: .cfi_def_cfa_offset 0 4588; GENERIC-NEXT: subi16 sp, sp, 4 4589; GENERIC-NEXT: .cfi_def_cfa_offset 4 4590; GENERIC-NEXT: movi16 a1, 255 4591; GENERIC-NEXT: and16 a1, a0 4592; GENERIC-NEXT: cmpnei16 a1, 0 4593; GENERIC-NEXT: bf16 .LBB95_2 4594; GENERIC-NEXT: # %bb.1: # %label1 4595; GENERIC-NEXT: movi16 a0, 1 4596; GENERIC-NEXT: addi16 sp, sp, 4 4597; GENERIC-NEXT: rts16 4598; GENERIC-NEXT: .LBB95_2: # %label2 4599; GENERIC-NEXT: movi16 a0, 0 4600; GENERIC-NEXT: addi16 sp, sp, 4 4601; GENERIC-NEXT: rts16 4602; CHECK-UGTXT: icmpu32 a0, a1, a0 4603; CHECK-UGTXT: rts16 4604entry: 4605 %icmp = icmp ugt i8 %x, 0 4606 br i1 %icmp, label %label1, label %label2 4607label1: 4608 ret i8 1 4609label2: 4610 ret i8 0 4611} 4612 4613;UGE 4614define i8 @brRR_i8_uge(i8 %x, i8 %y) { 4615; CHECK-LABEL: brRR_i8_uge: 4616; CHECK: # %bb.0: # %entry 4617; CHECK-NEXT: zextb16 a0, a0 4618; CHECK-NEXT: zextb16 a1, a1 4619; CHECK-NEXT: cmphs16 a1, a0 4620; CHECK-NEXT: bf32 .LBB96_2 4621; CHECK-NEXT: # %bb.1: # %label1 4622; CHECK-NEXT: movi16 a0, 1 4623; CHECK-NEXT: rts16 4624; CHECK-NEXT: .LBB96_2: # %label2 4625; CHECK-NEXT: movi16 a0, 0 4626; CHECK-NEXT: rts16 4627; 4628; GENERIC-LABEL: brRR_i8_uge: 4629; GENERIC: # %bb.0: # %entry 4630; GENERIC-NEXT: .cfi_def_cfa_offset 0 4631; GENERIC-NEXT: subi16 sp, sp, 4 4632; GENERIC-NEXT: .cfi_def_cfa_offset 4 4633; GENERIC-NEXT: movi16 a2, 255 4634; GENERIC-NEXT: and16 a0, a2 4635; GENERIC-NEXT: and16 a1, a2 4636; GENERIC-NEXT: cmphs16 a1, a0 4637; GENERIC-NEXT: bf16 .LBB96_2 4638; GENERIC-NEXT: # %bb.1: # %label1 4639; GENERIC-NEXT: movi16 a0, 1 4640; GENERIC-NEXT: addi16 sp, sp, 4 4641; GENERIC-NEXT: rts16 4642; GENERIC-NEXT: .LBB96_2: # %label2 4643; GENERIC-NEXT: movi16 a0, 0 4644; GENERIC-NEXT: addi16 sp, sp, 4 4645; GENERIC-NEXT: rts16 4646; CHECK-UGTXT: icmpu32 a0, a1, a0 4647; CHECK-UGTXT: rts16 4648entry: 4649 %icmp = icmp uge i8 %y, %x 4650 br i1 %icmp, label %label1, label %label2 4651label1: 4652 ret i8 1 4653label2: 4654 ret i8 0 4655} 4656 4657define i8 @brRI_i8_uge(i8 %x) { 4658; CHECK-LABEL: brRI_i8_uge: 4659; CHECK: # %bb.0: # %entry 4660; CHECK-NEXT: zextb16 a0, a0 4661; CHECK-NEXT: cmphsi16 a0, 10 4662; CHECK-NEXT: bf32 .LBB97_2 4663; CHECK-NEXT: # %bb.1: # %label1 4664; CHECK-NEXT: movi16 a0, 1 4665; CHECK-NEXT: rts16 4666; CHECK-NEXT: .LBB97_2: # %label2 4667; CHECK-NEXT: movi16 a0, 0 4668; CHECK-NEXT: rts16 4669; 4670; GENERIC-LABEL: brRI_i8_uge: 4671; GENERIC: # %bb.0: # %entry 4672; GENERIC-NEXT: .cfi_def_cfa_offset 0 4673; GENERIC-NEXT: subi16 sp, sp, 4 4674; GENERIC-NEXT: .cfi_def_cfa_offset 4 4675; GENERIC-NEXT: movi16 a1, 255 4676; GENERIC-NEXT: and16 a1, a0 4677; GENERIC-NEXT: cmphsi16 a1, 10 4678; GENERIC-NEXT: bf16 .LBB97_2 4679; GENERIC-NEXT: # %bb.1: # %label1 4680; GENERIC-NEXT: movi16 a0, 1 4681; GENERIC-NEXT: addi16 sp, sp, 4 4682; GENERIC-NEXT: rts16 4683; GENERIC-NEXT: .LBB97_2: # %label2 4684; GENERIC-NEXT: movi16 a0, 0 4685; GENERIC-NEXT: addi16 sp, sp, 4 4686; GENERIC-NEXT: rts16 4687; CHECK-UGTXT: icmpu32 a0, a1, a0 4688; CHECK-UGTXT: rts16 4689entry: 4690 %icmp = icmp uge i8 %x, 10 4691 br i1 %icmp, label %label1, label %label2 4692label1: 4693 ret i8 1 4694label2: 4695 ret i8 0 4696} 4697 4698;ULT 4699define i8 @brRR_i8_ult(i8 %x, i8 %y) { 4700; CHECK-LABEL: brRR_i8_ult: 4701; CHECK: # %bb.0: # %entry 4702; CHECK-NEXT: zextb16 a0, a0 4703; CHECK-NEXT: zextb16 a1, a1 4704; CHECK-NEXT: cmphs16 a1, a0 4705; CHECK-NEXT: bt32 .LBB98_2 4706; CHECK-NEXT: # %bb.1: # %label1 4707; CHECK-NEXT: movi16 a0, 1 4708; CHECK-NEXT: rts16 4709; CHECK-NEXT: .LBB98_2: # %label2 4710; CHECK-NEXT: movi16 a0, 0 4711; CHECK-NEXT: rts16 4712; 4713; GENERIC-LABEL: brRR_i8_ult: 4714; GENERIC: # %bb.0: # %entry 4715; GENERIC-NEXT: .cfi_def_cfa_offset 0 4716; GENERIC-NEXT: subi16 sp, sp, 4 4717; GENERIC-NEXT: .cfi_def_cfa_offset 4 4718; GENERIC-NEXT: movi16 a2, 255 4719; GENERIC-NEXT: and16 a0, a2 4720; GENERIC-NEXT: and16 a1, a2 4721; GENERIC-NEXT: cmphs16 a1, a0 4722; GENERIC-NEXT: bt16 .LBB98_2 4723; GENERIC-NEXT: # %bb.1: # %label1 4724; GENERIC-NEXT: movi16 a0, 1 4725; GENERIC-NEXT: addi16 sp, sp, 4 4726; GENERIC-NEXT: rts16 4727; GENERIC-NEXT: .LBB98_2: # %label2 4728; GENERIC-NEXT: movi16 a0, 0 4729; GENERIC-NEXT: addi16 sp, sp, 4 4730; GENERIC-NEXT: rts16 4731; CHECK-UGTXT: icmpu32 a0, a1, a0 4732; CHECK-UGTXT: rts16 4733entry: 4734 %icmp = icmp ult i8 %y, %x 4735 br i1 %icmp, label %label1, label %label2 4736label1: 4737 ret i8 1 4738label2: 4739 ret i8 0 4740} 4741 4742define i8 @brRI_i8_ult(i8 %x) { 4743; CHECK-LABEL: brRI_i8_ult: 4744; CHECK: # %bb.0: # %entry 4745; CHECK-NEXT: zextb16 a0, a0 4746; CHECK-NEXT: movi16 a1, 9 4747; CHECK-NEXT: cmphs16 a1, a0 4748; CHECK-NEXT: bf32 .LBB99_2 4749; CHECK-NEXT: # %bb.1: # %label1 4750; CHECK-NEXT: movi16 a0, 1 4751; CHECK-NEXT: rts16 4752; CHECK-NEXT: .LBB99_2: # %label2 4753; CHECK-NEXT: movi16 a0, 0 4754; CHECK-NEXT: rts16 4755; 4756; GENERIC-LABEL: brRI_i8_ult: 4757; GENERIC: # %bb.0: # %entry 4758; GENERIC-NEXT: .cfi_def_cfa_offset 0 4759; GENERIC-NEXT: subi16 sp, sp, 4 4760; GENERIC-NEXT: .cfi_def_cfa_offset 4 4761; GENERIC-NEXT: movi16 a1, 255 4762; GENERIC-NEXT: and16 a1, a0 4763; GENERIC-NEXT: movi16 a0, 9 4764; GENERIC-NEXT: cmphs16 a0, a1 4765; GENERIC-NEXT: bf16 .LBB99_2 4766; GENERIC-NEXT: # %bb.1: # %label1 4767; GENERIC-NEXT: movi16 a0, 1 4768; GENERIC-NEXT: addi16 sp, sp, 4 4769; GENERIC-NEXT: rts16 4770; GENERIC-NEXT: .LBB99_2: # %label2 4771; GENERIC-NEXT: movi16 a0, 0 4772; GENERIC-NEXT: addi16 sp, sp, 4 4773; GENERIC-NEXT: rts16 4774; CHECK-UGTXT: icmpu32 a0, a1, a0 4775; CHECK-UGTXT: rts16 4776entry: 4777 %icmp = icmp ult i8 %x, 10 4778 br i1 %icmp, label %label1, label %label2 4779label1: 4780 ret i8 1 4781label2: 4782 ret i8 0 4783} 4784 4785 4786;ULE 4787define i8 @brRR_i8_ule(i8 %x, i8 %y) { 4788; CHECK-LABEL: brRR_i8_ule: 4789; CHECK: # %bb.0: # %entry 4790; CHECK-NEXT: zextb16 a1, a1 4791; CHECK-NEXT: zextb16 a0, a0 4792; CHECK-NEXT: cmphs16 a0, a1 4793; CHECK-NEXT: bf32 .LBB100_2 4794; CHECK-NEXT: # %bb.1: # %label1 4795; CHECK-NEXT: movi16 a0, 1 4796; CHECK-NEXT: rts16 4797; CHECK-NEXT: .LBB100_2: # %label2 4798; CHECK-NEXT: movi16 a0, 0 4799; CHECK-NEXT: rts16 4800; 4801; GENERIC-LABEL: brRR_i8_ule: 4802; GENERIC: # %bb.0: # %entry 4803; GENERIC-NEXT: .cfi_def_cfa_offset 0 4804; GENERIC-NEXT: subi16 sp, sp, 4 4805; GENERIC-NEXT: .cfi_def_cfa_offset 4 4806; GENERIC-NEXT: movi16 a2, 255 4807; GENERIC-NEXT: and16 a1, a2 4808; GENERIC-NEXT: and16 a0, a2 4809; GENERIC-NEXT: cmphs16 a0, a1 4810; GENERIC-NEXT: bf16 .LBB100_2 4811; GENERIC-NEXT: # %bb.1: # %label1 4812; GENERIC-NEXT: movi16 a0, 1 4813; GENERIC-NEXT: addi16 sp, sp, 4 4814; GENERIC-NEXT: rts16 4815; GENERIC-NEXT: .LBB100_2: # %label2 4816; GENERIC-NEXT: movi16 a0, 0 4817; GENERIC-NEXT: addi16 sp, sp, 4 4818; GENERIC-NEXT: rts16 4819; CHECK-UGTXT: icmpu32 a0, a1, a0 4820; CHECK-UGTXT: rts16 4821entry: 4822 %icmp = icmp ule i8 %y, %x 4823 br i1 %icmp, label %label1, label %label2 4824label1: 4825 ret i8 1 4826label2: 4827 ret i8 0 4828} 4829 4830define i8 @brRI_i8_ule(i8 %x) { 4831; CHECK-LABEL: brRI_i8_ule: 4832; CHECK: # %bb.0: # %entry 4833; CHECK-NEXT: zextb16 a0, a0 4834; CHECK-NEXT: movi16 a1, 10 4835; CHECK-NEXT: cmphs16 a1, a0 4836; CHECK-NEXT: bf32 .LBB101_2 4837; CHECK-NEXT: # %bb.1: # %label1 4838; CHECK-NEXT: movi16 a0, 1 4839; CHECK-NEXT: rts16 4840; CHECK-NEXT: .LBB101_2: # %label2 4841; CHECK-NEXT: movi16 a0, 0 4842; CHECK-NEXT: rts16 4843; 4844; GENERIC-LABEL: brRI_i8_ule: 4845; GENERIC: # %bb.0: # %entry 4846; GENERIC-NEXT: .cfi_def_cfa_offset 0 4847; GENERIC-NEXT: subi16 sp, sp, 4 4848; GENERIC-NEXT: .cfi_def_cfa_offset 4 4849; GENERIC-NEXT: movi16 a1, 255 4850; GENERIC-NEXT: and16 a1, a0 4851; GENERIC-NEXT: movi16 a0, 10 4852; GENERIC-NEXT: cmphs16 a0, a1 4853; GENERIC-NEXT: bf16 .LBB101_2 4854; GENERIC-NEXT: # %bb.1: # %label1 4855; GENERIC-NEXT: movi16 a0, 1 4856; GENERIC-NEXT: addi16 sp, sp, 4 4857; GENERIC-NEXT: rts16 4858; GENERIC-NEXT: .LBB101_2: # %label2 4859; GENERIC-NEXT: movi16 a0, 0 4860; GENERIC-NEXT: addi16 sp, sp, 4 4861; GENERIC-NEXT: rts16 4862; CHECK-UGTXT: icmpu32 a0, a1, a0 4863; CHECK-UGTXT: rts16 4864entry: 4865 %icmp = icmp ule i8 %x, 10 4866 br i1 %icmp, label %label1, label %label2 4867label1: 4868 ret i8 1 4869label2: 4870 ret i8 0 4871} 4872 4873define i8 @brR0_i8_ule(i8 %x) { 4874; CHECK-LABEL: brR0_i8_ule: 4875; CHECK: # %bb.0: # %entry 4876; CHECK-NEXT: zextb16 a0, a0 4877; CHECK-NEXT: bnez32 a0, .LBB102_2 4878; CHECK-NEXT: # %bb.1: # %label1 4879; CHECK-NEXT: movi16 a0, 1 4880; CHECK-NEXT: rts16 4881; CHECK-NEXT: .LBB102_2: # %label2 4882; CHECK-NEXT: movi16 a0, 0 4883; CHECK-NEXT: rts16 4884; 4885; GENERIC-LABEL: brR0_i8_ule: 4886; GENERIC: # %bb.0: # %entry 4887; GENERIC-NEXT: .cfi_def_cfa_offset 0 4888; GENERIC-NEXT: subi16 sp, sp, 4 4889; GENERIC-NEXT: .cfi_def_cfa_offset 4 4890; GENERIC-NEXT: movi16 a1, 255 4891; GENERIC-NEXT: and16 a1, a0 4892; GENERIC-NEXT: cmpnei16 a1, 0 4893; GENERIC-NEXT: bt16 .LBB102_2 4894; GENERIC-NEXT: # %bb.1: # %label1 4895; GENERIC-NEXT: movi16 a0, 1 4896; GENERIC-NEXT: addi16 sp, sp, 4 4897; GENERIC-NEXT: rts16 4898; GENERIC-NEXT: .LBB102_2: # %label2 4899; GENERIC-NEXT: movi16 a0, 0 4900; GENERIC-NEXT: addi16 sp, sp, 4 4901; GENERIC-NEXT: rts16 4902; CHECK-UGTXT: icmpu32 a0, a1, a0 4903; CHECK-UGTXT: rts16 4904entry: 4905 %icmp = icmp ule i8 %x, 0 4906 br i1 %icmp, label %label1, label %label2 4907label1: 4908 ret i8 1 4909label2: 4910 ret i8 0 4911} 4912 4913;SGT 4914define i8 @brRR_i8_sgt(i8 %x, i8 %y) { 4915; CHECK-LABEL: brRR_i8_sgt: 4916; CHECK: # %bb.0: # %entry 4917; CHECK-NEXT: sextb16 a1, a1 4918; CHECK-NEXT: sextb16 a0, a0 4919; CHECK-NEXT: cmplt16 a0, a1 4920; CHECK-NEXT: bf32 .LBB103_2 4921; CHECK-NEXT: # %bb.1: # %label1 4922; CHECK-NEXT: movi16 a0, 1 4923; CHECK-NEXT: rts16 4924; CHECK-NEXT: .LBB103_2: # %label2 4925; CHECK-NEXT: movi16 a0, 0 4926; CHECK-NEXT: rts16 4927; 4928; GENERIC-LABEL: brRR_i8_sgt: 4929; GENERIC: # %bb.0: # %entry 4930; GENERIC-NEXT: .cfi_def_cfa_offset 0 4931; GENERIC-NEXT: subi16 sp, sp, 4 4932; GENERIC-NEXT: .cfi_def_cfa_offset 4 4933; GENERIC-NEXT: sextb16 a1, a1 4934; GENERIC-NEXT: sextb16 a0, a0 4935; GENERIC-NEXT: cmplt16 a0, a1 4936; GENERIC-NEXT: bf16 .LBB103_2 4937; GENERIC-NEXT: # %bb.1: # %label1 4938; GENERIC-NEXT: movi16 a0, 1 4939; GENERIC-NEXT: addi16 sp, sp, 4 4940; GENERIC-NEXT: rts16 4941; GENERIC-NEXT: .LBB103_2: # %label2 4942; GENERIC-NEXT: movi16 a0, 0 4943; GENERIC-NEXT: addi16 sp, sp, 4 4944; GENERIC-NEXT: rts16 4945; CHECK-UGTXT: icmpu32 a0, a1, a0 4946; CHECK-UGTXT: rts16 4947entry: 4948 %icmp = icmp sgt i8 %y, %x 4949 br i1 %icmp, label %label1, label %label2 4950label1: 4951 ret i8 1 4952label2: 4953 ret i8 0 4954} 4955 4956define i8 @brRI_i8_sgt(i8 %x) { 4957; CHECK-LABEL: brRI_i8_sgt: 4958; CHECK: # %bb.0: # %entry 4959; CHECK-NEXT: sextb16 a0, a0 4960; CHECK-NEXT: cmplti16 a0, 11 4961; CHECK-NEXT: bt32 .LBB104_2 4962; CHECK-NEXT: # %bb.1: # %label1 4963; CHECK-NEXT: movi16 a0, 1 4964; CHECK-NEXT: rts16 4965; CHECK-NEXT: .LBB104_2: # %label2 4966; CHECK-NEXT: movi16 a0, 0 4967; CHECK-NEXT: rts16 4968; 4969; GENERIC-LABEL: brRI_i8_sgt: 4970; GENERIC: # %bb.0: # %entry 4971; GENERIC-NEXT: .cfi_def_cfa_offset 0 4972; GENERIC-NEXT: subi16 sp, sp, 4 4973; GENERIC-NEXT: .cfi_def_cfa_offset 4 4974; GENERIC-NEXT: sextb16 a0, a0 4975; GENERIC-NEXT: cmplti16 a0, 11 4976; GENERIC-NEXT: bt16 .LBB104_2 4977; GENERIC-NEXT: # %bb.1: # %label1 4978; GENERIC-NEXT: movi16 a0, 1 4979; GENERIC-NEXT: addi16 sp, sp, 4 4980; GENERIC-NEXT: rts16 4981; GENERIC-NEXT: .LBB104_2: # %label2 4982; GENERIC-NEXT: movi16 a0, 0 4983; GENERIC-NEXT: addi16 sp, sp, 4 4984; GENERIC-NEXT: rts16 4985; CHECK-UGTXT: icmpu32 a0, a1, a0 4986; CHECK-UGTXT: rts16 4987entry: 4988 %icmp = icmp sgt i8 %x, 10 4989 br i1 %icmp, label %label1, label %label2 4990label1: 4991 ret i8 1 4992label2: 4993 ret i8 0 4994} 4995 4996define i8 @brR0_i8_sgt(i8 %x) { 4997; CHECK-LABEL: brR0_i8_sgt: 4998; CHECK: # %bb.0: # %entry 4999; CHECK-NEXT: sextb16 a0, a0 5000; CHECK-NEXT: cmplti16 a0, 1 5001; CHECK-NEXT: bt32 .LBB105_2 5002; CHECK-NEXT: # %bb.1: # %label1 5003; CHECK-NEXT: movi16 a0, 1 5004; CHECK-NEXT: rts16 5005; CHECK-NEXT: .LBB105_2: # %label2 5006; CHECK-NEXT: movi16 a0, 0 5007; CHECK-NEXT: rts16 5008; 5009; GENERIC-LABEL: brR0_i8_sgt: 5010; GENERIC: # %bb.0: # %entry 5011; GENERIC-NEXT: .cfi_def_cfa_offset 0 5012; GENERIC-NEXT: subi16 sp, sp, 4 5013; GENERIC-NEXT: .cfi_def_cfa_offset 4 5014; GENERIC-NEXT: sextb16 a0, a0 5015; GENERIC-NEXT: cmplti16 a0, 1 5016; GENERIC-NEXT: bt16 .LBB105_2 5017; GENERIC-NEXT: # %bb.1: # %label1 5018; GENERIC-NEXT: movi16 a0, 1 5019; GENERIC-NEXT: addi16 sp, sp, 4 5020; GENERIC-NEXT: rts16 5021; GENERIC-NEXT: .LBB105_2: # %label2 5022; GENERIC-NEXT: movi16 a0, 0 5023; GENERIC-NEXT: addi16 sp, sp, 4 5024; GENERIC-NEXT: rts16 5025; CHECK-UGTXT: icmpu32 a0, a1, a0 5026; CHECK-UGTXT: rts16 5027entry: 5028 %icmp = icmp sgt i8 %x, 0 5029 br i1 %icmp, label %label1, label %label2 5030label1: 5031 ret i8 1 5032label2: 5033 ret i8 0 5034} 5035 5036;SGE 5037define i8 @brRR_i8_sge(i8 %x, i8 %y) { 5038; CHECK-LABEL: brRR_i8_sge: 5039; CHECK: # %bb.0: # %entry 5040; CHECK-NEXT: sextb16 a0, a0 5041; CHECK-NEXT: sextb16 a1, a1 5042; CHECK-NEXT: cmplt16 a1, a0 5043; CHECK-NEXT: bt32 .LBB106_2 5044; CHECK-NEXT: # %bb.1: # %label1 5045; CHECK-NEXT: movi16 a0, 1 5046; CHECK-NEXT: rts16 5047; CHECK-NEXT: .LBB106_2: # %label2 5048; CHECK-NEXT: movi16 a0, 0 5049; CHECK-NEXT: rts16 5050; 5051; GENERIC-LABEL: brRR_i8_sge: 5052; GENERIC: # %bb.0: # %entry 5053; GENERIC-NEXT: .cfi_def_cfa_offset 0 5054; GENERIC-NEXT: subi16 sp, sp, 4 5055; GENERIC-NEXT: .cfi_def_cfa_offset 4 5056; GENERIC-NEXT: sextb16 a0, a0 5057; GENERIC-NEXT: sextb16 a1, a1 5058; GENERIC-NEXT: cmplt16 a1, a0 5059; GENERIC-NEXT: bt16 .LBB106_2 5060; GENERIC-NEXT: # %bb.1: # %label1 5061; GENERIC-NEXT: movi16 a0, 1 5062; GENERIC-NEXT: addi16 sp, sp, 4 5063; GENERIC-NEXT: rts16 5064; GENERIC-NEXT: .LBB106_2: # %label2 5065; GENERIC-NEXT: movi16 a0, 0 5066; GENERIC-NEXT: addi16 sp, sp, 4 5067; GENERIC-NEXT: rts16 5068; CHECK-UGTXT: icmpu32 a0, a1, a0 5069; CHECK-UGTXT: rts16 5070entry: 5071 %icmp = icmp sge i8 %y, %x 5072 br i1 %icmp, label %label1, label %label2 5073label1: 5074 ret i8 1 5075label2: 5076 ret i8 0 5077} 5078 5079define i8 @brRI_i8_sge(i8 %x) { 5080; CHECK-LABEL: brRI_i8_sge: 5081; CHECK: # %bb.0: # %entry 5082; CHECK-NEXT: sextb16 a0, a0 5083; CHECK-NEXT: cmplti16 a0, 10 5084; CHECK-NEXT: bt32 .LBB107_2 5085; CHECK-NEXT: # %bb.1: # %label1 5086; CHECK-NEXT: movi16 a0, 1 5087; CHECK-NEXT: rts16 5088; CHECK-NEXT: .LBB107_2: # %label2 5089; CHECK-NEXT: movi16 a0, 0 5090; CHECK-NEXT: rts16 5091; 5092; GENERIC-LABEL: brRI_i8_sge: 5093; GENERIC: # %bb.0: # %entry 5094; GENERIC-NEXT: .cfi_def_cfa_offset 0 5095; GENERIC-NEXT: subi16 sp, sp, 4 5096; GENERIC-NEXT: .cfi_def_cfa_offset 4 5097; GENERIC-NEXT: sextb16 a0, a0 5098; GENERIC-NEXT: cmplti16 a0, 10 5099; GENERIC-NEXT: bt16 .LBB107_2 5100; GENERIC-NEXT: # %bb.1: # %label1 5101; GENERIC-NEXT: movi16 a0, 1 5102; GENERIC-NEXT: addi16 sp, sp, 4 5103; GENERIC-NEXT: rts16 5104; GENERIC-NEXT: .LBB107_2: # %label2 5105; GENERIC-NEXT: movi16 a0, 0 5106; GENERIC-NEXT: addi16 sp, sp, 4 5107; GENERIC-NEXT: rts16 5108; CHECK-UGTXT: icmpu32 a0, a1, a0 5109; CHECK-UGTXT: rts16 5110entry: 5111 %icmp = icmp sge i8 %x, 10 5112 br i1 %icmp, label %label1, label %label2 5113label1: 5114 ret i8 1 5115label2: 5116 ret i8 0 5117} 5118 5119define i8 @brR0_i8_sge(i8 %x) { 5120; CHECK-LABEL: brR0_i8_sge: 5121; CHECK: # %bb.0: # %entry 5122; CHECK-NEXT: sextb16 a0, a0 5123; CHECK-NEXT: blz32 a0, .LBB108_2 5124; CHECK-NEXT: # %bb.1: # %label1 5125; CHECK-NEXT: movi16 a0, 1 5126; CHECK-NEXT: rts16 5127; CHECK-NEXT: .LBB108_2: # %label2 5128; CHECK-NEXT: movi16 a0, 0 5129; CHECK-NEXT: rts16 5130; 5131; GENERIC-LABEL: brR0_i8_sge: 5132; GENERIC: # %bb.0: # %entry 5133; GENERIC-NEXT: .cfi_def_cfa_offset 0 5134; GENERIC-NEXT: subi16 sp, sp, 4 5135; GENERIC-NEXT: .cfi_def_cfa_offset 4 5136; GENERIC-NEXT: sextb16 a0, a0 5137; GENERIC-NEXT: movi16 a1, 0 5138; GENERIC-NEXT: cmplt16 a0, a1 5139; GENERIC-NEXT: bt16 .LBB108_2 5140; GENERIC-NEXT: # %bb.1: # %label1 5141; GENERIC-NEXT: movi16 a0, 1 5142; GENERIC-NEXT: addi16 sp, sp, 4 5143; GENERIC-NEXT: rts16 5144; GENERIC-NEXT: .LBB108_2: # %label2 5145; GENERIC-NEXT: movi16 a0, 0 5146; GENERIC-NEXT: addi16 sp, sp, 4 5147; GENERIC-NEXT: rts16 5148; CHECK-UGTXT: icmpu32 a0, a1, a0 5149; CHECK-UGTXT: rts16 5150entry: 5151 %icmp = icmp sge i8 %x, 0 5152 br i1 %icmp, label %label1, label %label2 5153label1: 5154 ret i8 1 5155label2: 5156 ret i8 0 5157} 5158 5159;SLT 5160define i8 @brRR_i8_slt(i8 %x, i8 %y) { 5161; CHECK-LABEL: brRR_i8_slt: 5162; CHECK: # %bb.0: # %entry 5163; CHECK-NEXT: sextb16 a0, a0 5164; CHECK-NEXT: sextb16 a1, a1 5165; CHECK-NEXT: cmplt16 a1, a0 5166; CHECK-NEXT: bf32 .LBB109_2 5167; CHECK-NEXT: # %bb.1: # %label1 5168; CHECK-NEXT: movi16 a0, 1 5169; CHECK-NEXT: rts16 5170; CHECK-NEXT: .LBB109_2: # %label2 5171; CHECK-NEXT: movi16 a0, 0 5172; CHECK-NEXT: rts16 5173; 5174; GENERIC-LABEL: brRR_i8_slt: 5175; GENERIC: # %bb.0: # %entry 5176; GENERIC-NEXT: .cfi_def_cfa_offset 0 5177; GENERIC-NEXT: subi16 sp, sp, 4 5178; GENERIC-NEXT: .cfi_def_cfa_offset 4 5179; GENERIC-NEXT: sextb16 a0, a0 5180; GENERIC-NEXT: sextb16 a1, a1 5181; GENERIC-NEXT: cmplt16 a1, a0 5182; GENERIC-NEXT: bf16 .LBB109_2 5183; GENERIC-NEXT: # %bb.1: # %label1 5184; GENERIC-NEXT: movi16 a0, 1 5185; GENERIC-NEXT: addi16 sp, sp, 4 5186; GENERIC-NEXT: rts16 5187; GENERIC-NEXT: .LBB109_2: # %label2 5188; GENERIC-NEXT: movi16 a0, 0 5189; GENERIC-NEXT: addi16 sp, sp, 4 5190; GENERIC-NEXT: rts16 5191; CHECK-UGTXT: icmpu32 a0, a1, a0 5192; CHECK-UGTXT: rts16 5193entry: 5194 %icmp = icmp slt i8 %y, %x 5195 br i1 %icmp, label %label1, label %label2 5196label1: 5197 ret i8 1 5198label2: 5199 ret i8 0 5200} 5201 5202define i8 @brRI_i8_slt(i8 %x) { 5203; CHECK-LABEL: brRI_i8_slt: 5204; CHECK: # %bb.0: # %entry 5205; CHECK-NEXT: sextb16 a0, a0 5206; CHECK-NEXT: movi16 a1, 9 5207; CHECK-NEXT: cmplt16 a1, a0 5208; CHECK-NEXT: bt32 .LBB110_2 5209; CHECK-NEXT: # %bb.1: # %label1 5210; CHECK-NEXT: movi16 a0, 1 5211; CHECK-NEXT: rts16 5212; CHECK-NEXT: .LBB110_2: # %label2 5213; CHECK-NEXT: movi16 a0, 0 5214; CHECK-NEXT: rts16 5215; 5216; GENERIC-LABEL: brRI_i8_slt: 5217; GENERIC: # %bb.0: # %entry 5218; GENERIC-NEXT: .cfi_def_cfa_offset 0 5219; GENERIC-NEXT: subi16 sp, sp, 4 5220; GENERIC-NEXT: .cfi_def_cfa_offset 4 5221; GENERIC-NEXT: sextb16 a0, a0 5222; GENERIC-NEXT: movi16 a1, 9 5223; GENERIC-NEXT: cmplt16 a1, a0 5224; GENERIC-NEXT: bt16 .LBB110_2 5225; GENERIC-NEXT: # %bb.1: # %label1 5226; GENERIC-NEXT: movi16 a0, 1 5227; GENERIC-NEXT: addi16 sp, sp, 4 5228; GENERIC-NEXT: rts16 5229; GENERIC-NEXT: .LBB110_2: # %label2 5230; GENERIC-NEXT: movi16 a0, 0 5231; GENERIC-NEXT: addi16 sp, sp, 4 5232; GENERIC-NEXT: rts16 5233; CHECK-UGTXT: icmpu32 a0, a1, a0 5234; CHECK-UGTXT: rts16 5235entry: 5236 %icmp = icmp slt i8 %x, 10 5237 br i1 %icmp, label %label1, label %label2 5238label1: 5239 ret i8 1 5240label2: 5241 ret i8 0 5242} 5243 5244define i8 @brR0_i8_slt(i8 %x) { 5245; CHECK-LABEL: brR0_i8_slt: 5246; CHECK: # %bb.0: # %entry 5247; CHECK-NEXT: sextb16 a0, a0 5248; CHECK-NEXT: movih32 a1, 65535 5249; CHECK-NEXT: ori32 a1, a1, 65535 5250; CHECK-NEXT: cmplt16 a1, a0 5251; CHECK-NEXT: bf32 .LBB111_2 5252; CHECK-NEXT: # %bb.1: # %label2 5253; CHECK-NEXT: movi16 a0, 0 5254; CHECK-NEXT: rts16 5255; CHECK-NEXT: .LBB111_2: # %label1 5256; CHECK-NEXT: movi16 a0, 1 5257; CHECK-NEXT: rts16 5258; 5259; GENERIC-LABEL: brR0_i8_slt: 5260; GENERIC: # %bb.0: # %entry 5261; GENERIC-NEXT: .cfi_def_cfa_offset 0 5262; GENERIC-NEXT: subi16 sp, sp, 4 5263; GENERIC-NEXT: .cfi_def_cfa_offset 4 5264; GENERIC-NEXT: sextb16 a0, a0 5265; GENERIC-NEXT: movi16 a1, 255 5266; GENERIC-NEXT: lsli16 a2, a1, 24 5267; GENERIC-NEXT: lsli16 a3, a1, 16 5268; GENERIC-NEXT: or16 a3, a2 5269; GENERIC-NEXT: lsli16 a2, a1, 8 5270; GENERIC-NEXT: or16 a2, a3 5271; GENERIC-NEXT: or16 a2, a1 5272; GENERIC-NEXT: cmplt16 a2, a0 5273; GENERIC-NEXT: bf16 .LBB111_2 5274; GENERIC-NEXT: # %bb.1: # %label2 5275; GENERIC-NEXT: movi16 a0, 0 5276; GENERIC-NEXT: addi16 sp, sp, 4 5277; GENERIC-NEXT: rts16 5278; GENERIC-NEXT: .LBB111_2: # %label1 5279; GENERIC-NEXT: movi16 a0, 1 5280; GENERIC-NEXT: addi16 sp, sp, 4 5281; GENERIC-NEXT: rts16 5282; CHECK-UGTXT: icmpu32 a0, a1, a0 5283; CHECK-UGTXT: rts16 5284entry: 5285 %icmp = icmp slt i8 %x, 0 5286 br i1 %icmp, label %label1, label %label2 5287label1: 5288 ret i8 1 5289label2: 5290 ret i8 0 5291} 5292 5293;SLE 5294define i8 @brRR_i8_sle(i8 %x, i8 %y) { 5295; CHECK-LABEL: brRR_i8_sle: 5296; CHECK: # %bb.0: # %entry 5297; CHECK-NEXT: sextb16 a1, a1 5298; CHECK-NEXT: sextb16 a0, a0 5299; CHECK-NEXT: cmplt16 a0, a1 5300; CHECK-NEXT: bt32 .LBB112_2 5301; CHECK-NEXT: # %bb.1: # %label1 5302; CHECK-NEXT: movi16 a0, 1 5303; CHECK-NEXT: rts16 5304; CHECK-NEXT: .LBB112_2: # %label2 5305; CHECK-NEXT: movi16 a0, 0 5306; CHECK-NEXT: rts16 5307; 5308; GENERIC-LABEL: brRR_i8_sle: 5309; GENERIC: # %bb.0: # %entry 5310; GENERIC-NEXT: .cfi_def_cfa_offset 0 5311; GENERIC-NEXT: subi16 sp, sp, 4 5312; GENERIC-NEXT: .cfi_def_cfa_offset 4 5313; GENERIC-NEXT: sextb16 a1, a1 5314; GENERIC-NEXT: sextb16 a0, a0 5315; GENERIC-NEXT: cmplt16 a0, a1 5316; GENERIC-NEXT: bt16 .LBB112_2 5317; GENERIC-NEXT: # %bb.1: # %label1 5318; GENERIC-NEXT: movi16 a0, 1 5319; GENERIC-NEXT: addi16 sp, sp, 4 5320; GENERIC-NEXT: rts16 5321; GENERIC-NEXT: .LBB112_2: # %label2 5322; GENERIC-NEXT: movi16 a0, 0 5323; GENERIC-NEXT: addi16 sp, sp, 4 5324; GENERIC-NEXT: rts16 5325; CHECK-UGTXT: icmpu32 a0, a1, a0 5326; CHECK-UGTXT: rts16 5327entry: 5328 %icmp = icmp sle i8 %y, %x 5329 br i1 %icmp, label %label1, label %label2 5330label1: 5331 ret i8 1 5332label2: 5333 ret i8 0 5334} 5335 5336define i8 @brRI_i8_sle(i8 %x) { 5337; CHECK-LABEL: brRI_i8_sle: 5338; CHECK: # %bb.0: # %entry 5339; CHECK-NEXT: sextb16 a0, a0 5340; CHECK-NEXT: movi16 a1, 10 5341; CHECK-NEXT: cmplt16 a1, a0 5342; CHECK-NEXT: bt32 .LBB113_2 5343; CHECK-NEXT: # %bb.1: # %label1 5344; CHECK-NEXT: movi16 a0, 1 5345; CHECK-NEXT: rts16 5346; CHECK-NEXT: .LBB113_2: # %label2 5347; CHECK-NEXT: movi16 a0, 0 5348; CHECK-NEXT: rts16 5349; 5350; GENERIC-LABEL: brRI_i8_sle: 5351; GENERIC: # %bb.0: # %entry 5352; GENERIC-NEXT: .cfi_def_cfa_offset 0 5353; GENERIC-NEXT: subi16 sp, sp, 4 5354; GENERIC-NEXT: .cfi_def_cfa_offset 4 5355; GENERIC-NEXT: sextb16 a0, a0 5356; GENERIC-NEXT: movi16 a1, 10 5357; GENERIC-NEXT: cmplt16 a1, a0 5358; GENERIC-NEXT: bt16 .LBB113_2 5359; GENERIC-NEXT: # %bb.1: # %label1 5360; GENERIC-NEXT: movi16 a0, 1 5361; GENERIC-NEXT: addi16 sp, sp, 4 5362; GENERIC-NEXT: rts16 5363; GENERIC-NEXT: .LBB113_2: # %label2 5364; GENERIC-NEXT: movi16 a0, 0 5365; GENERIC-NEXT: addi16 sp, sp, 4 5366; GENERIC-NEXT: rts16 5367; CHECK-UGTXT: icmpu32 a0, a1, a0 5368; CHECK-UGTXT: rts16 5369entry: 5370 %icmp = icmp sle i8 %x, 10 5371 br i1 %icmp, label %label1, label %label2 5372label1: 5373 ret i8 1 5374label2: 5375 ret i8 0 5376} 5377 5378define i8 @brR0_i8_sle(i8 %x) { 5379; CHECK-LABEL: brR0_i8_sle: 5380; CHECK: # %bb.0: # %entry 5381; CHECK-NEXT: sextb16 a0, a0 5382; CHECK-NEXT: bhz32 a0, .LBB114_2 5383; CHECK-NEXT: # %bb.1: # %label1 5384; CHECK-NEXT: movi16 a0, 1 5385; CHECK-NEXT: rts16 5386; CHECK-NEXT: .LBB114_2: # %label2 5387; CHECK-NEXT: movi16 a0, 0 5388; CHECK-NEXT: rts16 5389; 5390; GENERIC-LABEL: brR0_i8_sle: 5391; GENERIC: # %bb.0: # %entry 5392; GENERIC-NEXT: .cfi_def_cfa_offset 0 5393; GENERIC-NEXT: subi16 sp, sp, 4 5394; GENERIC-NEXT: .cfi_def_cfa_offset 4 5395; GENERIC-NEXT: sextb16 a0, a0 5396; GENERIC-NEXT: movi16 a1, 0 5397; GENERIC-NEXT: cmplt16 a1, a0 5398; GENERIC-NEXT: bt16 .LBB114_2 5399; GENERIC-NEXT: # %bb.1: # %label1 5400; GENERIC-NEXT: movi16 a0, 1 5401; GENERIC-NEXT: addi16 sp, sp, 4 5402; GENERIC-NEXT: rts16 5403; GENERIC-NEXT: .LBB114_2: # %label2 5404; GENERIC-NEXT: movi16 a0, 0 5405; GENERIC-NEXT: addi16 sp, sp, 4 5406; GENERIC-NEXT: rts16 5407; CHECK-UGTXT: icmpu32 a0, a1, a0 5408; CHECK-UGTXT: rts16 5409entry: 5410 %icmp = icmp sle i8 %x, 0 5411 br i1 %icmp, label %label1, label %label2 5412label1: 5413 ret i8 1 5414label2: 5415 ret i8 0 5416} 5417 5418 5419define i8 @brCBit_i8(i1 %c) { 5420; CHECK-LABEL: brCBit_i8: 5421; CHECK: # %bb.0: # %entry 5422; CHECK-NEXT: andi32 a0, a0, 1 5423; CHECK-NEXT: bez32 a0, .LBB115_2 5424; CHECK-NEXT: # %bb.1: # %label1 5425; CHECK-NEXT: movi16 a0, 1 5426; CHECK-NEXT: rts16 5427; CHECK-NEXT: .LBB115_2: # %label2 5428; CHECK-NEXT: movi16 a0, 0 5429; CHECK-NEXT: rts16 5430; 5431; GENERIC-LABEL: brCBit_i8: 5432; GENERIC: # %bb.0: # %entry 5433; GENERIC-NEXT: .cfi_def_cfa_offset 0 5434; GENERIC-NEXT: subi16 sp, sp, 4 5435; GENERIC-NEXT: .cfi_def_cfa_offset 4 5436; GENERIC-NEXT: movi16 a1, 1 5437; GENERIC-NEXT: and16 a1, a0 5438; GENERIC-NEXT: cmpnei16 a1, 0 5439; GENERIC-NEXT: bf16 .LBB115_2 5440; GENERIC-NEXT: # %bb.1: # %label1 5441; GENERIC-NEXT: movi16 a0, 1 5442; GENERIC-NEXT: addi16 sp, sp, 4 5443; GENERIC-NEXT: rts16 5444; GENERIC-NEXT: .LBB115_2: # %label2 5445; GENERIC-NEXT: movi16 a0, 0 5446; GENERIC-NEXT: addi16 sp, sp, 4 5447; GENERIC-NEXT: rts16 5448entry: 5449 br i1 %c, label %label1, label %label2 5450label1: 5451 ret i8 1 5452label2: 5453 ret i8 0 5454} 5455 5456 5457;EQ 5458define i1 @brRR_i1_eq(i1 %x, i1 %y) { 5459; CHECK-LABEL: brRR_i1_eq: 5460; CHECK: # %bb.0: # %entry 5461; CHECK-NEXT: andi32 a0, a0, 1 5462; CHECK-NEXT: andi32 a1, a1, 1 5463; CHECK-NEXT: cmpne16 a1, a0 5464; CHECK-NEXT: bt32 .LBB116_2 5465; CHECK-NEXT: # %bb.1: # %label1 5466; CHECK-NEXT: movi16 a0, 1 5467; CHECK-NEXT: rts16 5468; CHECK-NEXT: .LBB116_2: # %label2 5469; CHECK-NEXT: movi16 a0, 0 5470; CHECK-NEXT: rts16 5471; 5472; GENERIC-LABEL: brRR_i1_eq: 5473; GENERIC: # %bb.0: # %entry 5474; GENERIC-NEXT: .cfi_def_cfa_offset 0 5475; GENERIC-NEXT: subi16 sp, sp, 4 5476; GENERIC-NEXT: .cfi_def_cfa_offset 4 5477; GENERIC-NEXT: movi16 a2, 1 5478; GENERIC-NEXT: and16 a0, a2 5479; GENERIC-NEXT: and16 a1, a2 5480; GENERIC-NEXT: cmpne16 a1, a0 5481; GENERIC-NEXT: bt16 .LBB116_2 5482; GENERIC-NEXT: # %bb.1: # %label1 5483; GENERIC-NEXT: movi16 a0, 1 5484; GENERIC-NEXT: addi16 sp, sp, 4 5485; GENERIC-NEXT: rts16 5486; GENERIC-NEXT: .LBB116_2: # %label2 5487; GENERIC-NEXT: movi16 a0, 0 5488; GENERIC-NEXT: addi16 sp, sp, 4 5489; GENERIC-NEXT: rts16 5490entry: 5491 %icmp = icmp eq i1 %y, %x 5492 br i1 %icmp, label %label1, label %label2 5493label1: 5494 ret i1 1 5495label2: 5496 ret i1 0 5497} 5498 5499define i1 @brRI_i1_eq(i1 %x) { 5500; CHECK-LABEL: brRI_i1_eq: 5501; CHECK: # %bb.0: # %entry 5502; CHECK-NEXT: andi32 a0, a0, 1 5503; CHECK-NEXT: btsti32 a0, 0 5504; CHECK-NEXT: bf32 .LBB117_2 5505; CHECK-NEXT: # %bb.1: # %label2 5506; CHECK-NEXT: movi16 a0, 0 5507; CHECK-NEXT: rts16 5508; CHECK-NEXT: .LBB117_2: # %label1 5509; CHECK-NEXT: movi16 a0, 1 5510; CHECK-NEXT: rts16 5511; 5512; GENERIC-LABEL: brRI_i1_eq: 5513; GENERIC: # %bb.0: # %entry 5514; GENERIC-NEXT: .cfi_def_cfa_offset 0 5515; GENERIC-NEXT: subi16 sp, sp, 4 5516; GENERIC-NEXT: .cfi_def_cfa_offset 4 5517; GENERIC-NEXT: movi16 a1, 1 5518; GENERIC-NEXT: and16 a1, a0 5519; GENERIC-NEXT: btsti16 a1, 0 5520; GENERIC-NEXT: bf16 .LBB117_2 5521; GENERIC-NEXT: # %bb.1: # %label2 5522; GENERIC-NEXT: movi16 a0, 0 5523; GENERIC-NEXT: addi16 sp, sp, 4 5524; GENERIC-NEXT: rts16 5525; GENERIC-NEXT: .LBB117_2: # %label1 5526; GENERIC-NEXT: movi16 a0, 1 5527; GENERIC-NEXT: addi16 sp, sp, 4 5528; GENERIC-NEXT: rts16 5529entry: 5530 %icmp = icmp eq i1 %x, 10 5531 br i1 %icmp, label %label1, label %label2 5532label1: 5533 ret i1 1 5534label2: 5535 ret i1 0 5536} 5537 5538define i1 @brR0_i1_eq(i1 %x) { 5539; CHECK-LABEL: brR0_i1_eq: 5540; CHECK: # %bb.0: # %entry 5541; CHECK-NEXT: andi32 a0, a0, 1 5542; CHECK-NEXT: btsti32 a0, 0 5543; CHECK-NEXT: bf32 .LBB118_2 5544; CHECK-NEXT: # %bb.1: # %label2 5545; CHECK-NEXT: movi16 a0, 0 5546; CHECK-NEXT: rts16 5547; CHECK-NEXT: .LBB118_2: # %label1 5548; CHECK-NEXT: movi16 a0, 1 5549; CHECK-NEXT: rts16 5550; 5551; GENERIC-LABEL: brR0_i1_eq: 5552; GENERIC: # %bb.0: # %entry 5553; GENERIC-NEXT: .cfi_def_cfa_offset 0 5554; GENERIC-NEXT: subi16 sp, sp, 4 5555; GENERIC-NEXT: .cfi_def_cfa_offset 4 5556; GENERIC-NEXT: movi16 a1, 1 5557; GENERIC-NEXT: and16 a1, a0 5558; GENERIC-NEXT: btsti16 a1, 0 5559; GENERIC-NEXT: bf16 .LBB118_2 5560; GENERIC-NEXT: # %bb.1: # %label2 5561; GENERIC-NEXT: movi16 a0, 0 5562; GENERIC-NEXT: addi16 sp, sp, 4 5563; GENERIC-NEXT: rts16 5564; GENERIC-NEXT: .LBB118_2: # %label1 5565; GENERIC-NEXT: movi16 a0, 1 5566; GENERIC-NEXT: addi16 sp, sp, 4 5567; GENERIC-NEXT: rts16 5568entry: 5569 %icmp = icmp eq i1 %x, 0 5570 br i1 %icmp, label %label1, label %label2 5571label1: 5572 ret i1 1 5573label2: 5574 ret i1 0 5575} 5576 5577;NE 5578define i1 @brRR_i1_ne(i1 %x, i1 %y) { 5579; CHECK-LABEL: brRR_i1_ne: 5580; CHECK: # %bb.0: # %entry 5581; CHECK-NEXT: andi32 a0, a0, 1 5582; CHECK-NEXT: andi32 a1, a1, 1 5583; CHECK-NEXT: cmpne16 a1, a0 5584; CHECK-NEXT: bf32 .LBB119_2 5585; CHECK-NEXT: # %bb.1: # %label1 5586; CHECK-NEXT: movi16 a0, 1 5587; CHECK-NEXT: rts16 5588; CHECK-NEXT: .LBB119_2: # %label2 5589; CHECK-NEXT: movi16 a0, 0 5590; CHECK-NEXT: rts16 5591; 5592; GENERIC-LABEL: brRR_i1_ne: 5593; GENERIC: # %bb.0: # %entry 5594; GENERIC-NEXT: .cfi_def_cfa_offset 0 5595; GENERIC-NEXT: subi16 sp, sp, 4 5596; GENERIC-NEXT: .cfi_def_cfa_offset 4 5597; GENERIC-NEXT: movi16 a2, 1 5598; GENERIC-NEXT: and16 a0, a2 5599; GENERIC-NEXT: and16 a1, a2 5600; GENERIC-NEXT: cmpne16 a1, a0 5601; GENERIC-NEXT: bf16 .LBB119_2 5602; GENERIC-NEXT: # %bb.1: # %label1 5603; GENERIC-NEXT: movi16 a0, 1 5604; GENERIC-NEXT: addi16 sp, sp, 4 5605; GENERIC-NEXT: rts16 5606; GENERIC-NEXT: .LBB119_2: # %label2 5607; GENERIC-NEXT: movi16 a0, 0 5608; GENERIC-NEXT: addi16 sp, sp, 4 5609; GENERIC-NEXT: rts16 5610entry: 5611 %icmp = icmp ne i1 %y, %x 5612 br i1 %icmp, label %label1, label %label2 5613label1: 5614 ret i1 1 5615label2: 5616 ret i1 0 5617} 5618 5619define i1 @brRI_i1_ne(i1 %x) { 5620; CHECK-LABEL: brRI_i1_ne: 5621; CHECK: # %bb.0: # %entry 5622; CHECK-NEXT: andi32 a0, a0, 1 5623; CHECK-NEXT: bez32 a0, .LBB120_2 5624; CHECK-NEXT: # %bb.1: # %label1 5625; CHECK-NEXT: movi16 a0, 1 5626; CHECK-NEXT: rts16 5627; CHECK-NEXT: .LBB120_2: # %label2 5628; CHECK-NEXT: movi16 a0, 0 5629; CHECK-NEXT: rts16 5630; 5631; GENERIC-LABEL: brRI_i1_ne: 5632; GENERIC: # %bb.0: # %entry 5633; GENERIC-NEXT: .cfi_def_cfa_offset 0 5634; GENERIC-NEXT: subi16 sp, sp, 4 5635; GENERIC-NEXT: .cfi_def_cfa_offset 4 5636; GENERIC-NEXT: movi16 a1, 1 5637; GENERIC-NEXT: and16 a1, a0 5638; GENERIC-NEXT: cmpnei16 a1, 0 5639; GENERIC-NEXT: bf16 .LBB120_2 5640; GENERIC-NEXT: # %bb.1: # %label1 5641; GENERIC-NEXT: movi16 a0, 1 5642; GENERIC-NEXT: addi16 sp, sp, 4 5643; GENERIC-NEXT: rts16 5644; GENERIC-NEXT: .LBB120_2: # %label2 5645; GENERIC-NEXT: movi16 a0, 0 5646; GENERIC-NEXT: addi16 sp, sp, 4 5647; GENERIC-NEXT: rts16 5648entry: 5649 %icmp = icmp ne i1 %x, 10 5650 br i1 %icmp, label %label1, label %label2 5651label1: 5652 ret i1 1 5653label2: 5654 ret i1 0 5655} 5656 5657define i1 @brR0_i1_ne(i1 %x) { 5658; CHECK-LABEL: brR0_i1_ne: 5659; CHECK: # %bb.0: # %entry 5660; CHECK-NEXT: andi32 a0, a0, 1 5661; CHECK-NEXT: bez32 a0, .LBB121_2 5662; CHECK-NEXT: # %bb.1: # %label1 5663; CHECK-NEXT: movi16 a0, 1 5664; CHECK-NEXT: rts16 5665; CHECK-NEXT: .LBB121_2: # %label2 5666; CHECK-NEXT: movi16 a0, 0 5667; CHECK-NEXT: rts16 5668; 5669; GENERIC-LABEL: brR0_i1_ne: 5670; GENERIC: # %bb.0: # %entry 5671; GENERIC-NEXT: .cfi_def_cfa_offset 0 5672; GENERIC-NEXT: subi16 sp, sp, 4 5673; GENERIC-NEXT: .cfi_def_cfa_offset 4 5674; GENERIC-NEXT: movi16 a1, 1 5675; GENERIC-NEXT: and16 a1, a0 5676; GENERIC-NEXT: cmpnei16 a1, 0 5677; GENERIC-NEXT: bf16 .LBB121_2 5678; GENERIC-NEXT: # %bb.1: # %label1 5679; GENERIC-NEXT: movi16 a0, 1 5680; GENERIC-NEXT: addi16 sp, sp, 4 5681; GENERIC-NEXT: rts16 5682; GENERIC-NEXT: .LBB121_2: # %label2 5683; GENERIC-NEXT: movi16 a0, 0 5684; GENERIC-NEXT: addi16 sp, sp, 4 5685; GENERIC-NEXT: rts16 5686entry: 5687 %icmp = icmp ne i1 %x, 0 5688 br i1 %icmp, label %label1, label %label2 5689label1: 5690 ret i1 1 5691label2: 5692 ret i1 0 5693} 5694 5695;UGT 5696define i1 @brRR_i1_ugt(i1 %x, i1 %y) { 5697; CHECK-LABEL: brRR_i1_ugt: 5698; CHECK: # %bb.0: # %entry 5699; CHECK-NEXT: andi32 a1, a1, 1 5700; CHECK-NEXT: andi32 a0, a0, 1 5701; CHECK-NEXT: cmphs16 a0, a1 5702; CHECK-NEXT: bt32 .LBB122_2 5703; CHECK-NEXT: # %bb.1: # %label1 5704; CHECK-NEXT: movi16 a0, 1 5705; CHECK-NEXT: rts16 5706; CHECK-NEXT: .LBB122_2: # %label2 5707; CHECK-NEXT: movi16 a0, 0 5708; CHECK-NEXT: rts16 5709; 5710; GENERIC-LABEL: brRR_i1_ugt: 5711; GENERIC: # %bb.0: # %entry 5712; GENERIC-NEXT: .cfi_def_cfa_offset 0 5713; GENERIC-NEXT: subi16 sp, sp, 4 5714; GENERIC-NEXT: .cfi_def_cfa_offset 4 5715; GENERIC-NEXT: movi16 a2, 1 5716; GENERIC-NEXT: and16 a1, a2 5717; GENERIC-NEXT: and16 a0, a2 5718; GENERIC-NEXT: cmphs16 a0, a1 5719; GENERIC-NEXT: bt16 .LBB122_2 5720; GENERIC-NEXT: # %bb.1: # %label1 5721; GENERIC-NEXT: movi16 a0, 1 5722; GENERIC-NEXT: addi16 sp, sp, 4 5723; GENERIC-NEXT: rts16 5724; GENERIC-NEXT: .LBB122_2: # %label2 5725; GENERIC-NEXT: movi16 a0, 0 5726; GENERIC-NEXT: addi16 sp, sp, 4 5727; GENERIC-NEXT: rts16 5728; CHECK-UGTXT: icmpu32 a0, a1, a0 5729; CHECK-UGTXT: rts16 5730entry: 5731 %icmp = icmp ugt i1 %y, %x 5732 br i1 %icmp, label %label1, label %label2 5733label1: 5734 ret i1 1 5735label2: 5736 ret i1 0 5737} 5738 5739define i1 @brRI_i1_ugt(i1 %x) { 5740; CHECK-LABEL: brRI_i1_ugt: 5741; CHECK: # %bb.0: # %entry 5742; CHECK-NEXT: andi32 a0, a0, 1 5743; CHECK-NEXT: bez32 a0, .LBB123_2 5744; CHECK-NEXT: # %bb.1: # %label1 5745; CHECK-NEXT: movi16 a0, 1 5746; CHECK-NEXT: rts16 5747; CHECK-NEXT: .LBB123_2: # %label2 5748; CHECK-NEXT: movi16 a0, 0 5749; CHECK-NEXT: rts16 5750; 5751; GENERIC-LABEL: brRI_i1_ugt: 5752; GENERIC: # %bb.0: # %entry 5753; GENERIC-NEXT: .cfi_def_cfa_offset 0 5754; GENERIC-NEXT: subi16 sp, sp, 4 5755; GENERIC-NEXT: .cfi_def_cfa_offset 4 5756; GENERIC-NEXT: movi16 a1, 1 5757; GENERIC-NEXT: and16 a1, a0 5758; GENERIC-NEXT: cmpnei16 a1, 0 5759; GENERIC-NEXT: bf16 .LBB123_2 5760; GENERIC-NEXT: # %bb.1: # %label1 5761; GENERIC-NEXT: movi16 a0, 1 5762; GENERIC-NEXT: addi16 sp, sp, 4 5763; GENERIC-NEXT: rts16 5764; GENERIC-NEXT: .LBB123_2: # %label2 5765; GENERIC-NEXT: movi16 a0, 0 5766; GENERIC-NEXT: addi16 sp, sp, 4 5767; GENERIC-NEXT: rts16 5768; CHECK-UGTXT: icmpu32 a0, a1, a0 5769; CHECK-UGTXT: rts16 5770entry: 5771 %icmp = icmp ugt i1 %x, 10 5772 br i1 %icmp, label %label1, label %label2 5773label1: 5774 ret i1 1 5775label2: 5776 ret i1 0 5777} 5778 5779define i1 @brR0_i1_ugt(i1 %x) { 5780; CHECK-LABEL: brR0_i1_ugt: 5781; CHECK: # %bb.0: # %entry 5782; CHECK-NEXT: andi32 a0, a0, 1 5783; CHECK-NEXT: bez32 a0, .LBB124_2 5784; CHECK-NEXT: # %bb.1: # %label1 5785; CHECK-NEXT: movi16 a0, 1 5786; CHECK-NEXT: rts16 5787; CHECK-NEXT: .LBB124_2: # %label2 5788; CHECK-NEXT: movi16 a0, 0 5789; CHECK-NEXT: rts16 5790; 5791; GENERIC-LABEL: brR0_i1_ugt: 5792; GENERIC: # %bb.0: # %entry 5793; GENERIC-NEXT: .cfi_def_cfa_offset 0 5794; GENERIC-NEXT: subi16 sp, sp, 4 5795; GENERIC-NEXT: .cfi_def_cfa_offset 4 5796; GENERIC-NEXT: movi16 a1, 1 5797; GENERIC-NEXT: and16 a1, a0 5798; GENERIC-NEXT: cmpnei16 a1, 0 5799; GENERIC-NEXT: bf16 .LBB124_2 5800; GENERIC-NEXT: # %bb.1: # %label1 5801; GENERIC-NEXT: movi16 a0, 1 5802; GENERIC-NEXT: addi16 sp, sp, 4 5803; GENERIC-NEXT: rts16 5804; GENERIC-NEXT: .LBB124_2: # %label2 5805; GENERIC-NEXT: movi16 a0, 0 5806; GENERIC-NEXT: addi16 sp, sp, 4 5807; GENERIC-NEXT: rts16 5808; CHECK-UGTXT: icmpu32 a0, a1, a0 5809; CHECK-UGTXT: rts16 5810entry: 5811 %icmp = icmp ugt i1 %x, 0 5812 br i1 %icmp, label %label1, label %label2 5813label1: 5814 ret i1 1 5815label2: 5816 ret i1 0 5817} 5818 5819;UGE 5820define i1 @brRR_i1_uge(i1 %x, i1 %y) { 5821; CHECK-LABEL: brRR_i1_uge: 5822; CHECK: # %bb.0: # %entry 5823; CHECK-NEXT: andi32 a0, a0, 1 5824; CHECK-NEXT: andi32 a1, a1, 1 5825; CHECK-NEXT: cmphs16 a1, a0 5826; CHECK-NEXT: bf32 .LBB125_2 5827; CHECK-NEXT: # %bb.1: # %label1 5828; CHECK-NEXT: movi16 a0, 1 5829; CHECK-NEXT: rts16 5830; CHECK-NEXT: .LBB125_2: # %label2 5831; CHECK-NEXT: movi16 a0, 0 5832; CHECK-NEXT: rts16 5833; 5834; GENERIC-LABEL: brRR_i1_uge: 5835; GENERIC: # %bb.0: # %entry 5836; GENERIC-NEXT: .cfi_def_cfa_offset 0 5837; GENERIC-NEXT: subi16 sp, sp, 4 5838; GENERIC-NEXT: .cfi_def_cfa_offset 4 5839; GENERIC-NEXT: movi16 a2, 1 5840; GENERIC-NEXT: and16 a0, a2 5841; GENERIC-NEXT: and16 a1, a2 5842; GENERIC-NEXT: cmphs16 a1, a0 5843; GENERIC-NEXT: bf16 .LBB125_2 5844; GENERIC-NEXT: # %bb.1: # %label1 5845; GENERIC-NEXT: movi16 a0, 1 5846; GENERIC-NEXT: addi16 sp, sp, 4 5847; GENERIC-NEXT: rts16 5848; GENERIC-NEXT: .LBB125_2: # %label2 5849; GENERIC-NEXT: movi16 a0, 0 5850; GENERIC-NEXT: addi16 sp, sp, 4 5851; GENERIC-NEXT: rts16 5852; CHECK-UGTXT: icmpu32 a0, a1, a0 5853; CHECK-UGTXT: rts16 5854entry: 5855 %icmp = icmp uge i1 %y, %x 5856 br i1 %icmp, label %label1, label %label2 5857label1: 5858 ret i1 1 5859label2: 5860 ret i1 0 5861} 5862 5863define i1 @brRI_i1_uge(i1 %x) { 5864; CHECK-LABEL: brRI_i1_uge: 5865; CHECK: # %bb.0: # %entry 5866; CHECK-NEXT: movi16 a0, 0 5867; CHECK-NEXT: btsti32 a0, 0 5868; CHECK-NEXT: bt32 .LBB126_2 5869; CHECK-NEXT: # %bb.1: # %label1 5870; CHECK-NEXT: movi16 a0, 1 5871; CHECK-NEXT: rts16 5872; CHECK-NEXT: .LBB126_2: # %label2 5873; CHECK-NEXT: movi16 a0, 0 5874; CHECK-NEXT: rts16 5875; 5876; GENERIC-LABEL: brRI_i1_uge: 5877; GENERIC: # %bb.0: # %entry 5878; GENERIC-NEXT: .cfi_def_cfa_offset 0 5879; GENERIC-NEXT: subi16 sp, sp, 4 5880; GENERIC-NEXT: .cfi_def_cfa_offset 4 5881; GENERIC-NEXT: movi16 a0, 0 5882; GENERIC-NEXT: btsti16 a0, 0 5883; GENERIC-NEXT: bt16 .LBB126_2 5884; GENERIC-NEXT: # %bb.1: # %label1 5885; GENERIC-NEXT: movi16 a0, 1 5886; GENERIC-NEXT: addi16 sp, sp, 4 5887; GENERIC-NEXT: rts16 5888; GENERIC-NEXT: .LBB126_2: # %label2 5889; GENERIC-NEXT: movi16 a0, 0 5890; GENERIC-NEXT: addi16 sp, sp, 4 5891; GENERIC-NEXT: rts16 5892; CHECK-UGTXT: icmpu32 a0, a1, a0 5893; CHECK-UGTXT: rts16 5894entry: 5895 %icmp = icmp uge i1 %x, 10 5896 br i1 %icmp, label %label1, label %label2 5897label1: 5898 ret i1 1 5899label2: 5900 ret i1 0 5901} 5902 5903;ULT 5904define i1 @brRR_i1_ult(i1 %x, i1 %y) { 5905; CHECK-LABEL: brRR_i1_ult: 5906; CHECK: # %bb.0: # %entry 5907; CHECK-NEXT: andi32 a0, a0, 1 5908; CHECK-NEXT: andi32 a1, a1, 1 5909; CHECK-NEXT: cmphs16 a1, a0 5910; CHECK-NEXT: bt32 .LBB127_2 5911; CHECK-NEXT: # %bb.1: # %label1 5912; CHECK-NEXT: movi16 a0, 1 5913; CHECK-NEXT: rts16 5914; CHECK-NEXT: .LBB127_2: # %label2 5915; CHECK-NEXT: movi16 a0, 0 5916; CHECK-NEXT: rts16 5917; 5918; GENERIC-LABEL: brRR_i1_ult: 5919; GENERIC: # %bb.0: # %entry 5920; GENERIC-NEXT: .cfi_def_cfa_offset 0 5921; GENERIC-NEXT: subi16 sp, sp, 4 5922; GENERIC-NEXT: .cfi_def_cfa_offset 4 5923; GENERIC-NEXT: movi16 a2, 1 5924; GENERIC-NEXT: and16 a0, a2 5925; GENERIC-NEXT: and16 a1, a2 5926; GENERIC-NEXT: cmphs16 a1, a0 5927; GENERIC-NEXT: bt16 .LBB127_2 5928; GENERIC-NEXT: # %bb.1: # %label1 5929; GENERIC-NEXT: movi16 a0, 1 5930; GENERIC-NEXT: addi16 sp, sp, 4 5931; GENERIC-NEXT: rts16 5932; GENERIC-NEXT: .LBB127_2: # %label2 5933; GENERIC-NEXT: movi16 a0, 0 5934; GENERIC-NEXT: addi16 sp, sp, 4 5935; GENERIC-NEXT: rts16 5936; CHECK-UGTXT: icmpu32 a0, a1, a0 5937; CHECK-UGTXT: rts16 5938entry: 5939 %icmp = icmp ult i1 %y, %x 5940 br i1 %icmp, label %label1, label %label2 5941label1: 5942 ret i1 1 5943label2: 5944 ret i1 0 5945} 5946 5947define i1 @brRI_i1_ult(i1 %x) { 5948; CHECK-LABEL: brRI_i1_ult: 5949; CHECK: # %bb.0: # %entry 5950; CHECK-NEXT: movi16 a0, 1 5951; CHECK-NEXT: btsti32 a0, 0 5952; CHECK-NEXT: bt32 .LBB128_2 5953; CHECK-NEXT: # %bb.1: # %label1 5954; CHECK-NEXT: movi16 a0, 1 5955; CHECK-NEXT: rts16 5956; CHECK-NEXT: .LBB128_2: # %label2 5957; CHECK-NEXT: movi16 a0, 0 5958; CHECK-NEXT: rts16 5959; 5960; GENERIC-LABEL: brRI_i1_ult: 5961; GENERIC: # %bb.0: # %entry 5962; GENERIC-NEXT: .cfi_def_cfa_offset 0 5963; GENERIC-NEXT: subi16 sp, sp, 4 5964; GENERIC-NEXT: .cfi_def_cfa_offset 4 5965; GENERIC-NEXT: movi16 a0, 1 5966; GENERIC-NEXT: btsti16 a0, 0 5967; GENERIC-NEXT: bt16 .LBB128_2 5968; GENERIC-NEXT: # %bb.1: # %label1 5969; GENERIC-NEXT: movi16 a0, 1 5970; GENERIC-NEXT: addi16 sp, sp, 4 5971; GENERIC-NEXT: rts16 5972; GENERIC-NEXT: .LBB128_2: # %label2 5973; GENERIC-NEXT: movi16 a0, 0 5974; GENERIC-NEXT: addi16 sp, sp, 4 5975; GENERIC-NEXT: rts16 5976; CHECK-UGTXT: icmpu32 a0, a1, a0 5977; CHECK-UGTXT: rts16 5978entry: 5979 %icmp = icmp ult i1 %x, 10 5980 br i1 %icmp, label %label1, label %label2 5981label1: 5982 ret i1 1 5983label2: 5984 ret i1 0 5985} 5986 5987 5988;ULE 5989define i1 @brRR_i1_ule(i1 %x, i1 %y) { 5990; CHECK-LABEL: brRR_i1_ule: 5991; CHECK: # %bb.0: # %entry 5992; CHECK-NEXT: andi32 a1, a1, 1 5993; CHECK-NEXT: andi32 a0, a0, 1 5994; CHECK-NEXT: cmphs16 a0, a1 5995; CHECK-NEXT: bf32 .LBB129_2 5996; CHECK-NEXT: # %bb.1: # %label1 5997; CHECK-NEXT: movi16 a0, 1 5998; CHECK-NEXT: rts16 5999; CHECK-NEXT: .LBB129_2: # %label2 6000; CHECK-NEXT: movi16 a0, 0 6001; CHECK-NEXT: rts16 6002; 6003; GENERIC-LABEL: brRR_i1_ule: 6004; GENERIC: # %bb.0: # %entry 6005; GENERIC-NEXT: .cfi_def_cfa_offset 0 6006; GENERIC-NEXT: subi16 sp, sp, 4 6007; GENERIC-NEXT: .cfi_def_cfa_offset 4 6008; GENERIC-NEXT: movi16 a2, 1 6009; GENERIC-NEXT: and16 a1, a2 6010; GENERIC-NEXT: and16 a0, a2 6011; GENERIC-NEXT: cmphs16 a0, a1 6012; GENERIC-NEXT: bf16 .LBB129_2 6013; GENERIC-NEXT: # %bb.1: # %label1 6014; GENERIC-NEXT: movi16 a0, 1 6015; GENERIC-NEXT: addi16 sp, sp, 4 6016; GENERIC-NEXT: rts16 6017; GENERIC-NEXT: .LBB129_2: # %label2 6018; GENERIC-NEXT: movi16 a0, 0 6019; GENERIC-NEXT: addi16 sp, sp, 4 6020; GENERIC-NEXT: rts16 6021; CHECK-UGTXT: icmpu32 a0, a1, a0 6022; CHECK-UGTXT: rts16 6023entry: 6024 %icmp = icmp ule i1 %y, %x 6025 br i1 %icmp, label %label1, label %label2 6026label1: 6027 ret i1 1 6028label2: 6029 ret i1 0 6030} 6031 6032define i1 @brRI_i1_ule(i1 %x) { 6033; CHECK-LABEL: brRI_i1_ule: 6034; CHECK: # %bb.0: # %entry 6035; CHECK-NEXT: andi32 a0, a0, 1 6036; CHECK-NEXT: btsti32 a0, 0 6037; CHECK-NEXT: bt32 .LBB130_2 6038; CHECK-NEXT: # %bb.1: # %label1 6039; CHECK-NEXT: movi16 a0, 1 6040; CHECK-NEXT: rts16 6041; CHECK-NEXT: .LBB130_2: # %label2 6042; CHECK-NEXT: movi16 a0, 0 6043; CHECK-NEXT: rts16 6044; 6045; GENERIC-LABEL: brRI_i1_ule: 6046; GENERIC: # %bb.0: # %entry 6047; GENERIC-NEXT: .cfi_def_cfa_offset 0 6048; GENERIC-NEXT: subi16 sp, sp, 4 6049; GENERIC-NEXT: .cfi_def_cfa_offset 4 6050; GENERIC-NEXT: movi16 a1, 1 6051; GENERIC-NEXT: and16 a1, a0 6052; GENERIC-NEXT: btsti16 a1, 0 6053; GENERIC-NEXT: bt16 .LBB130_2 6054; GENERIC-NEXT: # %bb.1: # %label1 6055; GENERIC-NEXT: movi16 a0, 1 6056; GENERIC-NEXT: addi16 sp, sp, 4 6057; GENERIC-NEXT: rts16 6058; GENERIC-NEXT: .LBB130_2: # %label2 6059; GENERIC-NEXT: movi16 a0, 0 6060; GENERIC-NEXT: addi16 sp, sp, 4 6061; GENERIC-NEXT: rts16 6062; CHECK-UGTXT: icmpu32 a0, a1, a0 6063; CHECK-UGTXT: rts16 6064entry: 6065 %icmp = icmp ule i1 %x, 10 6066 br i1 %icmp, label %label1, label %label2 6067label1: 6068 ret i1 1 6069label2: 6070 ret i1 0 6071} 6072 6073define i1 @brR0_i1_ule(i1 %x) { 6074; CHECK-LABEL: brR0_i1_ule: 6075; CHECK: # %bb.0: # %entry 6076; CHECK-NEXT: andi32 a0, a0, 1 6077; CHECK-NEXT: btsti32 a0, 0 6078; CHECK-NEXT: bt32 .LBB131_2 6079; CHECK-NEXT: # %bb.1: # %label1 6080; CHECK-NEXT: movi16 a0, 1 6081; CHECK-NEXT: rts16 6082; CHECK-NEXT: .LBB131_2: # %label2 6083; CHECK-NEXT: movi16 a0, 0 6084; CHECK-NEXT: rts16 6085; 6086; GENERIC-LABEL: brR0_i1_ule: 6087; GENERIC: # %bb.0: # %entry 6088; GENERIC-NEXT: .cfi_def_cfa_offset 0 6089; GENERIC-NEXT: subi16 sp, sp, 4 6090; GENERIC-NEXT: .cfi_def_cfa_offset 4 6091; GENERIC-NEXT: movi16 a1, 1 6092; GENERIC-NEXT: and16 a1, a0 6093; GENERIC-NEXT: btsti16 a1, 0 6094; GENERIC-NEXT: bt16 .LBB131_2 6095; GENERIC-NEXT: # %bb.1: # %label1 6096; GENERIC-NEXT: movi16 a0, 1 6097; GENERIC-NEXT: addi16 sp, sp, 4 6098; GENERIC-NEXT: rts16 6099; GENERIC-NEXT: .LBB131_2: # %label2 6100; GENERIC-NEXT: movi16 a0, 0 6101; GENERIC-NEXT: addi16 sp, sp, 4 6102; GENERIC-NEXT: rts16 6103; CHECK-UGTXT: icmpu32 a0, a1, a0 6104; CHECK-UGTXT: rts16 6105entry: 6106 %icmp = icmp ule i1 %x, 0 6107 br i1 %icmp, label %label1, label %label2 6108label1: 6109 ret i1 1 6110label2: 6111 ret i1 0 6112} 6113 6114;SGT 6115define i1 @brRR_i1_sgt(i1 %x, i1 %y) { 6116; CHECK-LABEL: brRR_i1_sgt: 6117; CHECK: # %bb.0: # %entry 6118; CHECK-NEXT: sext32 a1, a1, 0, 0 6119; CHECK-NEXT: sext32 a0, a0, 0, 0 6120; CHECK-NEXT: cmplt16 a0, a1 6121; CHECK-NEXT: bf32 .LBB132_2 6122; CHECK-NEXT: # %bb.1: # %label1 6123; CHECK-NEXT: movi16 a0, 1 6124; CHECK-NEXT: rts16 6125; CHECK-NEXT: .LBB132_2: # %label2 6126; CHECK-NEXT: movi16 a0, 0 6127; CHECK-NEXT: rts16 6128; 6129; GENERIC-LABEL: brRR_i1_sgt: 6130; GENERIC: # %bb.0: # %entry 6131; GENERIC-NEXT: .cfi_def_cfa_offset 0 6132; GENERIC-NEXT: subi16 sp, sp, 4 6133; GENERIC-NEXT: .cfi_def_cfa_offset 4 6134; GENERIC-NEXT: lsli16 a1, a1, 7 6135; GENERIC-NEXT: asri16 a1, a1, 7 6136; GENERIC-NEXT: lsli16 a0, a0, 7 6137; GENERIC-NEXT: asri16 a0, a0, 7 6138; GENERIC-NEXT: cmplt16 a0, a1 6139; GENERIC-NEXT: bf16 .LBB132_2 6140; GENERIC-NEXT: # %bb.1: # %label1 6141; GENERIC-NEXT: movi16 a0, 1 6142; GENERIC-NEXT: addi16 sp, sp, 4 6143; GENERIC-NEXT: rts16 6144; GENERIC-NEXT: .LBB132_2: # %label2 6145; GENERIC-NEXT: movi16 a0, 0 6146; GENERIC-NEXT: addi16 sp, sp, 4 6147; GENERIC-NEXT: rts16 6148; CHECK-UGTXT: icmpu32 a0, a1, a0 6149; CHECK-UGTXT: rts16 6150entry: 6151 %icmp = icmp sgt i1 %y, %x 6152 br i1 %icmp, label %label1, label %label2 6153label1: 6154 ret i1 1 6155label2: 6156 ret i1 0 6157} 6158 6159define i1 @brRI_i1_sgt(i1 %x) { 6160; CHECK-LABEL: brRI_i1_sgt: 6161; CHECK: # %bb.0: # %entry 6162; CHECK-NEXT: movi16 a0, 1 6163; CHECK-NEXT: btsti32 a0, 0 6164; CHECK-NEXT: bt32 .LBB133_2 6165; CHECK-NEXT: # %bb.1: # %label1 6166; CHECK-NEXT: movi16 a0, 1 6167; CHECK-NEXT: rts16 6168; CHECK-NEXT: .LBB133_2: # %label2 6169; CHECK-NEXT: movi16 a0, 0 6170; CHECK-NEXT: rts16 6171; 6172; GENERIC-LABEL: brRI_i1_sgt: 6173; GENERIC: # %bb.0: # %entry 6174; GENERIC-NEXT: .cfi_def_cfa_offset 0 6175; GENERIC-NEXT: subi16 sp, sp, 4 6176; GENERIC-NEXT: .cfi_def_cfa_offset 4 6177; GENERIC-NEXT: movi16 a0, 1 6178; GENERIC-NEXT: btsti16 a0, 0 6179; GENERIC-NEXT: bt16 .LBB133_2 6180; GENERIC-NEXT: # %bb.1: # %label1 6181; GENERIC-NEXT: movi16 a0, 1 6182; GENERIC-NEXT: addi16 sp, sp, 4 6183; GENERIC-NEXT: rts16 6184; GENERIC-NEXT: .LBB133_2: # %label2 6185; GENERIC-NEXT: movi16 a0, 0 6186; GENERIC-NEXT: addi16 sp, sp, 4 6187; GENERIC-NEXT: rts16 6188; CHECK-UGTXT: icmpu32 a0, a1, a0 6189; CHECK-UGTXT: rts16 6190entry: 6191 %icmp = icmp sgt i1 %x, 10 6192 br i1 %icmp, label %label1, label %label2 6193label1: 6194 ret i1 1 6195label2: 6196 ret i1 0 6197} 6198 6199define i1 @brR0_i1_sgt(i1 %x) { 6200; CHECK-LABEL: brR0_i1_sgt: 6201; CHECK: # %bb.0: # %entry 6202; CHECK-NEXT: movi16 a0, 1 6203; CHECK-NEXT: btsti32 a0, 0 6204; CHECK-NEXT: bt32 .LBB134_2 6205; CHECK-NEXT: # %bb.1: # %label1 6206; CHECK-NEXT: movi16 a0, 1 6207; CHECK-NEXT: rts16 6208; CHECK-NEXT: .LBB134_2: # %label2 6209; CHECK-NEXT: movi16 a0, 0 6210; CHECK-NEXT: rts16 6211; 6212; GENERIC-LABEL: brR0_i1_sgt: 6213; GENERIC: # %bb.0: # %entry 6214; GENERIC-NEXT: .cfi_def_cfa_offset 0 6215; GENERIC-NEXT: subi16 sp, sp, 4 6216; GENERIC-NEXT: .cfi_def_cfa_offset 4 6217; GENERIC-NEXT: movi16 a0, 1 6218; GENERIC-NEXT: btsti16 a0, 0 6219; GENERIC-NEXT: bt16 .LBB134_2 6220; GENERIC-NEXT: # %bb.1: # %label1 6221; GENERIC-NEXT: movi16 a0, 1 6222; GENERIC-NEXT: addi16 sp, sp, 4 6223; GENERIC-NEXT: rts16 6224; GENERIC-NEXT: .LBB134_2: # %label2 6225; GENERIC-NEXT: movi16 a0, 0 6226; GENERIC-NEXT: addi16 sp, sp, 4 6227; GENERIC-NEXT: rts16 6228; CHECK-UGTXT: icmpu32 a0, a1, a0 6229; CHECK-UGTXT: rts16 6230entry: 6231 %icmp = icmp sgt i1 %x, 0 6232 br i1 %icmp, label %label1, label %label2 6233label1: 6234 ret i1 1 6235label2: 6236 ret i1 0 6237} 6238 6239;SGE 6240define i1 @brRR_i1_sge(i1 %x, i1 %y) { 6241; CHECK-LABEL: brRR_i1_sge: 6242; CHECK: # %bb.0: # %entry 6243; CHECK-NEXT: sext32 a0, a0, 0, 0 6244; CHECK-NEXT: sext32 a1, a1, 0, 0 6245; CHECK-NEXT: cmplt16 a1, a0 6246; CHECK-NEXT: bt32 .LBB135_2 6247; CHECK-NEXT: # %bb.1: # %label1 6248; CHECK-NEXT: movi16 a0, 1 6249; CHECK-NEXT: rts16 6250; CHECK-NEXT: .LBB135_2: # %label2 6251; CHECK-NEXT: movi16 a0, 0 6252; CHECK-NEXT: rts16 6253; 6254; GENERIC-LABEL: brRR_i1_sge: 6255; GENERIC: # %bb.0: # %entry 6256; GENERIC-NEXT: .cfi_def_cfa_offset 0 6257; GENERIC-NEXT: subi16 sp, sp, 4 6258; GENERIC-NEXT: .cfi_def_cfa_offset 4 6259; GENERIC-NEXT: lsli16 a0, a0, 7 6260; GENERIC-NEXT: asri16 a0, a0, 7 6261; GENERIC-NEXT: lsli16 a1, a1, 7 6262; GENERIC-NEXT: asri16 a1, a1, 7 6263; GENERIC-NEXT: cmplt16 a1, a0 6264; GENERIC-NEXT: bt16 .LBB135_2 6265; GENERIC-NEXT: # %bb.1: # %label1 6266; GENERIC-NEXT: movi16 a0, 1 6267; GENERIC-NEXT: addi16 sp, sp, 4 6268; GENERIC-NEXT: rts16 6269; GENERIC-NEXT: .LBB135_2: # %label2 6270; GENERIC-NEXT: movi16 a0, 0 6271; GENERIC-NEXT: addi16 sp, sp, 4 6272; GENERIC-NEXT: rts16 6273; CHECK-UGTXT: icmpu32 a0, a1, a0 6274; CHECK-UGTXT: rts16 6275entry: 6276 %icmp = icmp sge i1 %y, %x 6277 br i1 %icmp, label %label1, label %label2 6278label1: 6279 ret i1 1 6280label2: 6281 ret i1 0 6282} 6283 6284define i1 @brRI_i1_sge(i1 %x) { 6285; CHECK-LABEL: brRI_i1_sge: 6286; CHECK: # %bb.0: # %entry 6287; CHECK-NEXT: andi32 a0, a0, 1 6288; CHECK-NEXT: btsti32 a0, 0 6289; CHECK-NEXT: bt32 .LBB136_2 6290; CHECK-NEXT: # %bb.1: # %label1 6291; CHECK-NEXT: movi16 a0, 1 6292; CHECK-NEXT: rts16 6293; CHECK-NEXT: .LBB136_2: # %label2 6294; CHECK-NEXT: movi16 a0, 0 6295; CHECK-NEXT: rts16 6296; 6297; GENERIC-LABEL: brRI_i1_sge: 6298; GENERIC: # %bb.0: # %entry 6299; GENERIC-NEXT: .cfi_def_cfa_offset 0 6300; GENERIC-NEXT: subi16 sp, sp, 4 6301; GENERIC-NEXT: .cfi_def_cfa_offset 4 6302; GENERIC-NEXT: movi16 a1, 1 6303; GENERIC-NEXT: and16 a1, a0 6304; GENERIC-NEXT: btsti16 a1, 0 6305; GENERIC-NEXT: bt16 .LBB136_2 6306; GENERIC-NEXT: # %bb.1: # %label1 6307; GENERIC-NEXT: movi16 a0, 1 6308; GENERIC-NEXT: addi16 sp, sp, 4 6309; GENERIC-NEXT: rts16 6310; GENERIC-NEXT: .LBB136_2: # %label2 6311; GENERIC-NEXT: movi16 a0, 0 6312; GENERIC-NEXT: addi16 sp, sp, 4 6313; GENERIC-NEXT: rts16 6314; CHECK-UGTXT: icmpu32 a0, a1, a0 6315; CHECK-UGTXT: rts16 6316entry: 6317 %icmp = icmp sge i1 %x, 10 6318 br i1 %icmp, label %label1, label %label2 6319label1: 6320 ret i1 1 6321label2: 6322 ret i1 0 6323} 6324 6325define i1 @brR0_i1_sge(i1 %x) { 6326; CHECK-LABEL: brR0_i1_sge: 6327; CHECK: # %bb.0: # %entry 6328; CHECK-NEXT: andi32 a0, a0, 1 6329; CHECK-NEXT: btsti32 a0, 0 6330; CHECK-NEXT: bt32 .LBB137_2 6331; CHECK-NEXT: # %bb.1: # %label1 6332; CHECK-NEXT: movi16 a0, 1 6333; CHECK-NEXT: rts16 6334; CHECK-NEXT: .LBB137_2: # %label2 6335; CHECK-NEXT: movi16 a0, 0 6336; CHECK-NEXT: rts16 6337; 6338; GENERIC-LABEL: brR0_i1_sge: 6339; GENERIC: # %bb.0: # %entry 6340; GENERIC-NEXT: .cfi_def_cfa_offset 0 6341; GENERIC-NEXT: subi16 sp, sp, 4 6342; GENERIC-NEXT: .cfi_def_cfa_offset 4 6343; GENERIC-NEXT: movi16 a1, 1 6344; GENERIC-NEXT: and16 a1, a0 6345; GENERIC-NEXT: btsti16 a1, 0 6346; GENERIC-NEXT: bt16 .LBB137_2 6347; GENERIC-NEXT: # %bb.1: # %label1 6348; GENERIC-NEXT: movi16 a0, 1 6349; GENERIC-NEXT: addi16 sp, sp, 4 6350; GENERIC-NEXT: rts16 6351; GENERIC-NEXT: .LBB137_2: # %label2 6352; GENERIC-NEXT: movi16 a0, 0 6353; GENERIC-NEXT: addi16 sp, sp, 4 6354; GENERIC-NEXT: rts16 6355; CHECK-UGTXT: icmpu32 a0, a1, a0 6356; CHECK-UGTXT: rts16 6357entry: 6358 %icmp = icmp sge i1 %x, 0 6359 br i1 %icmp, label %label1, label %label2 6360label1: 6361 ret i1 1 6362label2: 6363 ret i1 0 6364} 6365 6366;SLT 6367define i1 @brRR_i1_slt(i1 %x, i1 %y) { 6368; CHECK-LABEL: brRR_i1_slt: 6369; CHECK: # %bb.0: # %entry 6370; CHECK-NEXT: sext32 a0, a0, 0, 0 6371; CHECK-NEXT: sext32 a1, a1, 0, 0 6372; CHECK-NEXT: cmplt16 a1, a0 6373; CHECK-NEXT: bf32 .LBB138_2 6374; CHECK-NEXT: # %bb.1: # %label1 6375; CHECK-NEXT: movi16 a0, 1 6376; CHECK-NEXT: rts16 6377; CHECK-NEXT: .LBB138_2: # %label2 6378; CHECK-NEXT: movi16 a0, 0 6379; CHECK-NEXT: rts16 6380; 6381; GENERIC-LABEL: brRR_i1_slt: 6382; GENERIC: # %bb.0: # %entry 6383; GENERIC-NEXT: .cfi_def_cfa_offset 0 6384; GENERIC-NEXT: subi16 sp, sp, 4 6385; GENERIC-NEXT: .cfi_def_cfa_offset 4 6386; GENERIC-NEXT: lsli16 a0, a0, 7 6387; GENERIC-NEXT: asri16 a0, a0, 7 6388; GENERIC-NEXT: lsli16 a1, a1, 7 6389; GENERIC-NEXT: asri16 a1, a1, 7 6390; GENERIC-NEXT: cmplt16 a1, a0 6391; GENERIC-NEXT: bf16 .LBB138_2 6392; GENERIC-NEXT: # %bb.1: # %label1 6393; GENERIC-NEXT: movi16 a0, 1 6394; GENERIC-NEXT: addi16 sp, sp, 4 6395; GENERIC-NEXT: rts16 6396; GENERIC-NEXT: .LBB138_2: # %label2 6397; GENERIC-NEXT: movi16 a0, 0 6398; GENERIC-NEXT: addi16 sp, sp, 4 6399; GENERIC-NEXT: rts16 6400; CHECK-UGTXT: icmpu32 a0, a1, a0 6401; CHECK-UGTXT: rts16 6402entry: 6403 %icmp = icmp slt i1 %y, %x 6404 br i1 %icmp, label %label1, label %label2 6405label1: 6406 ret i1 1 6407label2: 6408 ret i1 0 6409} 6410 6411define i1 @brRI_i1_slt(i1 %x) { 6412; CHECK-LABEL: brRI_i1_slt: 6413; CHECK: # %bb.0: # %entry 6414; CHECK-NEXT: andi32 a0, a0, 1 6415; CHECK-NEXT: bnez32 a0, .LBB139_2 6416; CHECK-NEXT: # %bb.1: # %label2 6417; CHECK-NEXT: movi16 a0, 0 6418; CHECK-NEXT: rts16 6419; CHECK-NEXT: .LBB139_2: # %label1 6420; CHECK-NEXT: movi16 a0, 1 6421; CHECK-NEXT: rts16 6422; 6423; GENERIC-LABEL: brRI_i1_slt: 6424; GENERIC: # %bb.0: # %entry 6425; GENERIC-NEXT: .cfi_def_cfa_offset 0 6426; GENERIC-NEXT: subi16 sp, sp, 4 6427; GENERIC-NEXT: .cfi_def_cfa_offset 4 6428; GENERIC-NEXT: movi16 a1, 1 6429; GENERIC-NEXT: and16 a1, a0 6430; GENERIC-NEXT: cmpnei16 a1, 0 6431; GENERIC-NEXT: bt16 .LBB139_2 6432; GENERIC-NEXT: # %bb.1: # %label2 6433; GENERIC-NEXT: movi16 a0, 0 6434; GENERIC-NEXT: addi16 sp, sp, 4 6435; GENERIC-NEXT: rts16 6436; GENERIC-NEXT: .LBB139_2: # %label1 6437; GENERIC-NEXT: movi16 a0, 1 6438; GENERIC-NEXT: addi16 sp, sp, 4 6439; GENERIC-NEXT: rts16 6440; CHECK-UGTXT: icmpu32 a0, a1, a0 6441; CHECK-UGTXT: rts16 6442entry: 6443 %icmp = icmp slt i1 %x, 10 6444 br i1 %icmp, label %label1, label %label2 6445label1: 6446 ret i1 1 6447label2: 6448 ret i1 0 6449} 6450 6451define i1 @brR0_i1_slt(i1 %x) { 6452; CHECK-LABEL: brR0_i1_slt: 6453; CHECK: # %bb.0: # %entry 6454; CHECK-NEXT: andi32 a0, a0, 1 6455; CHECK-NEXT: bnez32 a0, .LBB140_2 6456; CHECK-NEXT: # %bb.1: # %label2 6457; CHECK-NEXT: movi16 a0, 0 6458; CHECK-NEXT: rts16 6459; CHECK-NEXT: .LBB140_2: # %label1 6460; CHECK-NEXT: movi16 a0, 1 6461; CHECK-NEXT: rts16 6462; 6463; GENERIC-LABEL: brR0_i1_slt: 6464; GENERIC: # %bb.0: # %entry 6465; GENERIC-NEXT: .cfi_def_cfa_offset 0 6466; GENERIC-NEXT: subi16 sp, sp, 4 6467; GENERIC-NEXT: .cfi_def_cfa_offset 4 6468; GENERIC-NEXT: movi16 a1, 1 6469; GENERIC-NEXT: and16 a1, a0 6470; GENERIC-NEXT: cmpnei16 a1, 0 6471; GENERIC-NEXT: bt16 .LBB140_2 6472; GENERIC-NEXT: # %bb.1: # %label2 6473; GENERIC-NEXT: movi16 a0, 0 6474; GENERIC-NEXT: addi16 sp, sp, 4 6475; GENERIC-NEXT: rts16 6476; GENERIC-NEXT: .LBB140_2: # %label1 6477; GENERIC-NEXT: movi16 a0, 1 6478; GENERIC-NEXT: addi16 sp, sp, 4 6479; GENERIC-NEXT: rts16 6480; CHECK-UGTXT: icmpu32 a0, a1, a0 6481; CHECK-UGTXT: rts16 6482entry: 6483 %icmp = icmp slt i1 %x, 0 6484 br i1 %icmp, label %label1, label %label2 6485label1: 6486 ret i1 1 6487label2: 6488 ret i1 0 6489} 6490 6491;SLE 6492define i1 @brRR_i1_sle(i1 %x, i1 %y) { 6493; CHECK-LABEL: brRR_i1_sle: 6494; CHECK: # %bb.0: # %entry 6495; CHECK-NEXT: sext32 a1, a1, 0, 0 6496; CHECK-NEXT: sext32 a0, a0, 0, 0 6497; CHECK-NEXT: cmplt16 a0, a1 6498; CHECK-NEXT: bt32 .LBB141_2 6499; CHECK-NEXT: # %bb.1: # %label1 6500; CHECK-NEXT: movi16 a0, 1 6501; CHECK-NEXT: rts16 6502; CHECK-NEXT: .LBB141_2: # %label2 6503; CHECK-NEXT: movi16 a0, 0 6504; CHECK-NEXT: rts16 6505; 6506; GENERIC-LABEL: brRR_i1_sle: 6507; GENERIC: # %bb.0: # %entry 6508; GENERIC-NEXT: .cfi_def_cfa_offset 0 6509; GENERIC-NEXT: subi16 sp, sp, 4 6510; GENERIC-NEXT: .cfi_def_cfa_offset 4 6511; GENERIC-NEXT: lsli16 a1, a1, 7 6512; GENERIC-NEXT: asri16 a1, a1, 7 6513; GENERIC-NEXT: lsli16 a0, a0, 7 6514; GENERIC-NEXT: asri16 a0, a0, 7 6515; GENERIC-NEXT: cmplt16 a0, a1 6516; GENERIC-NEXT: bt16 .LBB141_2 6517; GENERIC-NEXT: # %bb.1: # %label1 6518; GENERIC-NEXT: movi16 a0, 1 6519; GENERIC-NEXT: addi16 sp, sp, 4 6520; GENERIC-NEXT: rts16 6521; GENERIC-NEXT: .LBB141_2: # %label2 6522; GENERIC-NEXT: movi16 a0, 0 6523; GENERIC-NEXT: addi16 sp, sp, 4 6524; GENERIC-NEXT: rts16 6525; CHECK-UGTXT: icmpu32 a0, a1, a0 6526; CHECK-UGTXT: rts16 6527entry: 6528 %icmp = icmp sle i1 %y, %x 6529 br i1 %icmp, label %label1, label %label2 6530label1: 6531 ret i1 1 6532label2: 6533 ret i1 0 6534} 6535 6536define i1 @brRI_i1_sle(i1 %x) { 6537; CHECK-LABEL: brRI_i1_sle: 6538; CHECK: # %bb.0: # %entry 6539; CHECK-NEXT: movi16 a0, 0 6540; CHECK-NEXT: btsti32 a0, 0 6541; CHECK-NEXT: bt32 .LBB142_2 6542; CHECK-NEXT: # %bb.1: # %label1 6543; CHECK-NEXT: movi16 a0, 1 6544; CHECK-NEXT: rts16 6545; CHECK-NEXT: .LBB142_2: # %label2 6546; CHECK-NEXT: movi16 a0, 0 6547; CHECK-NEXT: rts16 6548; 6549; GENERIC-LABEL: brRI_i1_sle: 6550; GENERIC: # %bb.0: # %entry 6551; GENERIC-NEXT: .cfi_def_cfa_offset 0 6552; GENERIC-NEXT: subi16 sp, sp, 4 6553; GENERIC-NEXT: .cfi_def_cfa_offset 4 6554; GENERIC-NEXT: movi16 a0, 0 6555; GENERIC-NEXT: btsti16 a0, 0 6556; GENERIC-NEXT: bt16 .LBB142_2 6557; GENERIC-NEXT: # %bb.1: # %label1 6558; GENERIC-NEXT: movi16 a0, 1 6559; GENERIC-NEXT: addi16 sp, sp, 4 6560; GENERIC-NEXT: rts16 6561; GENERIC-NEXT: .LBB142_2: # %label2 6562; GENERIC-NEXT: movi16 a0, 0 6563; GENERIC-NEXT: addi16 sp, sp, 4 6564; GENERIC-NEXT: rts16 6565; CHECK-UGTXT: icmpu32 a0, a1, a0 6566; CHECK-UGTXT: rts16 6567entry: 6568 %icmp = icmp sle i1 %x, 10 6569 br i1 %icmp, label %label1, label %label2 6570label1: 6571 ret i1 1 6572label2: 6573 ret i1 0 6574} 6575 6576define i1 @brR0_i1_sle(i1 %x) { 6577; CHECK-LABEL: brR0_i1_sle: 6578; CHECK: # %bb.0: # %entry 6579; CHECK-NEXT: movi16 a0, 0 6580; CHECK-NEXT: btsti32 a0, 0 6581; CHECK-NEXT: bt32 .LBB143_2 6582; CHECK-NEXT: # %bb.1: # %label1 6583; CHECK-NEXT: movi16 a0, 1 6584; CHECK-NEXT: rts16 6585; CHECK-NEXT: .LBB143_2: # %label2 6586; CHECK-NEXT: movi16 a0, 0 6587; CHECK-NEXT: rts16 6588; 6589; GENERIC-LABEL: brR0_i1_sle: 6590; GENERIC: # %bb.0: # %entry 6591; GENERIC-NEXT: .cfi_def_cfa_offset 0 6592; GENERIC-NEXT: subi16 sp, sp, 4 6593; GENERIC-NEXT: .cfi_def_cfa_offset 4 6594; GENERIC-NEXT: movi16 a0, 0 6595; GENERIC-NEXT: btsti16 a0, 0 6596; GENERIC-NEXT: bt16 .LBB143_2 6597; GENERIC-NEXT: # %bb.1: # %label1 6598; GENERIC-NEXT: movi16 a0, 1 6599; GENERIC-NEXT: addi16 sp, sp, 4 6600; GENERIC-NEXT: rts16 6601; GENERIC-NEXT: .LBB143_2: # %label2 6602; GENERIC-NEXT: movi16 a0, 0 6603; GENERIC-NEXT: addi16 sp, sp, 4 6604; GENERIC-NEXT: rts16 6605; CHECK-UGTXT: icmpu32 a0, a1, a0 6606; CHECK-UGTXT: rts16 6607entry: 6608 %icmp = icmp sle i1 %x, 0 6609 br i1 %icmp, label %label1, label %label2 6610label1: 6611 ret i1 1 6612label2: 6613 ret i1 0 6614} 6615 6616 6617define i1 @brCBit_i1(i1 %c) { 6618; CHECK-LABEL: brCBit_i1: 6619; CHECK: # %bb.0: # %entry 6620; CHECK-NEXT: andi32 a0, a0, 1 6621; CHECK-NEXT: bez32 a0, .LBB144_2 6622; CHECK-NEXT: # %bb.1: # %label1 6623; CHECK-NEXT: movi16 a0, 1 6624; CHECK-NEXT: rts16 6625; CHECK-NEXT: .LBB144_2: # %label2 6626; CHECK-NEXT: movi16 a0, 0 6627; CHECK-NEXT: rts16 6628; 6629; GENERIC-LABEL: brCBit_i1: 6630; GENERIC: # %bb.0: # %entry 6631; GENERIC-NEXT: .cfi_def_cfa_offset 0 6632; GENERIC-NEXT: subi16 sp, sp, 4 6633; GENERIC-NEXT: .cfi_def_cfa_offset 4 6634; GENERIC-NEXT: movi16 a1, 1 6635; GENERIC-NEXT: and16 a1, a0 6636; GENERIC-NEXT: cmpnei16 a1, 0 6637; GENERIC-NEXT: bf16 .LBB144_2 6638; GENERIC-NEXT: # %bb.1: # %label1 6639; GENERIC-NEXT: movi16 a0, 1 6640; GENERIC-NEXT: addi16 sp, sp, 4 6641; GENERIC-NEXT: rts16 6642; GENERIC-NEXT: .LBB144_2: # %label2 6643; GENERIC-NEXT: movi16 a0, 0 6644; GENERIC-NEXT: addi16 sp, sp, 4 6645; GENERIC-NEXT: rts16 6646entry: 6647 br i1 %c, label %label1, label %label2 6648label1: 6649 ret i1 1 6650label2: 6651 ret i1 0 6652} 6653