1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv2_sf -mattr=+fpuv2_df | FileCheck %s --check-prefix=CHECK-DF 3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv3_sf -mattr=+fpuv3_df | FileCheck %s --check-prefix=CHECK-DF2 4 5;OEQ 6define i32 @brRR_oeq(double %x, double %y) { 7; 8; 9; CHECK-DF-LABEL: brRR_oeq: 10; CHECK-DF: # %bb.0: # %entry 11; CHECK-DF-NEXT: fcmpned vr1, vr0 12; CHECK-DF-NEXT: bt32 .LBB0_2 13; CHECK-DF-NEXT: # %bb.1: # %label1 14; CHECK-DF-NEXT: movi16 a0, 1 15; CHECK-DF-NEXT: rts16 16; CHECK-DF-NEXT: .LBB0_2: # %label2 17; CHECK-DF-NEXT: movi16 a0, 0 18; CHECK-DF-NEXT: rts16 19; 20; CHECK-DF2-LABEL: brRR_oeq: 21; CHECK-DF2: # %bb.0: # %entry 22; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0 23; CHECK-DF2-NEXT: bt32 .LBB0_2 24; CHECK-DF2-NEXT: # %bb.1: # %label1 25; CHECK-DF2-NEXT: movi16 a0, 1 26; CHECK-DF2-NEXT: rts16 27; CHECK-DF2-NEXT: .LBB0_2: # %label2 28; CHECK-DF2-NEXT: movi16 a0, 0 29; CHECK-DF2-NEXT: rts16 30entry: 31 %fcmp = fcmp oeq double %y, %x 32 br i1 %fcmp, label %label1, label %label2 33label1: 34 ret i32 1 35label2: 36 ret i32 0 37} 38 39define i32 @brRI_oeq(double %x) { 40; 41; 42; CHECK-DF-LABEL: brRI_oeq: 43; CHECK-DF: # %bb.0: # %entry 44; CHECK-DF-NEXT: grs32 a0, .LCPI1_0 45; CHECK-DF-NEXT: fldd vr1, (a0, 0) 46; CHECK-DF-NEXT: fcmpned vr0, vr1 47; CHECK-DF-NEXT: bt32 .LBB1_2 48; CHECK-DF-NEXT: # %bb.1: # %label1 49; CHECK-DF-NEXT: movi16 a0, 1 50; CHECK-DF-NEXT: rts16 51; CHECK-DF-NEXT: .LBB1_2: # %label2 52; CHECK-DF-NEXT: movi16 a0, 0 53; CHECK-DF-NEXT: rts16 54; CHECK-DF-NEXT: .p2align 1 55; CHECK-DF-NEXT: # %bb.3: 56; CHECK-DF-NEXT: .p2align 2, 0x0 57; CHECK-DF-NEXT: .LCPI1_0: 58; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 59; 60; CHECK-DF2-LABEL: brRI_oeq: 61; CHECK-DF2: # %bb.0: # %entry 62; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI1_0] 63; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 64; CHECK-DF2-NEXT: bt32 .LBB1_2 65; CHECK-DF2-NEXT: # %bb.1: # %label1 66; CHECK-DF2-NEXT: movi16 a0, 1 67; CHECK-DF2-NEXT: rts16 68; CHECK-DF2-NEXT: .LBB1_2: # %label2 69; CHECK-DF2-NEXT: movi16 a0, 0 70; CHECK-DF2-NEXT: rts16 71; CHECK-DF2-NEXT: .p2align 1 72; CHECK-DF2-NEXT: # %bb.3: 73; CHECK-DF2-NEXT: .p2align 2, 0x0 74; CHECK-DF2-NEXT: .LCPI1_0: 75; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 76entry: 77 %fcmp = fcmp oeq double %x, 10.0 78 br i1 %fcmp, label %label1, label %label2 79label1: 80 ret i32 1 81label2: 82 ret i32 0 83} 84 85define i32 @brR0_oeq(double %x) { 86; 87; 88; CHECK-DF-LABEL: brR0_oeq: 89; CHECK-DF: # %bb.0: # %entry 90; CHECK-DF-NEXT: grs32 a0, .LCPI2_0 91; CHECK-DF-NEXT: fldd vr1, (a0, 0) 92; CHECK-DF-NEXT: fcmpned vr0, vr1 93; CHECK-DF-NEXT: bt32 .LBB2_2 94; CHECK-DF-NEXT: # %bb.1: # %label1 95; CHECK-DF-NEXT: movi16 a0, 1 96; CHECK-DF-NEXT: rts16 97; CHECK-DF-NEXT: .LBB2_2: # %label2 98; CHECK-DF-NEXT: movi16 a0, 0 99; CHECK-DF-NEXT: rts16 100; CHECK-DF-NEXT: .p2align 1 101; CHECK-DF-NEXT: # %bb.3: 102; CHECK-DF-NEXT: .p2align 2, 0x0 103; CHECK-DF-NEXT: .LCPI2_0: 104; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 105; 106; CHECK-DF2-LABEL: brR0_oeq: 107; CHECK-DF2: # %bb.0: # %entry 108; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI2_0] 109; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 110; CHECK-DF2-NEXT: bt32 .LBB2_2 111; CHECK-DF2-NEXT: # %bb.1: # %label1 112; CHECK-DF2-NEXT: movi16 a0, 1 113; CHECK-DF2-NEXT: rts16 114; CHECK-DF2-NEXT: .LBB2_2: # %label2 115; CHECK-DF2-NEXT: movi16 a0, 0 116; CHECK-DF2-NEXT: rts16 117; CHECK-DF2-NEXT: .p2align 1 118; CHECK-DF2-NEXT: # %bb.3: 119; CHECK-DF2-NEXT: .p2align 2, 0x0 120; CHECK-DF2-NEXT: .LCPI2_0: 121; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 122entry: 123 %fcmp = fcmp oeq double %x, 0.0 124 br i1 %fcmp, label %label1, label %label2 125label1: 126 ret i32 1 127label2: 128 ret i32 0 129} 130 131;NE 132define i32 @brRR_one(double %x, double %y) { 133; 134; 135; CHECK-DF-LABEL: brRR_one: 136; CHECK-DF: # %bb.0: # %entry 137; CHECK-DF-NEXT: fcmpuod vr1, vr0 138; CHECK-DF-NEXT: mvc32 a0 139; CHECK-DF-NEXT: fcmpned vr1, vr0 140; CHECK-DF-NEXT: mvcv16 a1 141; CHECK-DF-NEXT: or16 a0, a1 142; CHECK-DF-NEXT: btsti16 a0, 0 143; CHECK-DF-NEXT: bt32 .LBB3_2 144; CHECK-DF-NEXT: # %bb.1: # %label1 145; CHECK-DF-NEXT: movi16 a0, 1 146; CHECK-DF-NEXT: rts16 147; CHECK-DF-NEXT: .LBB3_2: # %label2 148; CHECK-DF-NEXT: movi16 a0, 0 149; CHECK-DF-NEXT: rts16 150; 151; CHECK-DF2-LABEL: brRR_one: 152; CHECK-DF2: # %bb.0: # %entry 153; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0 154; CHECK-DF2-NEXT: mvc32 a0 155; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0 156; CHECK-DF2-NEXT: mvcv16 a1 157; CHECK-DF2-NEXT: or16 a0, a1 158; CHECK-DF2-NEXT: btsti16 a0, 0 159; CHECK-DF2-NEXT: bt32 .LBB3_2 160; CHECK-DF2-NEXT: # %bb.1: # %label1 161; CHECK-DF2-NEXT: movi16 a0, 1 162; CHECK-DF2-NEXT: rts16 163; CHECK-DF2-NEXT: .LBB3_2: # %label2 164; CHECK-DF2-NEXT: movi16 a0, 0 165; CHECK-DF2-NEXT: rts16 166entry: 167 %fcmp = fcmp one double %y, %x 168 br i1 %fcmp, label %label1, label %label2 169label1: 170 ret i32 1 171label2: 172 ret i32 0 173} 174 175define i32 @brRI_one(double %x) { 176; 177; 178; CHECK-DF-LABEL: brRI_one: 179; CHECK-DF: # %bb.0: # %entry 180; CHECK-DF-NEXT: grs32 a0, .LCPI4_0 181; CHECK-DF-NEXT: fldd vr1, (a0, 0) 182; CHECK-DF-NEXT: fcmpuod vr0, vr1 183; CHECK-DF-NEXT: mvc32 a0 184; CHECK-DF-NEXT: fcmpned vr0, vr1 185; CHECK-DF-NEXT: mvcv16 a1 186; CHECK-DF-NEXT: or16 a0, a1 187; CHECK-DF-NEXT: btsti16 a0, 0 188; CHECK-DF-NEXT: bt32 .LBB4_2 189; CHECK-DF-NEXT: # %bb.1: # %label1 190; CHECK-DF-NEXT: movi16 a0, 1 191; CHECK-DF-NEXT: rts16 192; CHECK-DF-NEXT: .LBB4_2: # %label2 193; CHECK-DF-NEXT: movi16 a0, 0 194; CHECK-DF-NEXT: rts16 195; CHECK-DF-NEXT: .p2align 1 196; CHECK-DF-NEXT: # %bb.3: 197; CHECK-DF-NEXT: .p2align 2, 0x0 198; CHECK-DF-NEXT: .LCPI4_0: 199; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 200; 201; CHECK-DF2-LABEL: brRI_one: 202; CHECK-DF2: # %bb.0: # %entry 203; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI4_0] 204; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1 205; CHECK-DF2-NEXT: mvc32 a0 206; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 207; CHECK-DF2-NEXT: mvcv16 a1 208; CHECK-DF2-NEXT: or16 a0, a1 209; CHECK-DF2-NEXT: btsti16 a0, 0 210; CHECK-DF2-NEXT: bt32 .LBB4_2 211; CHECK-DF2-NEXT: # %bb.1: # %label1 212; CHECK-DF2-NEXT: movi16 a0, 1 213; CHECK-DF2-NEXT: rts16 214; CHECK-DF2-NEXT: .LBB4_2: # %label2 215; CHECK-DF2-NEXT: movi16 a0, 0 216; CHECK-DF2-NEXT: rts16 217; CHECK-DF2-NEXT: .p2align 1 218; CHECK-DF2-NEXT: # %bb.3: 219; CHECK-DF2-NEXT: .p2align 2, 0x0 220; CHECK-DF2-NEXT: .LCPI4_0: 221; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 222entry: 223 %fcmp = fcmp one double %x, 10.0 224 br i1 %fcmp, label %label1, label %label2 225label1: 226 ret i32 1 227label2: 228 ret i32 0 229} 230 231define i32 @brR0_one(double %x) { 232; 233; 234; CHECK-DF-LABEL: brR0_one: 235; CHECK-DF: # %bb.0: # %entry 236; CHECK-DF-NEXT: grs32 a0, .LCPI5_0 237; CHECK-DF-NEXT: fldd vr1, (a0, 0) 238; CHECK-DF-NEXT: fcmpuod vr0, vr1 239; CHECK-DF-NEXT: mvc32 a0 240; CHECK-DF-NEXT: fcmpned vr0, vr1 241; CHECK-DF-NEXT: mvcv16 a1 242; CHECK-DF-NEXT: or16 a0, a1 243; CHECK-DF-NEXT: btsti16 a0, 0 244; CHECK-DF-NEXT: bt32 .LBB5_2 245; CHECK-DF-NEXT: # %bb.1: # %label1 246; CHECK-DF-NEXT: movi16 a0, 1 247; CHECK-DF-NEXT: rts16 248; CHECK-DF-NEXT: .LBB5_2: # %label2 249; CHECK-DF-NEXT: movi16 a0, 0 250; CHECK-DF-NEXT: rts16 251; CHECK-DF-NEXT: .p2align 1 252; CHECK-DF-NEXT: # %bb.3: 253; CHECK-DF-NEXT: .p2align 2, 0x0 254; CHECK-DF-NEXT: .LCPI5_0: 255; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 256; 257; CHECK-DF2-LABEL: brR0_one: 258; CHECK-DF2: # %bb.0: # %entry 259; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI5_0] 260; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1 261; CHECK-DF2-NEXT: mvc32 a0 262; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 263; CHECK-DF2-NEXT: mvcv16 a1 264; CHECK-DF2-NEXT: or16 a0, a1 265; CHECK-DF2-NEXT: btsti16 a0, 0 266; CHECK-DF2-NEXT: bt32 .LBB5_2 267; CHECK-DF2-NEXT: # %bb.1: # %label1 268; CHECK-DF2-NEXT: movi16 a0, 1 269; CHECK-DF2-NEXT: rts16 270; CHECK-DF2-NEXT: .LBB5_2: # %label2 271; CHECK-DF2-NEXT: movi16 a0, 0 272; CHECK-DF2-NEXT: rts16 273; CHECK-DF2-NEXT: .p2align 1 274; CHECK-DF2-NEXT: # %bb.3: 275; CHECK-DF2-NEXT: .p2align 2, 0x0 276; CHECK-DF2-NEXT: .LCPI5_0: 277; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 278entry: 279 %fcmp = fcmp one double %x, 0.0 280 br i1 %fcmp, label %label1, label %label2 281label1: 282 ret i32 1 283label2: 284 ret i32 0 285} 286 287;UGT 288define i32 @brRR_ugt(double %x, double %y) { 289; 290; 291; CHECK-DF-LABEL: brRR_ugt: 292; CHECK-DF: # %bb.0: # %entry 293; CHECK-DF-NEXT: fcmphsd vr0, vr1 294; CHECK-DF-NEXT: bt32 .LBB6_2 295; CHECK-DF-NEXT: # %bb.1: # %label1 296; CHECK-DF-NEXT: movi16 a0, 1 297; CHECK-DF-NEXT: rts16 298; CHECK-DF-NEXT: .LBB6_2: # %label2 299; CHECK-DF-NEXT: movi16 a0, 0 300; CHECK-DF-NEXT: rts16 301; 302; CHECK-DF2-LABEL: brRR_ugt: 303; CHECK-DF2: # %bb.0: # %entry 304; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1 305; CHECK-DF2-NEXT: bt32 .LBB6_2 306; CHECK-DF2-NEXT: # %bb.1: # %label1 307; CHECK-DF2-NEXT: movi16 a0, 1 308; CHECK-DF2-NEXT: rts16 309; CHECK-DF2-NEXT: .LBB6_2: # %label2 310; CHECK-DF2-NEXT: movi16 a0, 0 311; CHECK-DF2-NEXT: rts16 312entry: 313 %fcmp = fcmp ugt double %y, %x 314 br i1 %fcmp, label %label1, label %label2 315label1: 316 ret i32 1 317label2: 318 ret i32 0 319} 320 321define i32 @brRI_ugt(double %x) { 322; 323; 324; CHECK-DF-LABEL: brRI_ugt: 325; CHECK-DF: # %bb.0: # %entry 326; CHECK-DF-NEXT: grs32 a0, .LCPI7_0 327; CHECK-DF-NEXT: fldd vr1, (a0, 0) 328; CHECK-DF-NEXT: fcmphsd vr1, vr0 329; CHECK-DF-NEXT: bt32 .LBB7_2 330; CHECK-DF-NEXT: # %bb.1: # %label1 331; CHECK-DF-NEXT: movi16 a0, 1 332; CHECK-DF-NEXT: rts16 333; CHECK-DF-NEXT: .LBB7_2: # %label2 334; CHECK-DF-NEXT: movi16 a0, 0 335; CHECK-DF-NEXT: rts16 336; CHECK-DF-NEXT: .p2align 1 337; CHECK-DF-NEXT: # %bb.3: 338; CHECK-DF-NEXT: .p2align 2, 0x0 339; CHECK-DF-NEXT: .LCPI7_0: 340; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 341; 342; CHECK-DF2-LABEL: brRI_ugt: 343; CHECK-DF2: # %bb.0: # %entry 344; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI7_0] 345; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0 346; CHECK-DF2-NEXT: bt32 .LBB7_2 347; CHECK-DF2-NEXT: # %bb.1: # %label1 348; CHECK-DF2-NEXT: movi16 a0, 1 349; CHECK-DF2-NEXT: rts16 350; CHECK-DF2-NEXT: .LBB7_2: # %label2 351; CHECK-DF2-NEXT: movi16 a0, 0 352; CHECK-DF2-NEXT: rts16 353; CHECK-DF2-NEXT: .p2align 1 354; CHECK-DF2-NEXT: # %bb.3: 355; CHECK-DF2-NEXT: .p2align 2, 0x0 356; CHECK-DF2-NEXT: .LCPI7_0: 357; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 358entry: 359 %fcmp = fcmp ugt double %x, 10.0 360 br i1 %fcmp, label %label1, label %label2 361label1: 362 ret i32 1 363label2: 364 ret i32 0 365} 366 367define i32 @brR0_ugt(double %x) { 368; 369; 370; CHECK-DF-LABEL: brR0_ugt: 371; CHECK-DF: # %bb.0: # %entry 372; CHECK-DF-NEXT: grs32 a0, .LCPI8_0 373; CHECK-DF-NEXT: fldd vr1, (a0, 0) 374; CHECK-DF-NEXT: fcmphsd vr1, vr0 375; CHECK-DF-NEXT: bt32 .LBB8_2 376; CHECK-DF-NEXT: # %bb.1: # %label1 377; CHECK-DF-NEXT: movi16 a0, 1 378; CHECK-DF-NEXT: rts16 379; CHECK-DF-NEXT: .LBB8_2: # %label2 380; CHECK-DF-NEXT: movi16 a0, 0 381; CHECK-DF-NEXT: rts16 382; CHECK-DF-NEXT: .p2align 1 383; CHECK-DF-NEXT: # %bb.3: 384; CHECK-DF-NEXT: .p2align 2, 0x0 385; CHECK-DF-NEXT: .LCPI8_0: 386; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 387; 388; CHECK-DF2-LABEL: brR0_ugt: 389; CHECK-DF2: # %bb.0: # %entry 390; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI8_0] 391; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0 392; CHECK-DF2-NEXT: bt32 .LBB8_2 393; CHECK-DF2-NEXT: # %bb.1: # %label1 394; CHECK-DF2-NEXT: movi16 a0, 1 395; CHECK-DF2-NEXT: rts16 396; CHECK-DF2-NEXT: .LBB8_2: # %label2 397; CHECK-DF2-NEXT: movi16 a0, 0 398; CHECK-DF2-NEXT: rts16 399; CHECK-DF2-NEXT: .p2align 1 400; CHECK-DF2-NEXT: # %bb.3: 401; CHECK-DF2-NEXT: .p2align 2, 0x0 402; CHECK-DF2-NEXT: .LCPI8_0: 403; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 404entry: 405 %fcmp = fcmp ugt double %x, 0.0 406 br i1 %fcmp, label %label1, label %label2 407label1: 408 ret i32 1 409label2: 410 ret i32 0 411} 412 413;UGE 414define i32 @brRR_uge(double %x, double %y) { 415; 416; 417; CHECK-DF-LABEL: brRR_uge: 418; CHECK-DF: # %bb.0: # %entry 419; CHECK-DF-NEXT: fcmpltd vr1, vr0 420; CHECK-DF-NEXT: bt32 .LBB9_2 421; CHECK-DF-NEXT: # %bb.1: # %label1 422; CHECK-DF-NEXT: movi16 a0, 1 423; CHECK-DF-NEXT: rts16 424; CHECK-DF-NEXT: .LBB9_2: # %label2 425; CHECK-DF-NEXT: movi16 a0, 0 426; CHECK-DF-NEXT: rts16 427; 428; CHECK-DF2-LABEL: brRR_uge: 429; CHECK-DF2: # %bb.0: # %entry 430; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0 431; CHECK-DF2-NEXT: bt32 .LBB9_2 432; CHECK-DF2-NEXT: # %bb.1: # %label1 433; CHECK-DF2-NEXT: movi16 a0, 1 434; CHECK-DF2-NEXT: rts16 435; CHECK-DF2-NEXT: .LBB9_2: # %label2 436; CHECK-DF2-NEXT: movi16 a0, 0 437; CHECK-DF2-NEXT: rts16 438entry: 439 %fcmp = fcmp uge double %y, %x 440 br i1 %fcmp, label %label1, label %label2 441label1: 442 ret i32 1 443label2: 444 ret i32 0 445} 446 447define i32 @brRI_uge(double %x) { 448; 449; 450; CHECK-DF-LABEL: brRI_uge: 451; CHECK-DF: # %bb.0: # %entry 452; CHECK-DF-NEXT: grs32 a0, .LCPI10_0 453; CHECK-DF-NEXT: fldd vr1, (a0, 0) 454; CHECK-DF-NEXT: fcmpltd vr0, vr1 455; CHECK-DF-NEXT: bt32 .LBB10_2 456; CHECK-DF-NEXT: # %bb.1: # %label1 457; CHECK-DF-NEXT: movi16 a0, 1 458; CHECK-DF-NEXT: rts16 459; CHECK-DF-NEXT: .LBB10_2: # %label2 460; CHECK-DF-NEXT: movi16 a0, 0 461; CHECK-DF-NEXT: rts16 462; CHECK-DF-NEXT: .p2align 1 463; CHECK-DF-NEXT: # %bb.3: 464; CHECK-DF-NEXT: .p2align 2, 0x0 465; CHECK-DF-NEXT: .LCPI10_0: 466; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 467; 468; CHECK-DF2-LABEL: brRI_uge: 469; CHECK-DF2: # %bb.0: # %entry 470; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI10_0] 471; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1 472; CHECK-DF2-NEXT: bt32 .LBB10_2 473; CHECK-DF2-NEXT: # %bb.1: # %label1 474; CHECK-DF2-NEXT: movi16 a0, 1 475; CHECK-DF2-NEXT: rts16 476; CHECK-DF2-NEXT: .LBB10_2: # %label2 477; CHECK-DF2-NEXT: movi16 a0, 0 478; CHECK-DF2-NEXT: rts16 479; CHECK-DF2-NEXT: .p2align 1 480; CHECK-DF2-NEXT: # %bb.3: 481; CHECK-DF2-NEXT: .p2align 2, 0x0 482; CHECK-DF2-NEXT: .LCPI10_0: 483; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 484entry: 485 %fcmp = fcmp uge double %x, 10.0 486 br i1 %fcmp, label %label1, label %label2 487label1: 488 ret i32 1 489label2: 490 ret i32 0 491} 492 493define i32 @brR0_uge(double %x) { 494; 495; 496; CHECK-DF-LABEL: brR0_uge: 497; CHECK-DF: # %bb.0: # %entry 498; CHECK-DF-NEXT: grs32 a0, .LCPI11_0 499; CHECK-DF-NEXT: fldd vr1, (a0, 0) 500; CHECK-DF-NEXT: fcmpltd vr0, vr1 501; CHECK-DF-NEXT: bt32 .LBB11_2 502; CHECK-DF-NEXT: # %bb.1: # %label1 503; CHECK-DF-NEXT: movi16 a0, 1 504; CHECK-DF-NEXT: rts16 505; CHECK-DF-NEXT: .LBB11_2: # %label2 506; CHECK-DF-NEXT: movi16 a0, 0 507; CHECK-DF-NEXT: rts16 508; CHECK-DF-NEXT: .p2align 1 509; CHECK-DF-NEXT: # %bb.3: 510; CHECK-DF-NEXT: .p2align 2, 0x0 511; CHECK-DF-NEXT: .LCPI11_0: 512; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 513; 514; CHECK-DF2-LABEL: brR0_uge: 515; CHECK-DF2: # %bb.0: # %entry 516; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI11_0] 517; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1 518; CHECK-DF2-NEXT: bt32 .LBB11_2 519; CHECK-DF2-NEXT: # %bb.1: # %label1 520; CHECK-DF2-NEXT: movi16 a0, 1 521; CHECK-DF2-NEXT: rts16 522; CHECK-DF2-NEXT: .LBB11_2: # %label2 523; CHECK-DF2-NEXT: movi16 a0, 0 524; CHECK-DF2-NEXT: rts16 525; CHECK-DF2-NEXT: .p2align 1 526; CHECK-DF2-NEXT: # %bb.3: 527; CHECK-DF2-NEXT: .p2align 2, 0x0 528; CHECK-DF2-NEXT: .LCPI11_0: 529; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 530entry: 531 %fcmp = fcmp uge double %x, 0.0 532 br i1 %fcmp, label %label1, label %label2 533label1: 534 ret i32 1 535label2: 536 ret i32 0 537} 538 539;ULT 540define i32 @brRR_ult(double %x, double %y) { 541; 542; 543; CHECK-DF-LABEL: brRR_ult: 544; CHECK-DF: # %bb.0: # %entry 545; CHECK-DF-NEXT: fcmphsd vr1, vr0 546; CHECK-DF-NEXT: bt32 .LBB12_2 547; CHECK-DF-NEXT: # %bb.1: # %label1 548; CHECK-DF-NEXT: movi16 a0, 1 549; CHECK-DF-NEXT: rts16 550; CHECK-DF-NEXT: .LBB12_2: # %label2 551; CHECK-DF-NEXT: movi16 a0, 0 552; CHECK-DF-NEXT: rts16 553; 554; CHECK-DF2-LABEL: brRR_ult: 555; CHECK-DF2: # %bb.0: # %entry 556; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0 557; CHECK-DF2-NEXT: bt32 .LBB12_2 558; CHECK-DF2-NEXT: # %bb.1: # %label1 559; CHECK-DF2-NEXT: movi16 a0, 1 560; CHECK-DF2-NEXT: rts16 561; CHECK-DF2-NEXT: .LBB12_2: # %label2 562; CHECK-DF2-NEXT: movi16 a0, 0 563; CHECK-DF2-NEXT: rts16 564entry: 565 %fcmp = fcmp ult double %y, %x 566 br i1 %fcmp, label %label1, label %label2 567label1: 568 ret i32 1 569label2: 570 ret i32 0 571} 572 573define i32 @brRI_ult(double %x) { 574; 575; 576; CHECK-DF-LABEL: brRI_ult: 577; CHECK-DF: # %bb.0: # %entry 578; CHECK-DF-NEXT: grs32 a0, .LCPI13_0 579; CHECK-DF-NEXT: fldd vr1, (a0, 0) 580; CHECK-DF-NEXT: fcmphsd vr0, vr1 581; CHECK-DF-NEXT: bt32 .LBB13_2 582; CHECK-DF-NEXT: # %bb.1: # %label1 583; CHECK-DF-NEXT: movi16 a0, 1 584; CHECK-DF-NEXT: rts16 585; CHECK-DF-NEXT: .LBB13_2: # %label2 586; CHECK-DF-NEXT: movi16 a0, 0 587; CHECK-DF-NEXT: rts16 588; CHECK-DF-NEXT: .p2align 1 589; CHECK-DF-NEXT: # %bb.3: 590; CHECK-DF-NEXT: .p2align 2, 0x0 591; CHECK-DF-NEXT: .LCPI13_0: 592; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 593; 594; CHECK-DF2-LABEL: brRI_ult: 595; CHECK-DF2: # %bb.0: # %entry 596; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI13_0] 597; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1 598; CHECK-DF2-NEXT: bt32 .LBB13_2 599; CHECK-DF2-NEXT: # %bb.1: # %label1 600; CHECK-DF2-NEXT: movi16 a0, 1 601; CHECK-DF2-NEXT: rts16 602; CHECK-DF2-NEXT: .LBB13_2: # %label2 603; CHECK-DF2-NEXT: movi16 a0, 0 604; CHECK-DF2-NEXT: rts16 605; CHECK-DF2-NEXT: .p2align 1 606; CHECK-DF2-NEXT: # %bb.3: 607; CHECK-DF2-NEXT: .p2align 2, 0x0 608; CHECK-DF2-NEXT: .LCPI13_0: 609; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 610entry: 611 %fcmp = fcmp ult double %x, 10.0 612 br i1 %fcmp, label %label1, label %label2 613label1: 614 ret i32 1 615label2: 616 ret i32 0 617} 618 619define i32 @brR0_ult(double %x) { 620; 621; 622; CHECK-DF-LABEL: brR0_ult: 623; CHECK-DF: # %bb.0: # %entry 624; CHECK-DF-NEXT: grs32 a0, .LCPI14_0 625; CHECK-DF-NEXT: fldd vr1, (a0, 0) 626; CHECK-DF-NEXT: fcmphsd vr0, vr1 627; CHECK-DF-NEXT: bt32 .LBB14_2 628; CHECK-DF-NEXT: # %bb.1: # %label1 629; CHECK-DF-NEXT: movi16 a0, 1 630; CHECK-DF-NEXT: rts16 631; CHECK-DF-NEXT: .LBB14_2: # %label2 632; CHECK-DF-NEXT: movi16 a0, 0 633; CHECK-DF-NEXT: rts16 634; CHECK-DF-NEXT: .p2align 1 635; CHECK-DF-NEXT: # %bb.3: 636; CHECK-DF-NEXT: .p2align 2, 0x0 637; CHECK-DF-NEXT: .LCPI14_0: 638; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 639; 640; CHECK-DF2-LABEL: brR0_ult: 641; CHECK-DF2: # %bb.0: # %entry 642; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI14_0] 643; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1 644; CHECK-DF2-NEXT: bt32 .LBB14_2 645; CHECK-DF2-NEXT: # %bb.1: # %label1 646; CHECK-DF2-NEXT: movi16 a0, 1 647; CHECK-DF2-NEXT: rts16 648; CHECK-DF2-NEXT: .LBB14_2: # %label2 649; CHECK-DF2-NEXT: movi16 a0, 0 650; CHECK-DF2-NEXT: rts16 651; CHECK-DF2-NEXT: .p2align 1 652; CHECK-DF2-NEXT: # %bb.3: 653; CHECK-DF2-NEXT: .p2align 2, 0x0 654; CHECK-DF2-NEXT: .LCPI14_0: 655; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 656entry: 657 %fcmp = fcmp ult double %x, 0.0 658 br i1 %fcmp, label %label1, label %label2 659label1: 660 ret i32 1 661label2: 662 ret i32 0 663} 664 665;ULE 666define i32 @brRR_ule(double %x, double %y) { 667; 668; 669; CHECK-DF-LABEL: brRR_ule: 670; CHECK-DF: # %bb.0: # %entry 671; CHECK-DF-NEXT: fcmpltd vr0, vr1 672; CHECK-DF-NEXT: bt32 .LBB15_2 673; CHECK-DF-NEXT: # %bb.1: # %label1 674; CHECK-DF-NEXT: movi16 a0, 1 675; CHECK-DF-NEXT: rts16 676; CHECK-DF-NEXT: .LBB15_2: # %label2 677; CHECK-DF-NEXT: movi16 a0, 0 678; CHECK-DF-NEXT: rts16 679; 680; CHECK-DF2-LABEL: brRR_ule: 681; CHECK-DF2: # %bb.0: # %entry 682; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1 683; CHECK-DF2-NEXT: bt32 .LBB15_2 684; CHECK-DF2-NEXT: # %bb.1: # %label1 685; CHECK-DF2-NEXT: movi16 a0, 1 686; CHECK-DF2-NEXT: rts16 687; CHECK-DF2-NEXT: .LBB15_2: # %label2 688; CHECK-DF2-NEXT: movi16 a0, 0 689; CHECK-DF2-NEXT: rts16 690entry: 691 %fcmp = fcmp ule double %y, %x 692 br i1 %fcmp, label %label1, label %label2 693label1: 694 ret i32 1 695label2: 696 ret i32 0 697} 698 699define i32 @brRI_ule(double %x) { 700; 701; 702; CHECK-DF-LABEL: brRI_ule: 703; CHECK-DF: # %bb.0: # %entry 704; CHECK-DF-NEXT: grs32 a0, .LCPI16_0 705; CHECK-DF-NEXT: fldd vr1, (a0, 0) 706; CHECK-DF-NEXT: fcmpltd vr1, vr0 707; CHECK-DF-NEXT: bt32 .LBB16_2 708; CHECK-DF-NEXT: # %bb.1: # %label1 709; CHECK-DF-NEXT: movi16 a0, 1 710; CHECK-DF-NEXT: rts16 711; CHECK-DF-NEXT: .LBB16_2: # %label2 712; CHECK-DF-NEXT: movi16 a0, 0 713; CHECK-DF-NEXT: rts16 714; CHECK-DF-NEXT: .p2align 1 715; CHECK-DF-NEXT: # %bb.3: 716; CHECK-DF-NEXT: .p2align 2, 0x0 717; CHECK-DF-NEXT: .LCPI16_0: 718; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 719; 720; CHECK-DF2-LABEL: brRI_ule: 721; CHECK-DF2: # %bb.0: # %entry 722; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI16_0] 723; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0 724; CHECK-DF2-NEXT: bt32 .LBB16_2 725; CHECK-DF2-NEXT: # %bb.1: # %label1 726; CHECK-DF2-NEXT: movi16 a0, 1 727; CHECK-DF2-NEXT: rts16 728; CHECK-DF2-NEXT: .LBB16_2: # %label2 729; CHECK-DF2-NEXT: movi16 a0, 0 730; CHECK-DF2-NEXT: rts16 731; CHECK-DF2-NEXT: .p2align 1 732; CHECK-DF2-NEXT: # %bb.3: 733; CHECK-DF2-NEXT: .p2align 2, 0x0 734; CHECK-DF2-NEXT: .LCPI16_0: 735; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 736entry: 737 %fcmp = fcmp ule double %x, 10.0 738 br i1 %fcmp, label %label1, label %label2 739label1: 740 ret i32 1 741label2: 742 ret i32 0 743} 744 745define i32 @brR0_ule(double %x) { 746; 747; 748; CHECK-DF-LABEL: brR0_ule: 749; CHECK-DF: # %bb.0: # %entry 750; CHECK-DF-NEXT: grs32 a0, .LCPI17_0 751; CHECK-DF-NEXT: fldd vr1, (a0, 0) 752; CHECK-DF-NEXT: fcmpltd vr1, vr0 753; CHECK-DF-NEXT: bt32 .LBB17_2 754; CHECK-DF-NEXT: # %bb.1: # %label1 755; CHECK-DF-NEXT: movi16 a0, 1 756; CHECK-DF-NEXT: rts16 757; CHECK-DF-NEXT: .LBB17_2: # %label2 758; CHECK-DF-NEXT: movi16 a0, 0 759; CHECK-DF-NEXT: rts16 760; CHECK-DF-NEXT: .p2align 1 761; CHECK-DF-NEXT: # %bb.3: 762; CHECK-DF-NEXT: .p2align 2, 0x0 763; CHECK-DF-NEXT: .LCPI17_0: 764; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 765; 766; CHECK-DF2-LABEL: brR0_ule: 767; CHECK-DF2: # %bb.0: # %entry 768; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI17_0] 769; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0 770; CHECK-DF2-NEXT: bt32 .LBB17_2 771; CHECK-DF2-NEXT: # %bb.1: # %label1 772; CHECK-DF2-NEXT: movi16 a0, 1 773; CHECK-DF2-NEXT: rts16 774; CHECK-DF2-NEXT: .LBB17_2: # %label2 775; CHECK-DF2-NEXT: movi16 a0, 0 776; CHECK-DF2-NEXT: rts16 777; CHECK-DF2-NEXT: .p2align 1 778; CHECK-DF2-NEXT: # %bb.3: 779; CHECK-DF2-NEXT: .p2align 2, 0x0 780; CHECK-DF2-NEXT: .LCPI17_0: 781; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 782entry: 783 %fcmp = fcmp ule double %x, 0.0 784 br i1 %fcmp, label %label1, label %label2 785label1: 786 ret i32 1 787label2: 788 ret i32 0 789} 790 791;SGT 792define i32 @brRR_ogt(double %x, double %y) { 793; 794; 795; CHECK-DF-LABEL: brRR_ogt: 796; CHECK-DF: # %bb.0: # %entry 797; CHECK-DF-NEXT: fcmpltd vr0, vr1 798; CHECK-DF-NEXT: bf32 .LBB18_2 799; CHECK-DF-NEXT: # %bb.1: # %label1 800; CHECK-DF-NEXT: movi16 a0, 1 801; CHECK-DF-NEXT: rts16 802; CHECK-DF-NEXT: .LBB18_2: # %label2 803; CHECK-DF-NEXT: movi16 a0, 0 804; CHECK-DF-NEXT: rts16 805; 806; CHECK-DF2-LABEL: brRR_ogt: 807; CHECK-DF2: # %bb.0: # %entry 808; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1 809; CHECK-DF2-NEXT: bf32 .LBB18_2 810; CHECK-DF2-NEXT: # %bb.1: # %label1 811; CHECK-DF2-NEXT: movi16 a0, 1 812; CHECK-DF2-NEXT: rts16 813; CHECK-DF2-NEXT: .LBB18_2: # %label2 814; CHECK-DF2-NEXT: movi16 a0, 0 815; CHECK-DF2-NEXT: rts16 816entry: 817 %fcmp = fcmp ogt double %y, %x 818 br i1 %fcmp, label %label1, label %label2 819label1: 820 ret i32 1 821label2: 822 ret i32 0 823} 824 825define i32 @brRI_ogt(double %x) { 826; 827; 828; CHECK-DF-LABEL: brRI_ogt: 829; CHECK-DF: # %bb.0: # %entry 830; CHECK-DF-NEXT: grs32 a0, .LCPI19_0 831; CHECK-DF-NEXT: fldd vr1, (a0, 0) 832; CHECK-DF-NEXT: fcmpltd vr1, vr0 833; CHECK-DF-NEXT: bf32 .LBB19_2 834; CHECK-DF-NEXT: # %bb.1: # %label1 835; CHECK-DF-NEXT: movi16 a0, 1 836; CHECK-DF-NEXT: rts16 837; CHECK-DF-NEXT: .LBB19_2: # %label2 838; CHECK-DF-NEXT: movi16 a0, 0 839; CHECK-DF-NEXT: rts16 840; CHECK-DF-NEXT: .p2align 1 841; CHECK-DF-NEXT: # %bb.3: 842; CHECK-DF-NEXT: .p2align 2, 0x0 843; CHECK-DF-NEXT: .LCPI19_0: 844; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 845; 846; CHECK-DF2-LABEL: brRI_ogt: 847; CHECK-DF2: # %bb.0: # %entry 848; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI19_0] 849; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0 850; CHECK-DF2-NEXT: bf32 .LBB19_2 851; CHECK-DF2-NEXT: # %bb.1: # %label1 852; CHECK-DF2-NEXT: movi16 a0, 1 853; CHECK-DF2-NEXT: rts16 854; CHECK-DF2-NEXT: .LBB19_2: # %label2 855; CHECK-DF2-NEXT: movi16 a0, 0 856; CHECK-DF2-NEXT: rts16 857; CHECK-DF2-NEXT: .p2align 1 858; CHECK-DF2-NEXT: # %bb.3: 859; CHECK-DF2-NEXT: .p2align 2, 0x0 860; CHECK-DF2-NEXT: .LCPI19_0: 861; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 862entry: 863 %fcmp = fcmp ogt double %x, 10.0 864 br i1 %fcmp, label %label1, label %label2 865label1: 866 ret i32 1 867label2: 868 ret i32 0 869} 870 871define i32 @brR0_ogt(double %x) { 872; 873; 874; CHECK-DF-LABEL: brR0_ogt: 875; CHECK-DF: # %bb.0: # %entry 876; CHECK-DF-NEXT: grs32 a0, .LCPI20_0 877; CHECK-DF-NEXT: fldd vr1, (a0, 0) 878; CHECK-DF-NEXT: fcmpltd vr1, vr0 879; CHECK-DF-NEXT: bf32 .LBB20_2 880; CHECK-DF-NEXT: # %bb.1: # %label1 881; CHECK-DF-NEXT: movi16 a0, 1 882; CHECK-DF-NEXT: rts16 883; CHECK-DF-NEXT: .LBB20_2: # %label2 884; CHECK-DF-NEXT: movi16 a0, 0 885; CHECK-DF-NEXT: rts16 886; CHECK-DF-NEXT: .p2align 1 887; CHECK-DF-NEXT: # %bb.3: 888; CHECK-DF-NEXT: .p2align 2, 0x0 889; CHECK-DF-NEXT: .LCPI20_0: 890; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 891; 892; CHECK-DF2-LABEL: brR0_ogt: 893; CHECK-DF2: # %bb.0: # %entry 894; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI20_0] 895; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0 896; CHECK-DF2-NEXT: bf32 .LBB20_2 897; CHECK-DF2-NEXT: # %bb.1: # %label1 898; CHECK-DF2-NEXT: movi16 a0, 1 899; CHECK-DF2-NEXT: rts16 900; CHECK-DF2-NEXT: .LBB20_2: # %label2 901; CHECK-DF2-NEXT: movi16 a0, 0 902; CHECK-DF2-NEXT: rts16 903; CHECK-DF2-NEXT: .p2align 1 904; CHECK-DF2-NEXT: # %bb.3: 905; CHECK-DF2-NEXT: .p2align 2, 0x0 906; CHECK-DF2-NEXT: .LCPI20_0: 907; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 908entry: 909 %fcmp = fcmp ogt double %x, 0.0 910 br i1 %fcmp, label %label1, label %label2 911label1: 912 ret i32 1 913label2: 914 ret i32 0 915} 916 917;SGE 918define i32 @brRR_oge(double %x, double %y) { 919; 920; 921; CHECK-DF-LABEL: brRR_oge: 922; CHECK-DF: # %bb.0: # %entry 923; CHECK-DF-NEXT: fcmphsd vr1, vr0 924; CHECK-DF-NEXT: bf32 .LBB21_2 925; CHECK-DF-NEXT: # %bb.1: # %label1 926; CHECK-DF-NEXT: movi16 a0, 1 927; CHECK-DF-NEXT: rts16 928; CHECK-DF-NEXT: .LBB21_2: # %label2 929; CHECK-DF-NEXT: movi16 a0, 0 930; CHECK-DF-NEXT: rts16 931; 932; CHECK-DF2-LABEL: brRR_oge: 933; CHECK-DF2: # %bb.0: # %entry 934; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0 935; CHECK-DF2-NEXT: bf32 .LBB21_2 936; CHECK-DF2-NEXT: # %bb.1: # %label1 937; CHECK-DF2-NEXT: movi16 a0, 1 938; CHECK-DF2-NEXT: rts16 939; CHECK-DF2-NEXT: .LBB21_2: # %label2 940; CHECK-DF2-NEXT: movi16 a0, 0 941; CHECK-DF2-NEXT: rts16 942entry: 943 %fcmp = fcmp oge double %y, %x 944 br i1 %fcmp, label %label1, label %label2 945label1: 946 ret i32 1 947label2: 948 ret i32 0 949} 950 951define i32 @brRI_oge(double %x) { 952; 953; 954; CHECK-DF-LABEL: brRI_oge: 955; CHECK-DF: # %bb.0: # %entry 956; CHECK-DF-NEXT: grs32 a0, .LCPI22_0 957; CHECK-DF-NEXT: fldd vr1, (a0, 0) 958; CHECK-DF-NEXT: fcmphsd vr0, vr1 959; CHECK-DF-NEXT: bf32 .LBB22_2 960; CHECK-DF-NEXT: # %bb.1: # %label1 961; CHECK-DF-NEXT: movi16 a0, 1 962; CHECK-DF-NEXT: rts16 963; CHECK-DF-NEXT: .LBB22_2: # %label2 964; CHECK-DF-NEXT: movi16 a0, 0 965; CHECK-DF-NEXT: rts16 966; CHECK-DF-NEXT: .p2align 1 967; CHECK-DF-NEXT: # %bb.3: 968; CHECK-DF-NEXT: .p2align 2, 0x0 969; CHECK-DF-NEXT: .LCPI22_0: 970; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 971; 972; CHECK-DF2-LABEL: brRI_oge: 973; CHECK-DF2: # %bb.0: # %entry 974; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI22_0] 975; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1 976; CHECK-DF2-NEXT: bf32 .LBB22_2 977; CHECK-DF2-NEXT: # %bb.1: # %label1 978; CHECK-DF2-NEXT: movi16 a0, 1 979; CHECK-DF2-NEXT: rts16 980; CHECK-DF2-NEXT: .LBB22_2: # %label2 981; CHECK-DF2-NEXT: movi16 a0, 0 982; CHECK-DF2-NEXT: rts16 983; CHECK-DF2-NEXT: .p2align 1 984; CHECK-DF2-NEXT: # %bb.3: 985; CHECK-DF2-NEXT: .p2align 2, 0x0 986; CHECK-DF2-NEXT: .LCPI22_0: 987; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 988entry: 989 %fcmp = fcmp oge double %x, 10.0 990 br i1 %fcmp, label %label1, label %label2 991label1: 992 ret i32 1 993label2: 994 ret i32 0 995} 996 997define i32 @brR0_oge(double %x) { 998; 999; 1000; CHECK-DF-LABEL: brR0_oge: 1001; CHECK-DF: # %bb.0: # %entry 1002; CHECK-DF-NEXT: grs32 a0, .LCPI23_0 1003; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1004; CHECK-DF-NEXT: fcmphsd vr0, vr1 1005; CHECK-DF-NEXT: bf32 .LBB23_2 1006; CHECK-DF-NEXT: # %bb.1: # %label1 1007; CHECK-DF-NEXT: movi16 a0, 1 1008; CHECK-DF-NEXT: rts16 1009; CHECK-DF-NEXT: .LBB23_2: # %label2 1010; CHECK-DF-NEXT: movi16 a0, 0 1011; CHECK-DF-NEXT: rts16 1012; CHECK-DF-NEXT: .p2align 1 1013; CHECK-DF-NEXT: # %bb.3: 1014; CHECK-DF-NEXT: .p2align 2, 0x0 1015; CHECK-DF-NEXT: .LCPI23_0: 1016; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 1017; 1018; CHECK-DF2-LABEL: brR0_oge: 1019; CHECK-DF2: # %bb.0: # %entry 1020; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI23_0] 1021; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1 1022; CHECK-DF2-NEXT: bf32 .LBB23_2 1023; CHECK-DF2-NEXT: # %bb.1: # %label1 1024; CHECK-DF2-NEXT: movi16 a0, 1 1025; CHECK-DF2-NEXT: rts16 1026; CHECK-DF2-NEXT: .LBB23_2: # %label2 1027; CHECK-DF2-NEXT: movi16 a0, 0 1028; CHECK-DF2-NEXT: rts16 1029; CHECK-DF2-NEXT: .p2align 1 1030; CHECK-DF2-NEXT: # %bb.3: 1031; CHECK-DF2-NEXT: .p2align 2, 0x0 1032; CHECK-DF2-NEXT: .LCPI23_0: 1033; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 1034entry: 1035 %fcmp = fcmp oge double %x, 0.0 1036 br i1 %fcmp, label %label1, label %label2 1037label1: 1038 ret i32 1 1039label2: 1040 ret i32 0 1041} 1042 1043;SLT 1044define i32 @brRR_olt(double %x, double %y) { 1045; 1046; 1047; CHECK-DF-LABEL: brRR_olt: 1048; CHECK-DF: # %bb.0: # %entry 1049; CHECK-DF-NEXT: fcmpltd vr1, vr0 1050; CHECK-DF-NEXT: bf32 .LBB24_2 1051; CHECK-DF-NEXT: # %bb.1: # %label1 1052; CHECK-DF-NEXT: movi16 a0, 1 1053; CHECK-DF-NEXT: rts16 1054; CHECK-DF-NEXT: .LBB24_2: # %label2 1055; CHECK-DF-NEXT: movi16 a0, 0 1056; CHECK-DF-NEXT: rts16 1057; 1058; CHECK-DF2-LABEL: brRR_olt: 1059; CHECK-DF2: # %bb.0: # %entry 1060; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0 1061; CHECK-DF2-NEXT: bf32 .LBB24_2 1062; CHECK-DF2-NEXT: # %bb.1: # %label1 1063; CHECK-DF2-NEXT: movi16 a0, 1 1064; CHECK-DF2-NEXT: rts16 1065; CHECK-DF2-NEXT: .LBB24_2: # %label2 1066; CHECK-DF2-NEXT: movi16 a0, 0 1067; CHECK-DF2-NEXT: rts16 1068entry: 1069 %fcmp = fcmp olt double %y, %x 1070 br i1 %fcmp, label %label1, label %label2 1071label1: 1072 ret i32 1 1073label2: 1074 ret i32 0 1075} 1076 1077define i32 @brRI_olt(double %x) { 1078; 1079; 1080; CHECK-DF-LABEL: brRI_olt: 1081; CHECK-DF: # %bb.0: # %entry 1082; CHECK-DF-NEXT: grs32 a0, .LCPI25_0 1083; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1084; CHECK-DF-NEXT: fcmpltd vr0, vr1 1085; CHECK-DF-NEXT: bf32 .LBB25_2 1086; CHECK-DF-NEXT: # %bb.1: # %label1 1087; CHECK-DF-NEXT: movi16 a0, 1 1088; CHECK-DF-NEXT: rts16 1089; CHECK-DF-NEXT: .LBB25_2: # %label2 1090; CHECK-DF-NEXT: movi16 a0, 0 1091; CHECK-DF-NEXT: rts16 1092; CHECK-DF-NEXT: .p2align 1 1093; CHECK-DF-NEXT: # %bb.3: 1094; CHECK-DF-NEXT: .p2align 2, 0x0 1095; CHECK-DF-NEXT: .LCPI25_0: 1096; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 1097; 1098; CHECK-DF2-LABEL: brRI_olt: 1099; CHECK-DF2: # %bb.0: # %entry 1100; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI25_0] 1101; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1 1102; CHECK-DF2-NEXT: bf32 .LBB25_2 1103; CHECK-DF2-NEXT: # %bb.1: # %label1 1104; CHECK-DF2-NEXT: movi16 a0, 1 1105; CHECK-DF2-NEXT: rts16 1106; CHECK-DF2-NEXT: .LBB25_2: # %label2 1107; CHECK-DF2-NEXT: movi16 a0, 0 1108; CHECK-DF2-NEXT: rts16 1109; CHECK-DF2-NEXT: .p2align 1 1110; CHECK-DF2-NEXT: # %bb.3: 1111; CHECK-DF2-NEXT: .p2align 2, 0x0 1112; CHECK-DF2-NEXT: .LCPI25_0: 1113; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 1114entry: 1115 %fcmp = fcmp olt double %x, 10.0 1116 br i1 %fcmp, label %label1, label %label2 1117label1: 1118 ret i32 1 1119label2: 1120 ret i32 0 1121} 1122 1123define i32 @brR0_olt(double %x) { 1124; 1125; 1126; CHECK-DF-LABEL: brR0_olt: 1127; CHECK-DF: # %bb.0: # %entry 1128; CHECK-DF-NEXT: grs32 a0, .LCPI26_0 1129; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1130; CHECK-DF-NEXT: fcmpltd vr0, vr1 1131; CHECK-DF-NEXT: bf32 .LBB26_2 1132; CHECK-DF-NEXT: # %bb.1: # %label1 1133; CHECK-DF-NEXT: movi16 a0, 1 1134; CHECK-DF-NEXT: rts16 1135; CHECK-DF-NEXT: .LBB26_2: # %label2 1136; CHECK-DF-NEXT: movi16 a0, 0 1137; CHECK-DF-NEXT: rts16 1138; CHECK-DF-NEXT: .p2align 1 1139; CHECK-DF-NEXT: # %bb.3: 1140; CHECK-DF-NEXT: .p2align 2, 0x0 1141; CHECK-DF-NEXT: .LCPI26_0: 1142; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 1143; 1144; CHECK-DF2-LABEL: brR0_olt: 1145; CHECK-DF2: # %bb.0: # %entry 1146; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI26_0] 1147; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1 1148; CHECK-DF2-NEXT: bf32 .LBB26_2 1149; CHECK-DF2-NEXT: # %bb.1: # %label1 1150; CHECK-DF2-NEXT: movi16 a0, 1 1151; CHECK-DF2-NEXT: rts16 1152; CHECK-DF2-NEXT: .LBB26_2: # %label2 1153; CHECK-DF2-NEXT: movi16 a0, 0 1154; CHECK-DF2-NEXT: rts16 1155; CHECK-DF2-NEXT: .p2align 1 1156; CHECK-DF2-NEXT: # %bb.3: 1157; CHECK-DF2-NEXT: .p2align 2, 0x0 1158; CHECK-DF2-NEXT: .LCPI26_0: 1159; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 1160entry: 1161 %fcmp = fcmp olt double %x, 0.0 1162 br i1 %fcmp, label %label1, label %label2 1163label1: 1164 ret i32 1 1165label2: 1166 ret i32 0 1167} 1168 1169;SLE 1170define i32 @brRR_ole(double %x, double %y) { 1171; 1172; 1173; CHECK-DF-LABEL: brRR_ole: 1174; CHECK-DF: # %bb.0: # %entry 1175; CHECK-DF-NEXT: fcmphsd vr0, vr1 1176; CHECK-DF-NEXT: bf32 .LBB27_2 1177; CHECK-DF-NEXT: # %bb.1: # %label1 1178; CHECK-DF-NEXT: movi16 a0, 1 1179; CHECK-DF-NEXT: rts16 1180; CHECK-DF-NEXT: .LBB27_2: # %label2 1181; CHECK-DF-NEXT: movi16 a0, 0 1182; CHECK-DF-NEXT: rts16 1183; 1184; CHECK-DF2-LABEL: brRR_ole: 1185; CHECK-DF2: # %bb.0: # %entry 1186; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1 1187; CHECK-DF2-NEXT: bf32 .LBB27_2 1188; CHECK-DF2-NEXT: # %bb.1: # %label1 1189; CHECK-DF2-NEXT: movi16 a0, 1 1190; CHECK-DF2-NEXT: rts16 1191; CHECK-DF2-NEXT: .LBB27_2: # %label2 1192; CHECK-DF2-NEXT: movi16 a0, 0 1193; CHECK-DF2-NEXT: rts16 1194entry: 1195 %fcmp = fcmp ole double %y, %x 1196 br i1 %fcmp, label %label1, label %label2 1197label1: 1198 ret i32 1 1199label2: 1200 ret i32 0 1201} 1202 1203define i32 @brRI_ole(double %x) { 1204; 1205; 1206; CHECK-DF-LABEL: brRI_ole: 1207; CHECK-DF: # %bb.0: # %entry 1208; CHECK-DF-NEXT: grs32 a0, .LCPI28_0 1209; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1210; CHECK-DF-NEXT: fcmphsd vr1, vr0 1211; CHECK-DF-NEXT: bf32 .LBB28_2 1212; CHECK-DF-NEXT: # %bb.1: # %label1 1213; CHECK-DF-NEXT: movi16 a0, 1 1214; CHECK-DF-NEXT: rts16 1215; CHECK-DF-NEXT: .LBB28_2: # %label2 1216; CHECK-DF-NEXT: movi16 a0, 0 1217; CHECK-DF-NEXT: rts16 1218; CHECK-DF-NEXT: .p2align 1 1219; CHECK-DF-NEXT: # %bb.3: 1220; CHECK-DF-NEXT: .p2align 2, 0x0 1221; CHECK-DF-NEXT: .LCPI28_0: 1222; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 1223; 1224; CHECK-DF2-LABEL: brRI_ole: 1225; CHECK-DF2: # %bb.0: # %entry 1226; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI28_0] 1227; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0 1228; CHECK-DF2-NEXT: bf32 .LBB28_2 1229; CHECK-DF2-NEXT: # %bb.1: # %label1 1230; CHECK-DF2-NEXT: movi16 a0, 1 1231; CHECK-DF2-NEXT: rts16 1232; CHECK-DF2-NEXT: .LBB28_2: # %label2 1233; CHECK-DF2-NEXT: movi16 a0, 0 1234; CHECK-DF2-NEXT: rts16 1235; CHECK-DF2-NEXT: .p2align 1 1236; CHECK-DF2-NEXT: # %bb.3: 1237; CHECK-DF2-NEXT: .p2align 2, 0x0 1238; CHECK-DF2-NEXT: .LCPI28_0: 1239; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 1240entry: 1241 %fcmp = fcmp ole double %x, 10.0 1242 br i1 %fcmp, label %label1, label %label2 1243label1: 1244 ret i32 1 1245label2: 1246 ret i32 0 1247} 1248 1249define i32 @brR0_ole(double %x) { 1250; 1251; 1252; CHECK-DF-LABEL: brR0_ole: 1253; CHECK-DF: # %bb.0: # %entry 1254; CHECK-DF-NEXT: grs32 a0, .LCPI29_0 1255; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1256; CHECK-DF-NEXT: fcmphsd vr1, vr0 1257; CHECK-DF-NEXT: bf32 .LBB29_2 1258; CHECK-DF-NEXT: # %bb.1: # %label1 1259; CHECK-DF-NEXT: movi16 a0, 1 1260; CHECK-DF-NEXT: rts16 1261; CHECK-DF-NEXT: .LBB29_2: # %label2 1262; CHECK-DF-NEXT: movi16 a0, 0 1263; CHECK-DF-NEXT: rts16 1264; CHECK-DF-NEXT: .p2align 1 1265; CHECK-DF-NEXT: # %bb.3: 1266; CHECK-DF-NEXT: .p2align 2, 0x0 1267; CHECK-DF-NEXT: .LCPI29_0: 1268; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 1269; 1270; CHECK-DF2-LABEL: brR0_ole: 1271; CHECK-DF2: # %bb.0: # %entry 1272; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI29_0] 1273; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0 1274; CHECK-DF2-NEXT: bf32 .LBB29_2 1275; CHECK-DF2-NEXT: # %bb.1: # %label1 1276; CHECK-DF2-NEXT: movi16 a0, 1 1277; CHECK-DF2-NEXT: rts16 1278; CHECK-DF2-NEXT: .LBB29_2: # %label2 1279; CHECK-DF2-NEXT: movi16 a0, 0 1280; CHECK-DF2-NEXT: rts16 1281; CHECK-DF2-NEXT: .p2align 1 1282; CHECK-DF2-NEXT: # %bb.3: 1283; CHECK-DF2-NEXT: .p2align 2, 0x0 1284; CHECK-DF2-NEXT: .LCPI29_0: 1285; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 1286entry: 1287 %fcmp = fcmp ole double %x, 0.0 1288 br i1 %fcmp, label %label1, label %label2 1289label1: 1290 ret i32 1 1291label2: 1292 ret i32 0 1293} 1294 1295;False 1296define i32 @brRR_false(double %x, double %y) { 1297; 1298; 1299; CHECK-DF-LABEL: brRR_false: 1300; CHECK-DF: # %bb.0: # %entry 1301; CHECK-DF-NEXT: movi16 a0, 1 1302; CHECK-DF-NEXT: btsti16 a0, 0 1303; CHECK-DF-NEXT: bt32 .LBB30_2 1304; CHECK-DF-NEXT: # %bb.1: # %label1 1305; CHECK-DF-NEXT: rts16 1306; CHECK-DF-NEXT: .LBB30_2: # %label2 1307; CHECK-DF-NEXT: movi16 a0, 0 1308; CHECK-DF-NEXT: rts16 1309; 1310; CHECK-DF2-LABEL: brRR_false: 1311; CHECK-DF2: # %bb.0: # %entry 1312; CHECK-DF2-NEXT: movi16 a0, 1 1313; CHECK-DF2-NEXT: btsti16 a0, 0 1314; CHECK-DF2-NEXT: bt32 .LBB30_2 1315; CHECK-DF2-NEXT: # %bb.1: # %label1 1316; CHECK-DF2-NEXT: rts16 1317; CHECK-DF2-NEXT: .LBB30_2: # %label2 1318; CHECK-DF2-NEXT: movi16 a0, 0 1319; CHECK-DF2-NEXT: rts16 1320entry: 1321 %fcmp = fcmp false double %y, %x 1322 br i1 %fcmp, label %label1, label %label2 1323label1: 1324 ret i32 1 1325label2: 1326 ret i32 0 1327} 1328 1329define i32 @brRI_false(double %x) { 1330; 1331; 1332; CHECK-DF-LABEL: brRI_false: 1333; CHECK-DF: # %bb.0: # %entry 1334; CHECK-DF-NEXT: movi16 a0, 1 1335; CHECK-DF-NEXT: btsti16 a0, 0 1336; CHECK-DF-NEXT: bt32 .LBB31_2 1337; CHECK-DF-NEXT: # %bb.1: # %label1 1338; CHECK-DF-NEXT: rts16 1339; CHECK-DF-NEXT: .LBB31_2: # %label2 1340; CHECK-DF-NEXT: movi16 a0, 0 1341; CHECK-DF-NEXT: rts16 1342; 1343; CHECK-DF2-LABEL: brRI_false: 1344; CHECK-DF2: # %bb.0: # %entry 1345; CHECK-DF2-NEXT: movi16 a0, 1 1346; CHECK-DF2-NEXT: btsti16 a0, 0 1347; CHECK-DF2-NEXT: bt32 .LBB31_2 1348; CHECK-DF2-NEXT: # %bb.1: # %label1 1349; CHECK-DF2-NEXT: rts16 1350; CHECK-DF2-NEXT: .LBB31_2: # %label2 1351; CHECK-DF2-NEXT: movi16 a0, 0 1352; CHECK-DF2-NEXT: rts16 1353entry: 1354 %fcmp = fcmp false double %x, 10.0 1355 br i1 %fcmp, label %label1, label %label2 1356label1: 1357 ret i32 1 1358label2: 1359 ret i32 0 1360} 1361 1362define i32 @brR0_false(double %x) { 1363; 1364; 1365; CHECK-DF-LABEL: brR0_false: 1366; CHECK-DF: # %bb.0: # %entry 1367; CHECK-DF-NEXT: movi16 a0, 1 1368; CHECK-DF-NEXT: btsti16 a0, 0 1369; CHECK-DF-NEXT: bt32 .LBB32_2 1370; CHECK-DF-NEXT: # %bb.1: # %label1 1371; CHECK-DF-NEXT: rts16 1372; CHECK-DF-NEXT: .LBB32_2: # %label2 1373; CHECK-DF-NEXT: movi16 a0, 0 1374; CHECK-DF-NEXT: rts16 1375; 1376; CHECK-DF2-LABEL: brR0_false: 1377; CHECK-DF2: # %bb.0: # %entry 1378; CHECK-DF2-NEXT: movi16 a0, 1 1379; CHECK-DF2-NEXT: btsti16 a0, 0 1380; CHECK-DF2-NEXT: bt32 .LBB32_2 1381; CHECK-DF2-NEXT: # %bb.1: # %label1 1382; CHECK-DF2-NEXT: rts16 1383; CHECK-DF2-NEXT: .LBB32_2: # %label2 1384; CHECK-DF2-NEXT: movi16 a0, 0 1385; CHECK-DF2-NEXT: rts16 1386entry: 1387 %fcmp = fcmp false double %x, 0.0 1388 br i1 %fcmp, label %label1, label %label2 1389label1: 1390 ret i32 1 1391label2: 1392 ret i32 0 1393} 1394 1395 1396;ORD 1397define i32 @brRR_ord(double %x, double %y) { 1398; 1399; 1400; CHECK-DF-LABEL: brRR_ord: 1401; CHECK-DF: # %bb.0: # %entry 1402; CHECK-DF-NEXT: fcmpuod vr1, vr0 1403; CHECK-DF-NEXT: bt32 .LBB33_2 1404; CHECK-DF-NEXT: # %bb.1: # %label1 1405; CHECK-DF-NEXT: movi16 a0, 1 1406; CHECK-DF-NEXT: rts16 1407; CHECK-DF-NEXT: .LBB33_2: # %label2 1408; CHECK-DF-NEXT: movi16 a0, 0 1409; CHECK-DF-NEXT: rts16 1410; 1411; CHECK-DF2-LABEL: brRR_ord: 1412; CHECK-DF2: # %bb.0: # %entry 1413; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0 1414; CHECK-DF2-NEXT: bt32 .LBB33_2 1415; CHECK-DF2-NEXT: # %bb.1: # %label1 1416; CHECK-DF2-NEXT: movi16 a0, 1 1417; CHECK-DF2-NEXT: rts16 1418; CHECK-DF2-NEXT: .LBB33_2: # %label2 1419; CHECK-DF2-NEXT: movi16 a0, 0 1420; CHECK-DF2-NEXT: rts16 1421entry: 1422 %fcmp = fcmp ord double %y, %x 1423 br i1 %fcmp, label %label1, label %label2 1424label1: 1425 ret i32 1 1426label2: 1427 ret i32 0 1428} 1429 1430define i32 @brRI_ord(double %x) { 1431; 1432; 1433; CHECK-DF-LABEL: brRI_ord: 1434; CHECK-DF: # %bb.0: # %entry 1435; CHECK-DF-NEXT: fcmpuod vr0, vr0 1436; CHECK-DF-NEXT: bt32 .LBB34_2 1437; CHECK-DF-NEXT: # %bb.1: # %label1 1438; CHECK-DF-NEXT: movi16 a0, 1 1439; CHECK-DF-NEXT: rts16 1440; CHECK-DF-NEXT: .LBB34_2: # %label2 1441; CHECK-DF-NEXT: movi16 a0, 0 1442; CHECK-DF-NEXT: rts16 1443; 1444; CHECK-DF2-LABEL: brRI_ord: 1445; CHECK-DF2: # %bb.0: # %entry 1446; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0 1447; CHECK-DF2-NEXT: bt32 .LBB34_2 1448; CHECK-DF2-NEXT: # %bb.1: # %label1 1449; CHECK-DF2-NEXT: movi16 a0, 1 1450; CHECK-DF2-NEXT: rts16 1451; CHECK-DF2-NEXT: .LBB34_2: # %label2 1452; CHECK-DF2-NEXT: movi16 a0, 0 1453; CHECK-DF2-NEXT: rts16 1454entry: 1455 %fcmp = fcmp ord double %x, 10.0 1456 br i1 %fcmp, label %label1, label %label2 1457label1: 1458 ret i32 1 1459label2: 1460 ret i32 0 1461} 1462 1463define i32 @brR0_ord(double %x) { 1464; 1465; 1466; CHECK-DF-LABEL: brR0_ord: 1467; CHECK-DF: # %bb.0: # %entry 1468; CHECK-DF-NEXT: fcmpuod vr0, vr0 1469; CHECK-DF-NEXT: bt32 .LBB35_2 1470; CHECK-DF-NEXT: # %bb.1: # %label1 1471; CHECK-DF-NEXT: movi16 a0, 1 1472; CHECK-DF-NEXT: rts16 1473; CHECK-DF-NEXT: .LBB35_2: # %label2 1474; CHECK-DF-NEXT: movi16 a0, 0 1475; CHECK-DF-NEXT: rts16 1476; 1477; CHECK-DF2-LABEL: brR0_ord: 1478; CHECK-DF2: # %bb.0: # %entry 1479; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0 1480; CHECK-DF2-NEXT: bt32 .LBB35_2 1481; CHECK-DF2-NEXT: # %bb.1: # %label1 1482; CHECK-DF2-NEXT: movi16 a0, 1 1483; CHECK-DF2-NEXT: rts16 1484; CHECK-DF2-NEXT: .LBB35_2: # %label2 1485; CHECK-DF2-NEXT: movi16 a0, 0 1486; CHECK-DF2-NEXT: rts16 1487entry: 1488 %fcmp = fcmp ord double %x, 0.0 1489 br i1 %fcmp, label %label1, label %label2 1490label1: 1491 ret i32 1 1492label2: 1493 ret i32 0 1494} 1495 1496 1497;UEQ 1498define i32 @brRR_ueq(double %x, double %y) { 1499; 1500; 1501; CHECK-DF-LABEL: brRR_ueq: 1502; CHECK-DF: # %bb.0: # %entry 1503; CHECK-DF-NEXT: fcmpuod vr1, vr0 1504; CHECK-DF-NEXT: mvcv16 a0 1505; CHECK-DF-NEXT: fcmpned vr1, vr0 1506; CHECK-DF-NEXT: mvc32 a1 1507; CHECK-DF-NEXT: and16 a0, a1 1508; CHECK-DF-NEXT: btsti16 a0, 0 1509; CHECK-DF-NEXT: bf32 .LBB36_2 1510; CHECK-DF-NEXT: # %bb.1: # %label2 1511; CHECK-DF-NEXT: movi16 a0, 0 1512; CHECK-DF-NEXT: rts16 1513; CHECK-DF-NEXT: .LBB36_2: # %label1 1514; CHECK-DF-NEXT: movi16 a0, 1 1515; CHECK-DF-NEXT: rts16 1516; 1517; CHECK-DF2-LABEL: brRR_ueq: 1518; CHECK-DF2: # %bb.0: # %entry 1519; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0 1520; CHECK-DF2-NEXT: mvcv16 a0 1521; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0 1522; CHECK-DF2-NEXT: mvc32 a1 1523; CHECK-DF2-NEXT: and16 a0, a1 1524; CHECK-DF2-NEXT: btsti16 a0, 0 1525; CHECK-DF2-NEXT: bf32 .LBB36_2 1526; CHECK-DF2-NEXT: # %bb.1: # %label2 1527; CHECK-DF2-NEXT: movi16 a0, 0 1528; CHECK-DF2-NEXT: rts16 1529; CHECK-DF2-NEXT: .LBB36_2: # %label1 1530; CHECK-DF2-NEXT: movi16 a0, 1 1531; CHECK-DF2-NEXT: rts16 1532entry: 1533 %fcmp = fcmp ueq double %y, %x 1534 br i1 %fcmp, label %label1, label %label2 1535label1: 1536 ret i32 1 1537label2: 1538 ret i32 0 1539} 1540 1541define i32 @brRI_ueq(double %x) { 1542; 1543; 1544; CHECK-DF-LABEL: brRI_ueq: 1545; CHECK-DF: # %bb.0: # %entry 1546; CHECK-DF-NEXT: grs32 a0, .LCPI37_0 1547; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1548; CHECK-DF-NEXT: fcmpuod vr0, vr1 1549; CHECK-DF-NEXT: mvcv16 a0 1550; CHECK-DF-NEXT: fcmpned vr0, vr1 1551; CHECK-DF-NEXT: mvc32 a1 1552; CHECK-DF-NEXT: and16 a0, a1 1553; CHECK-DF-NEXT: btsti16 a0, 0 1554; CHECK-DF-NEXT: bf32 .LBB37_2 1555; CHECK-DF-NEXT: # %bb.1: # %label2 1556; CHECK-DF-NEXT: movi16 a0, 0 1557; CHECK-DF-NEXT: rts16 1558; CHECK-DF-NEXT: .LBB37_2: # %label1 1559; CHECK-DF-NEXT: movi16 a0, 1 1560; CHECK-DF-NEXT: rts16 1561; CHECK-DF-NEXT: .p2align 1 1562; CHECK-DF-NEXT: # %bb.3: 1563; CHECK-DF-NEXT: .p2align 2, 0x0 1564; CHECK-DF-NEXT: .LCPI37_0: 1565; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 1566; 1567; CHECK-DF2-LABEL: brRI_ueq: 1568; CHECK-DF2: # %bb.0: # %entry 1569; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI37_0] 1570; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1 1571; CHECK-DF2-NEXT: mvcv16 a0 1572; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 1573; CHECK-DF2-NEXT: mvc32 a1 1574; CHECK-DF2-NEXT: and16 a0, a1 1575; CHECK-DF2-NEXT: btsti16 a0, 0 1576; CHECK-DF2-NEXT: bf32 .LBB37_2 1577; CHECK-DF2-NEXT: # %bb.1: # %label2 1578; CHECK-DF2-NEXT: movi16 a0, 0 1579; CHECK-DF2-NEXT: rts16 1580; CHECK-DF2-NEXT: .LBB37_2: # %label1 1581; CHECK-DF2-NEXT: movi16 a0, 1 1582; CHECK-DF2-NEXT: rts16 1583; CHECK-DF2-NEXT: .p2align 1 1584; CHECK-DF2-NEXT: # %bb.3: 1585; CHECK-DF2-NEXT: .p2align 2, 0x0 1586; CHECK-DF2-NEXT: .LCPI37_0: 1587; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 1588entry: 1589 %fcmp = fcmp ueq double %x, 10.0 1590 br i1 %fcmp, label %label1, label %label2 1591label1: 1592 ret i32 1 1593label2: 1594 ret i32 0 1595} 1596 1597define i32 @brR0_ueq(double %x) { 1598; 1599; 1600; CHECK-DF-LABEL: brR0_ueq: 1601; CHECK-DF: # %bb.0: # %entry 1602; CHECK-DF-NEXT: grs32 a0, .LCPI38_0 1603; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1604; CHECK-DF-NEXT: fcmpuod vr0, vr1 1605; CHECK-DF-NEXT: mvcv16 a0 1606; CHECK-DF-NEXT: fcmpned vr0, vr1 1607; CHECK-DF-NEXT: mvc32 a1 1608; CHECK-DF-NEXT: and16 a0, a1 1609; CHECK-DF-NEXT: btsti16 a0, 0 1610; CHECK-DF-NEXT: bf32 .LBB38_2 1611; CHECK-DF-NEXT: # %bb.1: # %label2 1612; CHECK-DF-NEXT: movi16 a0, 0 1613; CHECK-DF-NEXT: rts16 1614; CHECK-DF-NEXT: .LBB38_2: # %label1 1615; CHECK-DF-NEXT: movi16 a0, 1 1616; CHECK-DF-NEXT: rts16 1617; CHECK-DF-NEXT: .p2align 1 1618; CHECK-DF-NEXT: # %bb.3: 1619; CHECK-DF-NEXT: .p2align 2, 0x0 1620; CHECK-DF-NEXT: .LCPI38_0: 1621; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 1622; 1623; CHECK-DF2-LABEL: brR0_ueq: 1624; CHECK-DF2: # %bb.0: # %entry 1625; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI38_0] 1626; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1 1627; CHECK-DF2-NEXT: mvcv16 a0 1628; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 1629; CHECK-DF2-NEXT: mvc32 a1 1630; CHECK-DF2-NEXT: and16 a0, a1 1631; CHECK-DF2-NEXT: btsti16 a0, 0 1632; CHECK-DF2-NEXT: bf32 .LBB38_2 1633; CHECK-DF2-NEXT: # %bb.1: # %label2 1634; CHECK-DF2-NEXT: movi16 a0, 0 1635; CHECK-DF2-NEXT: rts16 1636; CHECK-DF2-NEXT: .LBB38_2: # %label1 1637; CHECK-DF2-NEXT: movi16 a0, 1 1638; CHECK-DF2-NEXT: rts16 1639; CHECK-DF2-NEXT: .p2align 1 1640; CHECK-DF2-NEXT: # %bb.3: 1641; CHECK-DF2-NEXT: .p2align 2, 0x0 1642; CHECK-DF2-NEXT: .LCPI38_0: 1643; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 1644entry: 1645 %fcmp = fcmp ueq double %x, 0.0 1646 br i1 %fcmp, label %label1, label %label2 1647label1: 1648 ret i32 1 1649label2: 1650 ret i32 0 1651} 1652 1653;UNE 1654define i32 @brRR_une(double %x, double %y) { 1655; 1656; 1657; CHECK-DF-LABEL: brRR_une: 1658; CHECK-DF: # %bb.0: # %entry 1659; CHECK-DF-NEXT: fcmpned vr1, vr0 1660; CHECK-DF-NEXT: bf32 .LBB39_2 1661; CHECK-DF-NEXT: # %bb.1: # %label1 1662; CHECK-DF-NEXT: movi16 a0, 1 1663; CHECK-DF-NEXT: rts16 1664; CHECK-DF-NEXT: .LBB39_2: # %label2 1665; CHECK-DF-NEXT: movi16 a0, 0 1666; CHECK-DF-NEXT: rts16 1667; 1668; CHECK-DF2-LABEL: brRR_une: 1669; CHECK-DF2: # %bb.0: # %entry 1670; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0 1671; CHECK-DF2-NEXT: bf32 .LBB39_2 1672; CHECK-DF2-NEXT: # %bb.1: # %label1 1673; CHECK-DF2-NEXT: movi16 a0, 1 1674; CHECK-DF2-NEXT: rts16 1675; CHECK-DF2-NEXT: .LBB39_2: # %label2 1676; CHECK-DF2-NEXT: movi16 a0, 0 1677; CHECK-DF2-NEXT: rts16 1678entry: 1679 %fcmp = fcmp une double %y, %x 1680 br i1 %fcmp, label %label1, label %label2 1681label1: 1682 ret i32 1 1683label2: 1684 ret i32 0 1685} 1686 1687define i32 @brRI_une(double %x) { 1688; 1689; 1690; CHECK-DF-LABEL: brRI_une: 1691; CHECK-DF: # %bb.0: # %entry 1692; CHECK-DF-NEXT: grs32 a0, .LCPI40_0 1693; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1694; CHECK-DF-NEXT: fcmpned vr0, vr1 1695; CHECK-DF-NEXT: bf32 .LBB40_2 1696; CHECK-DF-NEXT: # %bb.1: # %label1 1697; CHECK-DF-NEXT: movi16 a0, 1 1698; CHECK-DF-NEXT: rts16 1699; CHECK-DF-NEXT: .LBB40_2: # %label2 1700; CHECK-DF-NEXT: movi16 a0, 0 1701; CHECK-DF-NEXT: rts16 1702; CHECK-DF-NEXT: .p2align 1 1703; CHECK-DF-NEXT: # %bb.3: 1704; CHECK-DF-NEXT: .p2align 2, 0x0 1705; CHECK-DF-NEXT: .LCPI40_0: 1706; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10 1707; 1708; CHECK-DF2-LABEL: brRI_une: 1709; CHECK-DF2: # %bb.0: # %entry 1710; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI40_0] 1711; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 1712; CHECK-DF2-NEXT: bf32 .LBB40_2 1713; CHECK-DF2-NEXT: # %bb.1: # %label1 1714; CHECK-DF2-NEXT: movi16 a0, 1 1715; CHECK-DF2-NEXT: rts16 1716; CHECK-DF2-NEXT: .LBB40_2: # %label2 1717; CHECK-DF2-NEXT: movi16 a0, 0 1718; CHECK-DF2-NEXT: rts16 1719; CHECK-DF2-NEXT: .p2align 1 1720; CHECK-DF2-NEXT: # %bb.3: 1721; CHECK-DF2-NEXT: .p2align 2, 0x0 1722; CHECK-DF2-NEXT: .LCPI40_0: 1723; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10 1724entry: 1725 %fcmp = fcmp une double %x, 10.0 1726 br i1 %fcmp, label %label1, label %label2 1727label1: 1728 ret i32 1 1729label2: 1730 ret i32 0 1731} 1732 1733define i32 @brR0_une(double %x) { 1734; 1735; 1736; CHECK-DF-LABEL: brR0_une: 1737; CHECK-DF: # %bb.0: # %entry 1738; CHECK-DF-NEXT: grs32 a0, .LCPI41_0 1739; CHECK-DF-NEXT: fldd vr1, (a0, 0) 1740; CHECK-DF-NEXT: fcmpned vr0, vr1 1741; CHECK-DF-NEXT: bf32 .LBB41_2 1742; CHECK-DF-NEXT: # %bb.1: # %label1 1743; CHECK-DF-NEXT: movi16 a0, 1 1744; CHECK-DF-NEXT: rts16 1745; CHECK-DF-NEXT: .LBB41_2: # %label2 1746; CHECK-DF-NEXT: movi16 a0, 0 1747; CHECK-DF-NEXT: rts16 1748; CHECK-DF-NEXT: .p2align 1 1749; CHECK-DF-NEXT: # %bb.3: 1750; CHECK-DF-NEXT: .p2align 2, 0x0 1751; CHECK-DF-NEXT: .LCPI41_0: 1752; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0 1753; 1754; CHECK-DF2-LABEL: brR0_une: 1755; CHECK-DF2: # %bb.0: # %entry 1756; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI41_0] 1757; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1 1758; CHECK-DF2-NEXT: bf32 .LBB41_2 1759; CHECK-DF2-NEXT: # %bb.1: # %label1 1760; CHECK-DF2-NEXT: movi16 a0, 1 1761; CHECK-DF2-NEXT: rts16 1762; CHECK-DF2-NEXT: .LBB41_2: # %label2 1763; CHECK-DF2-NEXT: movi16 a0, 0 1764; CHECK-DF2-NEXT: rts16 1765; CHECK-DF2-NEXT: .p2align 1 1766; CHECK-DF2-NEXT: # %bb.3: 1767; CHECK-DF2-NEXT: .p2align 2, 0x0 1768; CHECK-DF2-NEXT: .LCPI41_0: 1769; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0 1770entry: 1771 %fcmp = fcmp une double %x, 0.0 1772 br i1 %fcmp, label %label1, label %label2 1773label1: 1774 ret i32 1 1775label2: 1776 ret i32 0 1777} 1778 1779;UNO 1780define i32 @brRR_uno(double %x, double %y) { 1781; 1782; 1783; CHECK-DF-LABEL: brRR_uno: 1784; CHECK-DF: # %bb.0: # %entry 1785; CHECK-DF-NEXT: fcmpuod vr1, vr0 1786; CHECK-DF-NEXT: bt32 .LBB42_2 1787; CHECK-DF-NEXT: # %bb.1: # %label2 1788; CHECK-DF-NEXT: movi16 a0, 0 1789; CHECK-DF-NEXT: rts16 1790; CHECK-DF-NEXT: .LBB42_2: # %label1 1791; CHECK-DF-NEXT: movi16 a0, 1 1792; CHECK-DF-NEXT: rts16 1793; 1794; CHECK-DF2-LABEL: brRR_uno: 1795; CHECK-DF2: # %bb.0: # %entry 1796; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0 1797; CHECK-DF2-NEXT: bt32 .LBB42_2 1798; CHECK-DF2-NEXT: # %bb.1: # %label2 1799; CHECK-DF2-NEXT: movi16 a0, 0 1800; CHECK-DF2-NEXT: rts16 1801; CHECK-DF2-NEXT: .LBB42_2: # %label1 1802; CHECK-DF2-NEXT: movi16 a0, 1 1803; CHECK-DF2-NEXT: rts16 1804entry: 1805 %fcmp = fcmp uno double %y, %x 1806 br i1 %fcmp, label %label1, label %label2 1807label1: 1808 ret i32 1 1809label2: 1810 ret i32 0 1811} 1812 1813define i32 @brRI_uno(double %x) { 1814; 1815; 1816; CHECK-DF-LABEL: brRI_uno: 1817; CHECK-DF: # %bb.0: # %entry 1818; CHECK-DF-NEXT: fcmpuod vr0, vr0 1819; CHECK-DF-NEXT: bt32 .LBB43_2 1820; CHECK-DF-NEXT: # %bb.1: # %label2 1821; CHECK-DF-NEXT: movi16 a0, 0 1822; CHECK-DF-NEXT: rts16 1823; CHECK-DF-NEXT: .LBB43_2: # %label1 1824; CHECK-DF-NEXT: movi16 a0, 1 1825; CHECK-DF-NEXT: rts16 1826; 1827; CHECK-DF2-LABEL: brRI_uno: 1828; CHECK-DF2: # %bb.0: # %entry 1829; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0 1830; CHECK-DF2-NEXT: bt32 .LBB43_2 1831; CHECK-DF2-NEXT: # %bb.1: # %label2 1832; CHECK-DF2-NEXT: movi16 a0, 0 1833; CHECK-DF2-NEXT: rts16 1834; CHECK-DF2-NEXT: .LBB43_2: # %label1 1835; CHECK-DF2-NEXT: movi16 a0, 1 1836; CHECK-DF2-NEXT: rts16 1837entry: 1838 %fcmp = fcmp uno double %x, 10.0 1839 br i1 %fcmp, label %label1, label %label2 1840label1: 1841 ret i32 1 1842label2: 1843 ret i32 0 1844} 1845 1846define i32 @brR0_uno(double %x) { 1847; 1848; 1849; CHECK-DF-LABEL: brR0_uno: 1850; CHECK-DF: # %bb.0: # %entry 1851; CHECK-DF-NEXT: fcmpuod vr0, vr0 1852; CHECK-DF-NEXT: bt32 .LBB44_2 1853; CHECK-DF-NEXT: # %bb.1: # %label2 1854; CHECK-DF-NEXT: movi16 a0, 0 1855; CHECK-DF-NEXT: rts16 1856; CHECK-DF-NEXT: .LBB44_2: # %label1 1857; CHECK-DF-NEXT: movi16 a0, 1 1858; CHECK-DF-NEXT: rts16 1859; 1860; CHECK-DF2-LABEL: brR0_uno: 1861; CHECK-DF2: # %bb.0: # %entry 1862; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr0 1863; CHECK-DF2-NEXT: bt32 .LBB44_2 1864; CHECK-DF2-NEXT: # %bb.1: # %label2 1865; CHECK-DF2-NEXT: movi16 a0, 0 1866; CHECK-DF2-NEXT: rts16 1867; CHECK-DF2-NEXT: .LBB44_2: # %label1 1868; CHECK-DF2-NEXT: movi16 a0, 1 1869; CHECK-DF2-NEXT: rts16 1870entry: 1871 %fcmp = fcmp uno double %x, 0.0 1872 br i1 %fcmp, label %label1, label %label2 1873label1: 1874 ret i32 1 1875label2: 1876 ret i32 0 1877} 1878 1879;True 1880define i32 @brRR_true(double %x, double %y) { 1881; 1882; 1883; CHECK-DF-LABEL: brRR_true: 1884; CHECK-DF: # %bb.0: # %entry 1885; CHECK-DF-NEXT: movi16 a0, 0 1886; CHECK-DF-NEXT: btsti16 a0, 0 1887; CHECK-DF-NEXT: bt32 .LBB45_2 1888; CHECK-DF-NEXT: # %bb.1: # %label1 1889; CHECK-DF-NEXT: movi16 a0, 1 1890; CHECK-DF-NEXT: .LBB45_2: # %label2 1891; CHECK-DF-NEXT: rts16 1892; 1893; CHECK-DF2-LABEL: brRR_true: 1894; CHECK-DF2: # %bb.0: # %entry 1895; CHECK-DF2-NEXT: movi16 a0, 0 1896; CHECK-DF2-NEXT: btsti16 a0, 0 1897; CHECK-DF2-NEXT: bt32 .LBB45_2 1898; CHECK-DF2-NEXT: # %bb.1: # %label1 1899; CHECK-DF2-NEXT: movi16 a0, 1 1900; CHECK-DF2-NEXT: .LBB45_2: # %label2 1901; CHECK-DF2-NEXT: rts16 1902entry: 1903 %fcmp = fcmp true double %y, %x 1904 br i1 %fcmp, label %label1, label %label2 1905label1: 1906 ret i32 1 1907label2: 1908 ret i32 0 1909} 1910 1911define i32 @brRI_true(double %x) { 1912; 1913; 1914; CHECK-DF-LABEL: brRI_true: 1915; CHECK-DF: # %bb.0: # %entry 1916; CHECK-DF-NEXT: movi16 a0, 0 1917; CHECK-DF-NEXT: btsti16 a0, 0 1918; CHECK-DF-NEXT: bt32 .LBB46_2 1919; CHECK-DF-NEXT: # %bb.1: # %label1 1920; CHECK-DF-NEXT: movi16 a0, 1 1921; CHECK-DF-NEXT: .LBB46_2: # %label2 1922; CHECK-DF-NEXT: rts16 1923; 1924; CHECK-DF2-LABEL: brRI_true: 1925; CHECK-DF2: # %bb.0: # %entry 1926; CHECK-DF2-NEXT: movi16 a0, 0 1927; CHECK-DF2-NEXT: btsti16 a0, 0 1928; CHECK-DF2-NEXT: bt32 .LBB46_2 1929; CHECK-DF2-NEXT: # %bb.1: # %label1 1930; CHECK-DF2-NEXT: movi16 a0, 1 1931; CHECK-DF2-NEXT: .LBB46_2: # %label2 1932; CHECK-DF2-NEXT: rts16 1933entry: 1934 %fcmp = fcmp true double %x, 10.0 1935 br i1 %fcmp, label %label1, label %label2 1936label1: 1937 ret i32 1 1938label2: 1939 ret i32 0 1940} 1941 1942define i32 @brR0_true(double %x) { 1943; 1944; 1945; CHECK-DF-LABEL: brR0_true: 1946; CHECK-DF: # %bb.0: # %entry 1947; CHECK-DF-NEXT: movi16 a0, 0 1948; CHECK-DF-NEXT: btsti16 a0, 0 1949; CHECK-DF-NEXT: bt32 .LBB47_2 1950; CHECK-DF-NEXT: # %bb.1: # %label1 1951; CHECK-DF-NEXT: movi16 a0, 1 1952; CHECK-DF-NEXT: .LBB47_2: # %label2 1953; CHECK-DF-NEXT: rts16 1954; 1955; CHECK-DF2-LABEL: brR0_true: 1956; CHECK-DF2: # %bb.0: # %entry 1957; CHECK-DF2-NEXT: movi16 a0, 0 1958; CHECK-DF2-NEXT: btsti16 a0, 0 1959; CHECK-DF2-NEXT: bt32 .LBB47_2 1960; CHECK-DF2-NEXT: # %bb.1: # %label1 1961; CHECK-DF2-NEXT: movi16 a0, 1 1962; CHECK-DF2-NEXT: .LBB47_2: # %label2 1963; CHECK-DF2-NEXT: rts16 1964entry: 1965 %fcmp = fcmp true double %x, 0.0 1966 br i1 %fcmp, label %label1, label %label2 1967label1: 1968 ret i32 1 1969label2: 1970 ret i32 0 1971} 1972