1972 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; 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-DF3; 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-DF24 5;OEQ6define i32 @brRR_oeq(double %x, double %y) {7;8;9; CHECK-DF-LABEL: brRR_oeq:10; CHECK-DF: # %bb.0: # %entry11; CHECK-DF-NEXT: fcmpned vr1, vr012; CHECK-DF-NEXT: bt32 .LBB0_213; CHECK-DF-NEXT: # %bb.1: # %label114; CHECK-DF-NEXT: movi16 a0, 115; CHECK-DF-NEXT: rts1616; CHECK-DF-NEXT: .LBB0_2: # %label217; CHECK-DF-NEXT: movi16 a0, 018; CHECK-DF-NEXT: rts1619;20; CHECK-DF2-LABEL: brRR_oeq:21; CHECK-DF2: # %bb.0: # %entry22; CHECK-DF2-NEXT: fcmpne.64 vr1, vr023; CHECK-DF2-NEXT: bt32 .LBB0_224; CHECK-DF2-NEXT: # %bb.1: # %label125; CHECK-DF2-NEXT: movi16 a0, 126; CHECK-DF2-NEXT: rts1627; CHECK-DF2-NEXT: .LBB0_2: # %label228; CHECK-DF2-NEXT: movi16 a0, 029; CHECK-DF2-NEXT: rts1630entry:31 %fcmp = fcmp oeq double %y, %x32 br i1 %fcmp, label %label1, label %label233label1:34 ret i32 135label2:36 ret i32 037}38 39define i32 @brRI_oeq(double %x) {40;41;42; CHECK-DF-LABEL: brRI_oeq:43; CHECK-DF: # %bb.0: # %entry44; CHECK-DF-NEXT: grs32 a0, .LCPI1_045; CHECK-DF-NEXT: fldd vr1, (a0, 0)46; CHECK-DF-NEXT: fcmpned vr0, vr147; CHECK-DF-NEXT: bt32 .LBB1_248; CHECK-DF-NEXT: # %bb.1: # %label149; CHECK-DF-NEXT: movi16 a0, 150; CHECK-DF-NEXT: rts1651; CHECK-DF-NEXT: .LBB1_2: # %label252; CHECK-DF-NEXT: movi16 a0, 053; CHECK-DF-NEXT: rts1654; CHECK-DF-NEXT: .p2align 155; CHECK-DF-NEXT: # %bb.3:56; CHECK-DF-NEXT: .p2align 2, 0x057; CHECK-DF-NEXT: .LCPI1_0:58; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 1059;60; CHECK-DF2-LABEL: brRI_oeq:61; CHECK-DF2: # %bb.0: # %entry62; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI1_0]63; CHECK-DF2-NEXT: fcmpne.64 vr0, vr164; CHECK-DF2-NEXT: bt32 .LBB1_265; CHECK-DF2-NEXT: # %bb.1: # %label166; CHECK-DF2-NEXT: movi16 a0, 167; CHECK-DF2-NEXT: rts1668; CHECK-DF2-NEXT: .LBB1_2: # %label269; CHECK-DF2-NEXT: movi16 a0, 070; CHECK-DF2-NEXT: rts1671; CHECK-DF2-NEXT: .p2align 172; CHECK-DF2-NEXT: # %bb.3:73; CHECK-DF2-NEXT: .p2align 2, 0x074; CHECK-DF2-NEXT: .LCPI1_0:75; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 1076entry:77 %fcmp = fcmp oeq double %x, 10.078 br i1 %fcmp, label %label1, label %label279label1:80 ret i32 181label2:82 ret i32 083}84 85define i32 @brR0_oeq(double %x) {86;87;88; CHECK-DF-LABEL: brR0_oeq:89; CHECK-DF: # %bb.0: # %entry90; CHECK-DF-NEXT: grs32 a0, .LCPI2_091; CHECK-DF-NEXT: fldd vr1, (a0, 0)92; CHECK-DF-NEXT: fcmpned vr0, vr193; CHECK-DF-NEXT: bt32 .LBB2_294; CHECK-DF-NEXT: # %bb.1: # %label195; CHECK-DF-NEXT: movi16 a0, 196; CHECK-DF-NEXT: rts1697; CHECK-DF-NEXT: .LBB2_2: # %label298; CHECK-DF-NEXT: movi16 a0, 099; CHECK-DF-NEXT: rts16100; CHECK-DF-NEXT: .p2align 1101; CHECK-DF-NEXT: # %bb.3:102; CHECK-DF-NEXT: .p2align 2, 0x0103; CHECK-DF-NEXT: .LCPI2_0:104; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0105;106; CHECK-DF2-LABEL: brR0_oeq:107; CHECK-DF2: # %bb.0: # %entry108; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI2_0]109; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1110; CHECK-DF2-NEXT: bt32 .LBB2_2111; CHECK-DF2-NEXT: # %bb.1: # %label1112; CHECK-DF2-NEXT: movi16 a0, 1113; CHECK-DF2-NEXT: rts16114; CHECK-DF2-NEXT: .LBB2_2: # %label2115; CHECK-DF2-NEXT: movi16 a0, 0116; CHECK-DF2-NEXT: rts16117; CHECK-DF2-NEXT: .p2align 1118; CHECK-DF2-NEXT: # %bb.3:119; CHECK-DF2-NEXT: .p2align 2, 0x0120; CHECK-DF2-NEXT: .LCPI2_0:121; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0122entry:123 %fcmp = fcmp oeq double %x, 0.0124 br i1 %fcmp, label %label1, label %label2125label1:126 ret i32 1127label2:128 ret i32 0129}130 131;NE132define i32 @brRR_one(double %x, double %y) {133;134;135; CHECK-DF-LABEL: brRR_one:136; CHECK-DF: # %bb.0: # %entry137; CHECK-DF-NEXT: fcmpuod vr1, vr0138; CHECK-DF-NEXT: mvc32 a0139; CHECK-DF-NEXT: fcmpned vr1, vr0140; CHECK-DF-NEXT: mvcv16 a1141; CHECK-DF-NEXT: or16 a0, a1142; CHECK-DF-NEXT: btsti16 a0, 0143; CHECK-DF-NEXT: bt32 .LBB3_2144; CHECK-DF-NEXT: # %bb.1: # %label1145; CHECK-DF-NEXT: movi16 a0, 1146; CHECK-DF-NEXT: rts16147; CHECK-DF-NEXT: .LBB3_2: # %label2148; CHECK-DF-NEXT: movi16 a0, 0149; CHECK-DF-NEXT: rts16150;151; CHECK-DF2-LABEL: brRR_one:152; CHECK-DF2: # %bb.0: # %entry153; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr0154; CHECK-DF2-NEXT: mvc32 a0155; CHECK-DF2-NEXT: fcmpne.64 vr1, vr0156; CHECK-DF2-NEXT: mvcv16 a1157; CHECK-DF2-NEXT: or16 a0, a1158; CHECK-DF2-NEXT: btsti16 a0, 0159; CHECK-DF2-NEXT: bt32 .LBB3_2160; CHECK-DF2-NEXT: # %bb.1: # %label1161; CHECK-DF2-NEXT: movi16 a0, 1162; CHECK-DF2-NEXT: rts16163; CHECK-DF2-NEXT: .LBB3_2: # %label2164; CHECK-DF2-NEXT: movi16 a0, 0165; CHECK-DF2-NEXT: rts16166entry:167 %fcmp = fcmp one double %y, %x168 br i1 %fcmp, label %label1, label %label2169label1:170 ret i32 1171label2:172 ret i32 0173}174 175define i32 @brRI_one(double %x) {176;177;178; CHECK-DF-LABEL: brRI_one:179; CHECK-DF: # %bb.0: # %entry180; CHECK-DF-NEXT: grs32 a0, .LCPI4_0181; CHECK-DF-NEXT: fldd vr1, (a0, 0)182; CHECK-DF-NEXT: fcmpuod vr0, vr1183; CHECK-DF-NEXT: mvc32 a0184; CHECK-DF-NEXT: fcmpned vr0, vr1185; CHECK-DF-NEXT: mvcv16 a1186; CHECK-DF-NEXT: or16 a0, a1187; CHECK-DF-NEXT: btsti16 a0, 0188; CHECK-DF-NEXT: bt32 .LBB4_2189; CHECK-DF-NEXT: # %bb.1: # %label1190; CHECK-DF-NEXT: movi16 a0, 1191; CHECK-DF-NEXT: rts16192; CHECK-DF-NEXT: .LBB4_2: # %label2193; CHECK-DF-NEXT: movi16 a0, 0194; CHECK-DF-NEXT: rts16195; CHECK-DF-NEXT: .p2align 1196; CHECK-DF-NEXT: # %bb.3:197; CHECK-DF-NEXT: .p2align 2, 0x0198; CHECK-DF-NEXT: .LCPI4_0:199; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10200;201; CHECK-DF2-LABEL: brRI_one:202; CHECK-DF2: # %bb.0: # %entry203; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI4_0]204; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1205; CHECK-DF2-NEXT: mvc32 a0206; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1207; CHECK-DF2-NEXT: mvcv16 a1208; CHECK-DF2-NEXT: or16 a0, a1209; CHECK-DF2-NEXT: btsti16 a0, 0210; CHECK-DF2-NEXT: bt32 .LBB4_2211; CHECK-DF2-NEXT: # %bb.1: # %label1212; CHECK-DF2-NEXT: movi16 a0, 1213; CHECK-DF2-NEXT: rts16214; CHECK-DF2-NEXT: .LBB4_2: # %label2215; CHECK-DF2-NEXT: movi16 a0, 0216; CHECK-DF2-NEXT: rts16217; CHECK-DF2-NEXT: .p2align 1218; CHECK-DF2-NEXT: # %bb.3:219; CHECK-DF2-NEXT: .p2align 2, 0x0220; CHECK-DF2-NEXT: .LCPI4_0:221; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10222entry:223 %fcmp = fcmp one double %x, 10.0224 br i1 %fcmp, label %label1, label %label2225label1:226 ret i32 1227label2:228 ret i32 0229}230 231define i32 @brR0_one(double %x) {232;233;234; CHECK-DF-LABEL: brR0_one:235; CHECK-DF: # %bb.0: # %entry236; CHECK-DF-NEXT: grs32 a0, .LCPI5_0237; CHECK-DF-NEXT: fldd vr1, (a0, 0)238; CHECK-DF-NEXT: fcmpuod vr0, vr1239; CHECK-DF-NEXT: mvc32 a0240; CHECK-DF-NEXT: fcmpned vr0, vr1241; CHECK-DF-NEXT: mvcv16 a1242; CHECK-DF-NEXT: or16 a0, a1243; CHECK-DF-NEXT: btsti16 a0, 0244; CHECK-DF-NEXT: bt32 .LBB5_2245; CHECK-DF-NEXT: # %bb.1: # %label1246; CHECK-DF-NEXT: movi16 a0, 1247; CHECK-DF-NEXT: rts16248; CHECK-DF-NEXT: .LBB5_2: # %label2249; CHECK-DF-NEXT: movi16 a0, 0250; CHECK-DF-NEXT: rts16251; CHECK-DF-NEXT: .p2align 1252; CHECK-DF-NEXT: # %bb.3:253; CHECK-DF-NEXT: .p2align 2, 0x0254; CHECK-DF-NEXT: .LCPI5_0:255; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0256;257; CHECK-DF2-LABEL: brR0_one:258; CHECK-DF2: # %bb.0: # %entry259; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI5_0]260; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr1261; CHECK-DF2-NEXT: mvc32 a0262; CHECK-DF2-NEXT: fcmpne.64 vr0, vr1263; CHECK-DF2-NEXT: mvcv16 a1264; CHECK-DF2-NEXT: or16 a0, a1265; CHECK-DF2-NEXT: btsti16 a0, 0266; CHECK-DF2-NEXT: bt32 .LBB5_2267; CHECK-DF2-NEXT: # %bb.1: # %label1268; CHECK-DF2-NEXT: movi16 a0, 1269; CHECK-DF2-NEXT: rts16270; CHECK-DF2-NEXT: .LBB5_2: # %label2271; CHECK-DF2-NEXT: movi16 a0, 0272; CHECK-DF2-NEXT: rts16273; CHECK-DF2-NEXT: .p2align 1274; CHECK-DF2-NEXT: # %bb.3:275; CHECK-DF2-NEXT: .p2align 2, 0x0276; CHECK-DF2-NEXT: .LCPI5_0:277; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0278entry:279 %fcmp = fcmp one double %x, 0.0280 br i1 %fcmp, label %label1, label %label2281label1:282 ret i32 1283label2:284 ret i32 0285}286 287;UGT288define i32 @brRR_ugt(double %x, double %y) {289;290;291; CHECK-DF-LABEL: brRR_ugt:292; CHECK-DF: # %bb.0: # %entry293; CHECK-DF-NEXT: fcmphsd vr0, vr1294; CHECK-DF-NEXT: bt32 .LBB6_2295; CHECK-DF-NEXT: # %bb.1: # %label1296; CHECK-DF-NEXT: movi16 a0, 1297; CHECK-DF-NEXT: rts16298; CHECK-DF-NEXT: .LBB6_2: # %label2299; CHECK-DF-NEXT: movi16 a0, 0300; CHECK-DF-NEXT: rts16301;302; CHECK-DF2-LABEL: brRR_ugt:303; CHECK-DF2: # %bb.0: # %entry304; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1305; CHECK-DF2-NEXT: bt32 .LBB6_2306; CHECK-DF2-NEXT: # %bb.1: # %label1307; CHECK-DF2-NEXT: movi16 a0, 1308; CHECK-DF2-NEXT: rts16309; CHECK-DF2-NEXT: .LBB6_2: # %label2310; CHECK-DF2-NEXT: movi16 a0, 0311; CHECK-DF2-NEXT: rts16312entry:313 %fcmp = fcmp ugt double %y, %x314 br i1 %fcmp, label %label1, label %label2315label1:316 ret i32 1317label2:318 ret i32 0319}320 321define i32 @brRI_ugt(double %x) {322;323;324; CHECK-DF-LABEL: brRI_ugt:325; CHECK-DF: # %bb.0: # %entry326; CHECK-DF-NEXT: grs32 a0, .LCPI7_0327; CHECK-DF-NEXT: fldd vr1, (a0, 0)328; CHECK-DF-NEXT: fcmphsd vr1, vr0329; CHECK-DF-NEXT: bt32 .LBB7_2330; CHECK-DF-NEXT: # %bb.1: # %label1331; CHECK-DF-NEXT: movi16 a0, 1332; CHECK-DF-NEXT: rts16333; CHECK-DF-NEXT: .LBB7_2: # %label2334; CHECK-DF-NEXT: movi16 a0, 0335; CHECK-DF-NEXT: rts16336; CHECK-DF-NEXT: .p2align 1337; CHECK-DF-NEXT: # %bb.3:338; CHECK-DF-NEXT: .p2align 2, 0x0339; CHECK-DF-NEXT: .LCPI7_0:340; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10341;342; CHECK-DF2-LABEL: brRI_ugt:343; CHECK-DF2: # %bb.0: # %entry344; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI7_0]345; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0346; CHECK-DF2-NEXT: bt32 .LBB7_2347; CHECK-DF2-NEXT: # %bb.1: # %label1348; CHECK-DF2-NEXT: movi16 a0, 1349; CHECK-DF2-NEXT: rts16350; CHECK-DF2-NEXT: .LBB7_2: # %label2351; CHECK-DF2-NEXT: movi16 a0, 0352; CHECK-DF2-NEXT: rts16353; CHECK-DF2-NEXT: .p2align 1354; CHECK-DF2-NEXT: # %bb.3:355; CHECK-DF2-NEXT: .p2align 2, 0x0356; CHECK-DF2-NEXT: .LCPI7_0:357; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10358entry:359 %fcmp = fcmp ugt double %x, 10.0360 br i1 %fcmp, label %label1, label %label2361label1:362 ret i32 1363label2:364 ret i32 0365}366 367define i32 @brR0_ugt(double %x) {368;369;370; CHECK-DF-LABEL: brR0_ugt:371; CHECK-DF: # %bb.0: # %entry372; CHECK-DF-NEXT: grs32 a0, .LCPI8_0373; CHECK-DF-NEXT: fldd vr1, (a0, 0)374; CHECK-DF-NEXT: fcmphsd vr1, vr0375; CHECK-DF-NEXT: bt32 .LBB8_2376; CHECK-DF-NEXT: # %bb.1: # %label1377; CHECK-DF-NEXT: movi16 a0, 1378; CHECK-DF-NEXT: rts16379; CHECK-DF-NEXT: .LBB8_2: # %label2380; CHECK-DF-NEXT: movi16 a0, 0381; CHECK-DF-NEXT: rts16382; CHECK-DF-NEXT: .p2align 1383; CHECK-DF-NEXT: # %bb.3:384; CHECK-DF-NEXT: .p2align 2, 0x0385; CHECK-DF-NEXT: .LCPI8_0:386; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0387;388; CHECK-DF2-LABEL: brR0_ugt:389; CHECK-DF2: # %bb.0: # %entry390; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI8_0]391; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0392; CHECK-DF2-NEXT: bt32 .LBB8_2393; CHECK-DF2-NEXT: # %bb.1: # %label1394; CHECK-DF2-NEXT: movi16 a0, 1395; CHECK-DF2-NEXT: rts16396; CHECK-DF2-NEXT: .LBB8_2: # %label2397; CHECK-DF2-NEXT: movi16 a0, 0398; CHECK-DF2-NEXT: rts16399; CHECK-DF2-NEXT: .p2align 1400; CHECK-DF2-NEXT: # %bb.3:401; CHECK-DF2-NEXT: .p2align 2, 0x0402; CHECK-DF2-NEXT: .LCPI8_0:403; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0404entry:405 %fcmp = fcmp ugt double %x, 0.0406 br i1 %fcmp, label %label1, label %label2407label1:408 ret i32 1409label2:410 ret i32 0411}412 413;UGE414define i32 @brRR_uge(double %x, double %y) {415;416;417; CHECK-DF-LABEL: brRR_uge:418; CHECK-DF: # %bb.0: # %entry419; CHECK-DF-NEXT: fcmpltd vr1, vr0420; CHECK-DF-NEXT: bt32 .LBB9_2421; CHECK-DF-NEXT: # %bb.1: # %label1422; CHECK-DF-NEXT: movi16 a0, 1423; CHECK-DF-NEXT: rts16424; CHECK-DF-NEXT: .LBB9_2: # %label2425; CHECK-DF-NEXT: movi16 a0, 0426; CHECK-DF-NEXT: rts16427;428; CHECK-DF2-LABEL: brRR_uge:429; CHECK-DF2: # %bb.0: # %entry430; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0431; CHECK-DF2-NEXT: bt32 .LBB9_2432; CHECK-DF2-NEXT: # %bb.1: # %label1433; CHECK-DF2-NEXT: movi16 a0, 1434; CHECK-DF2-NEXT: rts16435; CHECK-DF2-NEXT: .LBB9_2: # %label2436; CHECK-DF2-NEXT: movi16 a0, 0437; CHECK-DF2-NEXT: rts16438entry:439 %fcmp = fcmp uge double %y, %x440 br i1 %fcmp, label %label1, label %label2441label1:442 ret i32 1443label2:444 ret i32 0445}446 447define i32 @brRI_uge(double %x) {448;449;450; CHECK-DF-LABEL: brRI_uge:451; CHECK-DF: # %bb.0: # %entry452; CHECK-DF-NEXT: grs32 a0, .LCPI10_0453; CHECK-DF-NEXT: fldd vr1, (a0, 0)454; CHECK-DF-NEXT: fcmpltd vr0, vr1455; CHECK-DF-NEXT: bt32 .LBB10_2456; CHECK-DF-NEXT: # %bb.1: # %label1457; CHECK-DF-NEXT: movi16 a0, 1458; CHECK-DF-NEXT: rts16459; CHECK-DF-NEXT: .LBB10_2: # %label2460; CHECK-DF-NEXT: movi16 a0, 0461; CHECK-DF-NEXT: rts16462; CHECK-DF-NEXT: .p2align 1463; CHECK-DF-NEXT: # %bb.3:464; CHECK-DF-NEXT: .p2align 2, 0x0465; CHECK-DF-NEXT: .LCPI10_0:466; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10467;468; CHECK-DF2-LABEL: brRI_uge:469; CHECK-DF2: # %bb.0: # %entry470; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI10_0]471; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1472; CHECK-DF2-NEXT: bt32 .LBB10_2473; CHECK-DF2-NEXT: # %bb.1: # %label1474; CHECK-DF2-NEXT: movi16 a0, 1475; CHECK-DF2-NEXT: rts16476; CHECK-DF2-NEXT: .LBB10_2: # %label2477; CHECK-DF2-NEXT: movi16 a0, 0478; CHECK-DF2-NEXT: rts16479; CHECK-DF2-NEXT: .p2align 1480; CHECK-DF2-NEXT: # %bb.3:481; CHECK-DF2-NEXT: .p2align 2, 0x0482; CHECK-DF2-NEXT: .LCPI10_0:483; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10484entry:485 %fcmp = fcmp uge double %x, 10.0486 br i1 %fcmp, label %label1, label %label2487label1:488 ret i32 1489label2:490 ret i32 0491}492 493define i32 @brR0_uge(double %x) {494;495;496; CHECK-DF-LABEL: brR0_uge:497; CHECK-DF: # %bb.0: # %entry498; CHECK-DF-NEXT: grs32 a0, .LCPI11_0499; CHECK-DF-NEXT: fldd vr1, (a0, 0)500; CHECK-DF-NEXT: fcmpltd vr0, vr1501; CHECK-DF-NEXT: bt32 .LBB11_2502; CHECK-DF-NEXT: # %bb.1: # %label1503; CHECK-DF-NEXT: movi16 a0, 1504; CHECK-DF-NEXT: rts16505; CHECK-DF-NEXT: .LBB11_2: # %label2506; CHECK-DF-NEXT: movi16 a0, 0507; CHECK-DF-NEXT: rts16508; CHECK-DF-NEXT: .p2align 1509; CHECK-DF-NEXT: # %bb.3:510; CHECK-DF-NEXT: .p2align 2, 0x0511; CHECK-DF-NEXT: .LCPI11_0:512; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0513;514; CHECK-DF2-LABEL: brR0_uge:515; CHECK-DF2: # %bb.0: # %entry516; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI11_0]517; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1518; CHECK-DF2-NEXT: bt32 .LBB11_2519; CHECK-DF2-NEXT: # %bb.1: # %label1520; CHECK-DF2-NEXT: movi16 a0, 1521; CHECK-DF2-NEXT: rts16522; CHECK-DF2-NEXT: .LBB11_2: # %label2523; CHECK-DF2-NEXT: movi16 a0, 0524; CHECK-DF2-NEXT: rts16525; CHECK-DF2-NEXT: .p2align 1526; CHECK-DF2-NEXT: # %bb.3:527; CHECK-DF2-NEXT: .p2align 2, 0x0528; CHECK-DF2-NEXT: .LCPI11_0:529; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0530entry:531 %fcmp = fcmp uge double %x, 0.0532 br i1 %fcmp, label %label1, label %label2533label1:534 ret i32 1535label2:536 ret i32 0537}538 539;ULT540define i32 @brRR_ult(double %x, double %y) {541;542;543; CHECK-DF-LABEL: brRR_ult:544; CHECK-DF: # %bb.0: # %entry545; CHECK-DF-NEXT: fcmphsd vr1, vr0546; CHECK-DF-NEXT: bt32 .LBB12_2547; CHECK-DF-NEXT: # %bb.1: # %label1548; CHECK-DF-NEXT: movi16 a0, 1549; CHECK-DF-NEXT: rts16550; CHECK-DF-NEXT: .LBB12_2: # %label2551; CHECK-DF-NEXT: movi16 a0, 0552; CHECK-DF-NEXT: rts16553;554; CHECK-DF2-LABEL: brRR_ult:555; CHECK-DF2: # %bb.0: # %entry556; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0557; CHECK-DF2-NEXT: bt32 .LBB12_2558; CHECK-DF2-NEXT: # %bb.1: # %label1559; CHECK-DF2-NEXT: movi16 a0, 1560; CHECK-DF2-NEXT: rts16561; CHECK-DF2-NEXT: .LBB12_2: # %label2562; CHECK-DF2-NEXT: movi16 a0, 0563; CHECK-DF2-NEXT: rts16564entry:565 %fcmp = fcmp ult double %y, %x566 br i1 %fcmp, label %label1, label %label2567label1:568 ret i32 1569label2:570 ret i32 0571}572 573define i32 @brRI_ult(double %x) {574;575;576; CHECK-DF-LABEL: brRI_ult:577; CHECK-DF: # %bb.0: # %entry578; CHECK-DF-NEXT: grs32 a0, .LCPI13_0579; CHECK-DF-NEXT: fldd vr1, (a0, 0)580; CHECK-DF-NEXT: fcmphsd vr0, vr1581; CHECK-DF-NEXT: bt32 .LBB13_2582; CHECK-DF-NEXT: # %bb.1: # %label1583; CHECK-DF-NEXT: movi16 a0, 1584; CHECK-DF-NEXT: rts16585; CHECK-DF-NEXT: .LBB13_2: # %label2586; CHECK-DF-NEXT: movi16 a0, 0587; CHECK-DF-NEXT: rts16588; CHECK-DF-NEXT: .p2align 1589; CHECK-DF-NEXT: # %bb.3:590; CHECK-DF-NEXT: .p2align 2, 0x0591; CHECK-DF-NEXT: .LCPI13_0:592; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10593;594; CHECK-DF2-LABEL: brRI_ult:595; CHECK-DF2: # %bb.0: # %entry596; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI13_0]597; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1598; CHECK-DF2-NEXT: bt32 .LBB13_2599; CHECK-DF2-NEXT: # %bb.1: # %label1600; CHECK-DF2-NEXT: movi16 a0, 1601; CHECK-DF2-NEXT: rts16602; CHECK-DF2-NEXT: .LBB13_2: # %label2603; CHECK-DF2-NEXT: movi16 a0, 0604; CHECK-DF2-NEXT: rts16605; CHECK-DF2-NEXT: .p2align 1606; CHECK-DF2-NEXT: # %bb.3:607; CHECK-DF2-NEXT: .p2align 2, 0x0608; CHECK-DF2-NEXT: .LCPI13_0:609; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10610entry:611 %fcmp = fcmp ult double %x, 10.0612 br i1 %fcmp, label %label1, label %label2613label1:614 ret i32 1615label2:616 ret i32 0617}618 619define i32 @brR0_ult(double %x) {620;621;622; CHECK-DF-LABEL: brR0_ult:623; CHECK-DF: # %bb.0: # %entry624; CHECK-DF-NEXT: grs32 a0, .LCPI14_0625; CHECK-DF-NEXT: fldd vr1, (a0, 0)626; CHECK-DF-NEXT: fcmphsd vr0, vr1627; CHECK-DF-NEXT: bt32 .LBB14_2628; CHECK-DF-NEXT: # %bb.1: # %label1629; CHECK-DF-NEXT: movi16 a0, 1630; CHECK-DF-NEXT: rts16631; CHECK-DF-NEXT: .LBB14_2: # %label2632; CHECK-DF-NEXT: movi16 a0, 0633; CHECK-DF-NEXT: rts16634; CHECK-DF-NEXT: .p2align 1635; CHECK-DF-NEXT: # %bb.3:636; CHECK-DF-NEXT: .p2align 2, 0x0637; CHECK-DF-NEXT: .LCPI14_0:638; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0639;640; CHECK-DF2-LABEL: brR0_ult:641; CHECK-DF2: # %bb.0: # %entry642; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI14_0]643; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1644; CHECK-DF2-NEXT: bt32 .LBB14_2645; CHECK-DF2-NEXT: # %bb.1: # %label1646; CHECK-DF2-NEXT: movi16 a0, 1647; CHECK-DF2-NEXT: rts16648; CHECK-DF2-NEXT: .LBB14_2: # %label2649; CHECK-DF2-NEXT: movi16 a0, 0650; CHECK-DF2-NEXT: rts16651; CHECK-DF2-NEXT: .p2align 1652; CHECK-DF2-NEXT: # %bb.3:653; CHECK-DF2-NEXT: .p2align 2, 0x0654; CHECK-DF2-NEXT: .LCPI14_0:655; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0656entry:657 %fcmp = fcmp ult double %x, 0.0658 br i1 %fcmp, label %label1, label %label2659label1:660 ret i32 1661label2:662 ret i32 0663}664 665;ULE666define i32 @brRR_ule(double %x, double %y) {667;668;669; CHECK-DF-LABEL: brRR_ule:670; CHECK-DF: # %bb.0: # %entry671; CHECK-DF-NEXT: fcmpltd vr0, vr1672; CHECK-DF-NEXT: bt32 .LBB15_2673; CHECK-DF-NEXT: # %bb.1: # %label1674; CHECK-DF-NEXT: movi16 a0, 1675; CHECK-DF-NEXT: rts16676; CHECK-DF-NEXT: .LBB15_2: # %label2677; CHECK-DF-NEXT: movi16 a0, 0678; CHECK-DF-NEXT: rts16679;680; CHECK-DF2-LABEL: brRR_ule:681; CHECK-DF2: # %bb.0: # %entry682; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1683; CHECK-DF2-NEXT: bt32 .LBB15_2684; CHECK-DF2-NEXT: # %bb.1: # %label1685; CHECK-DF2-NEXT: movi16 a0, 1686; CHECK-DF2-NEXT: rts16687; CHECK-DF2-NEXT: .LBB15_2: # %label2688; CHECK-DF2-NEXT: movi16 a0, 0689; CHECK-DF2-NEXT: rts16690entry:691 %fcmp = fcmp ule double %y, %x692 br i1 %fcmp, label %label1, label %label2693label1:694 ret i32 1695label2:696 ret i32 0697}698 699define i32 @brRI_ule(double %x) {700;701;702; CHECK-DF-LABEL: brRI_ule:703; CHECK-DF: # %bb.0: # %entry704; CHECK-DF-NEXT: grs32 a0, .LCPI16_0705; CHECK-DF-NEXT: fldd vr1, (a0, 0)706; CHECK-DF-NEXT: fcmpltd vr1, vr0707; CHECK-DF-NEXT: bt32 .LBB16_2708; CHECK-DF-NEXT: # %bb.1: # %label1709; CHECK-DF-NEXT: movi16 a0, 1710; CHECK-DF-NEXT: rts16711; CHECK-DF-NEXT: .LBB16_2: # %label2712; CHECK-DF-NEXT: movi16 a0, 0713; CHECK-DF-NEXT: rts16714; CHECK-DF-NEXT: .p2align 1715; CHECK-DF-NEXT: # %bb.3:716; CHECK-DF-NEXT: .p2align 2, 0x0717; CHECK-DF-NEXT: .LCPI16_0:718; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10719;720; CHECK-DF2-LABEL: brRI_ule:721; CHECK-DF2: # %bb.0: # %entry722; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI16_0]723; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0724; CHECK-DF2-NEXT: bt32 .LBB16_2725; CHECK-DF2-NEXT: # %bb.1: # %label1726; CHECK-DF2-NEXT: movi16 a0, 1727; CHECK-DF2-NEXT: rts16728; CHECK-DF2-NEXT: .LBB16_2: # %label2729; CHECK-DF2-NEXT: movi16 a0, 0730; CHECK-DF2-NEXT: rts16731; CHECK-DF2-NEXT: .p2align 1732; CHECK-DF2-NEXT: # %bb.3:733; CHECK-DF2-NEXT: .p2align 2, 0x0734; CHECK-DF2-NEXT: .LCPI16_0:735; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10736entry:737 %fcmp = fcmp ule double %x, 10.0738 br i1 %fcmp, label %label1, label %label2739label1:740 ret i32 1741label2:742 ret i32 0743}744 745define i32 @brR0_ule(double %x) {746;747;748; CHECK-DF-LABEL: brR0_ule:749; CHECK-DF: # %bb.0: # %entry750; CHECK-DF-NEXT: grs32 a0, .LCPI17_0751; CHECK-DF-NEXT: fldd vr1, (a0, 0)752; CHECK-DF-NEXT: fcmpltd vr1, vr0753; CHECK-DF-NEXT: bt32 .LBB17_2754; CHECK-DF-NEXT: # %bb.1: # %label1755; CHECK-DF-NEXT: movi16 a0, 1756; CHECK-DF-NEXT: rts16757; CHECK-DF-NEXT: .LBB17_2: # %label2758; CHECK-DF-NEXT: movi16 a0, 0759; CHECK-DF-NEXT: rts16760; CHECK-DF-NEXT: .p2align 1761; CHECK-DF-NEXT: # %bb.3:762; CHECK-DF-NEXT: .p2align 2, 0x0763; CHECK-DF-NEXT: .LCPI17_0:764; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0765;766; CHECK-DF2-LABEL: brR0_ule:767; CHECK-DF2: # %bb.0: # %entry768; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI17_0]769; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0770; CHECK-DF2-NEXT: bt32 .LBB17_2771; CHECK-DF2-NEXT: # %bb.1: # %label1772; CHECK-DF2-NEXT: movi16 a0, 1773; CHECK-DF2-NEXT: rts16774; CHECK-DF2-NEXT: .LBB17_2: # %label2775; CHECK-DF2-NEXT: movi16 a0, 0776; CHECK-DF2-NEXT: rts16777; CHECK-DF2-NEXT: .p2align 1778; CHECK-DF2-NEXT: # %bb.3:779; CHECK-DF2-NEXT: .p2align 2, 0x0780; CHECK-DF2-NEXT: .LCPI17_0:781; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0782entry:783 %fcmp = fcmp ule double %x, 0.0784 br i1 %fcmp, label %label1, label %label2785label1:786 ret i32 1787label2:788 ret i32 0789}790 791;SGT792define i32 @brRR_ogt(double %x, double %y) {793;794;795; CHECK-DF-LABEL: brRR_ogt:796; CHECK-DF: # %bb.0: # %entry797; CHECK-DF-NEXT: fcmpltd vr0, vr1798; CHECK-DF-NEXT: bf32 .LBB18_2799; CHECK-DF-NEXT: # %bb.1: # %label1800; CHECK-DF-NEXT: movi16 a0, 1801; CHECK-DF-NEXT: rts16802; CHECK-DF-NEXT: .LBB18_2: # %label2803; CHECK-DF-NEXT: movi16 a0, 0804; CHECK-DF-NEXT: rts16805;806; CHECK-DF2-LABEL: brRR_ogt:807; CHECK-DF2: # %bb.0: # %entry808; CHECK-DF2-NEXT: fcmplt.64 vr0, vr1809; CHECK-DF2-NEXT: bf32 .LBB18_2810; CHECK-DF2-NEXT: # %bb.1: # %label1811; CHECK-DF2-NEXT: movi16 a0, 1812; CHECK-DF2-NEXT: rts16813; CHECK-DF2-NEXT: .LBB18_2: # %label2814; CHECK-DF2-NEXT: movi16 a0, 0815; CHECK-DF2-NEXT: rts16816entry:817 %fcmp = fcmp ogt double %y, %x818 br i1 %fcmp, label %label1, label %label2819label1:820 ret i32 1821label2:822 ret i32 0823}824 825define i32 @brRI_ogt(double %x) {826;827;828; CHECK-DF-LABEL: brRI_ogt:829; CHECK-DF: # %bb.0: # %entry830; CHECK-DF-NEXT: grs32 a0, .LCPI19_0831; CHECK-DF-NEXT: fldd vr1, (a0, 0)832; CHECK-DF-NEXT: fcmpltd vr1, vr0833; CHECK-DF-NEXT: bf32 .LBB19_2834; CHECK-DF-NEXT: # %bb.1: # %label1835; CHECK-DF-NEXT: movi16 a0, 1836; CHECK-DF-NEXT: rts16837; CHECK-DF-NEXT: .LBB19_2: # %label2838; CHECK-DF-NEXT: movi16 a0, 0839; CHECK-DF-NEXT: rts16840; CHECK-DF-NEXT: .p2align 1841; CHECK-DF-NEXT: # %bb.3:842; CHECK-DF-NEXT: .p2align 2, 0x0843; CHECK-DF-NEXT: .LCPI19_0:844; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10845;846; CHECK-DF2-LABEL: brRI_ogt:847; CHECK-DF2: # %bb.0: # %entry848; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI19_0]849; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0850; CHECK-DF2-NEXT: bf32 .LBB19_2851; CHECK-DF2-NEXT: # %bb.1: # %label1852; CHECK-DF2-NEXT: movi16 a0, 1853; CHECK-DF2-NEXT: rts16854; CHECK-DF2-NEXT: .LBB19_2: # %label2855; CHECK-DF2-NEXT: movi16 a0, 0856; CHECK-DF2-NEXT: rts16857; CHECK-DF2-NEXT: .p2align 1858; CHECK-DF2-NEXT: # %bb.3:859; CHECK-DF2-NEXT: .p2align 2, 0x0860; CHECK-DF2-NEXT: .LCPI19_0:861; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10862entry:863 %fcmp = fcmp ogt double %x, 10.0864 br i1 %fcmp, label %label1, label %label2865label1:866 ret i32 1867label2:868 ret i32 0869}870 871define i32 @brR0_ogt(double %x) {872;873;874; CHECK-DF-LABEL: brR0_ogt:875; CHECK-DF: # %bb.0: # %entry876; CHECK-DF-NEXT: grs32 a0, .LCPI20_0877; CHECK-DF-NEXT: fldd vr1, (a0, 0)878; CHECK-DF-NEXT: fcmpltd vr1, vr0879; CHECK-DF-NEXT: bf32 .LBB20_2880; CHECK-DF-NEXT: # %bb.1: # %label1881; CHECK-DF-NEXT: movi16 a0, 1882; CHECK-DF-NEXT: rts16883; CHECK-DF-NEXT: .LBB20_2: # %label2884; CHECK-DF-NEXT: movi16 a0, 0885; CHECK-DF-NEXT: rts16886; CHECK-DF-NEXT: .p2align 1887; CHECK-DF-NEXT: # %bb.3:888; CHECK-DF-NEXT: .p2align 2, 0x0889; CHECK-DF-NEXT: .LCPI20_0:890; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 0891;892; CHECK-DF2-LABEL: brR0_ogt:893; CHECK-DF2: # %bb.0: # %entry894; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI20_0]895; CHECK-DF2-NEXT: fcmplt.64 vr1, vr0896; CHECK-DF2-NEXT: bf32 .LBB20_2897; CHECK-DF2-NEXT: # %bb.1: # %label1898; CHECK-DF2-NEXT: movi16 a0, 1899; CHECK-DF2-NEXT: rts16900; CHECK-DF2-NEXT: .LBB20_2: # %label2901; CHECK-DF2-NEXT: movi16 a0, 0902; CHECK-DF2-NEXT: rts16903; CHECK-DF2-NEXT: .p2align 1904; CHECK-DF2-NEXT: # %bb.3:905; CHECK-DF2-NEXT: .p2align 2, 0x0906; CHECK-DF2-NEXT: .LCPI20_0:907; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 0908entry:909 %fcmp = fcmp ogt double %x, 0.0910 br i1 %fcmp, label %label1, label %label2911label1:912 ret i32 1913label2:914 ret i32 0915}916 917;SGE918define i32 @brRR_oge(double %x, double %y) {919;920;921; CHECK-DF-LABEL: brRR_oge:922; CHECK-DF: # %bb.0: # %entry923; CHECK-DF-NEXT: fcmphsd vr1, vr0924; CHECK-DF-NEXT: bf32 .LBB21_2925; CHECK-DF-NEXT: # %bb.1: # %label1926; CHECK-DF-NEXT: movi16 a0, 1927; CHECK-DF-NEXT: rts16928; CHECK-DF-NEXT: .LBB21_2: # %label2929; CHECK-DF-NEXT: movi16 a0, 0930; CHECK-DF-NEXT: rts16931;932; CHECK-DF2-LABEL: brRR_oge:933; CHECK-DF2: # %bb.0: # %entry934; CHECK-DF2-NEXT: fcmphs.64 vr1, vr0935; CHECK-DF2-NEXT: bf32 .LBB21_2936; CHECK-DF2-NEXT: # %bb.1: # %label1937; CHECK-DF2-NEXT: movi16 a0, 1938; CHECK-DF2-NEXT: rts16939; CHECK-DF2-NEXT: .LBB21_2: # %label2940; CHECK-DF2-NEXT: movi16 a0, 0941; CHECK-DF2-NEXT: rts16942entry:943 %fcmp = fcmp oge double %y, %x944 br i1 %fcmp, label %label1, label %label2945label1:946 ret i32 1947label2:948 ret i32 0949}950 951define i32 @brRI_oge(double %x) {952;953;954; CHECK-DF-LABEL: brRI_oge:955; CHECK-DF: # %bb.0: # %entry956; CHECK-DF-NEXT: grs32 a0, .LCPI22_0957; CHECK-DF-NEXT: fldd vr1, (a0, 0)958; CHECK-DF-NEXT: fcmphsd vr0, vr1959; CHECK-DF-NEXT: bf32 .LBB22_2960; CHECK-DF-NEXT: # %bb.1: # %label1961; CHECK-DF-NEXT: movi16 a0, 1962; CHECK-DF-NEXT: rts16963; CHECK-DF-NEXT: .LBB22_2: # %label2964; CHECK-DF-NEXT: movi16 a0, 0965; CHECK-DF-NEXT: rts16966; CHECK-DF-NEXT: .p2align 1967; CHECK-DF-NEXT: # %bb.3:968; CHECK-DF-NEXT: .p2align 2, 0x0969; CHECK-DF-NEXT: .LCPI22_0:970; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 10971;972; CHECK-DF2-LABEL: brRI_oge:973; CHECK-DF2: # %bb.0: # %entry974; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI22_0]975; CHECK-DF2-NEXT: fcmphs.64 vr0, vr1976; CHECK-DF2-NEXT: bf32 .LBB22_2977; CHECK-DF2-NEXT: # %bb.1: # %label1978; CHECK-DF2-NEXT: movi16 a0, 1979; CHECK-DF2-NEXT: rts16980; CHECK-DF2-NEXT: .LBB22_2: # %label2981; CHECK-DF2-NEXT: movi16 a0, 0982; CHECK-DF2-NEXT: rts16983; CHECK-DF2-NEXT: .p2align 1984; CHECK-DF2-NEXT: # %bb.3:985; CHECK-DF2-NEXT: .p2align 2, 0x0986; CHECK-DF2-NEXT: .LCPI22_0:987; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 10988entry:989 %fcmp = fcmp oge double %x, 10.0990 br i1 %fcmp, label %label1, label %label2991label1:992 ret i32 1993label2:994 ret i32 0995}996 997define i32 @brR0_oge(double %x) {998;999;1000; CHECK-DF-LABEL: brR0_oge:1001; CHECK-DF: # %bb.0: # %entry1002; CHECK-DF-NEXT: grs32 a0, .LCPI23_01003; CHECK-DF-NEXT: fldd vr1, (a0, 0)1004; CHECK-DF-NEXT: fcmphsd vr0, vr11005; CHECK-DF-NEXT: bf32 .LBB23_21006; CHECK-DF-NEXT: # %bb.1: # %label11007; CHECK-DF-NEXT: movi16 a0, 11008; CHECK-DF-NEXT: rts161009; CHECK-DF-NEXT: .LBB23_2: # %label21010; CHECK-DF-NEXT: movi16 a0, 01011; CHECK-DF-NEXT: rts161012; CHECK-DF-NEXT: .p2align 11013; CHECK-DF-NEXT: # %bb.3:1014; CHECK-DF-NEXT: .p2align 2, 0x01015; CHECK-DF-NEXT: .LCPI23_0:1016; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 01017;1018; CHECK-DF2-LABEL: brR0_oge:1019; CHECK-DF2: # %bb.0: # %entry1020; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI23_0]1021; CHECK-DF2-NEXT: fcmphs.64 vr0, vr11022; CHECK-DF2-NEXT: bf32 .LBB23_21023; CHECK-DF2-NEXT: # %bb.1: # %label11024; CHECK-DF2-NEXT: movi16 a0, 11025; CHECK-DF2-NEXT: rts161026; CHECK-DF2-NEXT: .LBB23_2: # %label21027; CHECK-DF2-NEXT: movi16 a0, 01028; CHECK-DF2-NEXT: rts161029; CHECK-DF2-NEXT: .p2align 11030; CHECK-DF2-NEXT: # %bb.3:1031; CHECK-DF2-NEXT: .p2align 2, 0x01032; CHECK-DF2-NEXT: .LCPI23_0:1033; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 01034entry:1035 %fcmp = fcmp oge double %x, 0.01036 br i1 %fcmp, label %label1, label %label21037label1:1038 ret i32 11039label2:1040 ret i32 01041}1042 1043;SLT1044define i32 @brRR_olt(double %x, double %y) {1045;1046;1047; CHECK-DF-LABEL: brRR_olt:1048; CHECK-DF: # %bb.0: # %entry1049; CHECK-DF-NEXT: fcmpltd vr1, vr01050; CHECK-DF-NEXT: bf32 .LBB24_21051; CHECK-DF-NEXT: # %bb.1: # %label11052; CHECK-DF-NEXT: movi16 a0, 11053; CHECK-DF-NEXT: rts161054; CHECK-DF-NEXT: .LBB24_2: # %label21055; CHECK-DF-NEXT: movi16 a0, 01056; CHECK-DF-NEXT: rts161057;1058; CHECK-DF2-LABEL: brRR_olt:1059; CHECK-DF2: # %bb.0: # %entry1060; CHECK-DF2-NEXT: fcmplt.64 vr1, vr01061; CHECK-DF2-NEXT: bf32 .LBB24_21062; CHECK-DF2-NEXT: # %bb.1: # %label11063; CHECK-DF2-NEXT: movi16 a0, 11064; CHECK-DF2-NEXT: rts161065; CHECK-DF2-NEXT: .LBB24_2: # %label21066; CHECK-DF2-NEXT: movi16 a0, 01067; CHECK-DF2-NEXT: rts161068entry:1069 %fcmp = fcmp olt double %y, %x1070 br i1 %fcmp, label %label1, label %label21071label1:1072 ret i32 11073label2:1074 ret i32 01075}1076 1077define i32 @brRI_olt(double %x) {1078;1079;1080; CHECK-DF-LABEL: brRI_olt:1081; CHECK-DF: # %bb.0: # %entry1082; CHECK-DF-NEXT: grs32 a0, .LCPI25_01083; CHECK-DF-NEXT: fldd vr1, (a0, 0)1084; CHECK-DF-NEXT: fcmpltd vr0, vr11085; CHECK-DF-NEXT: bf32 .LBB25_21086; CHECK-DF-NEXT: # %bb.1: # %label11087; CHECK-DF-NEXT: movi16 a0, 11088; CHECK-DF-NEXT: rts161089; CHECK-DF-NEXT: .LBB25_2: # %label21090; CHECK-DF-NEXT: movi16 a0, 01091; CHECK-DF-NEXT: rts161092; CHECK-DF-NEXT: .p2align 11093; CHECK-DF-NEXT: # %bb.3:1094; CHECK-DF-NEXT: .p2align 2, 0x01095; CHECK-DF-NEXT: .LCPI25_0:1096; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 101097;1098; CHECK-DF2-LABEL: brRI_olt:1099; CHECK-DF2: # %bb.0: # %entry1100; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI25_0]1101; CHECK-DF2-NEXT: fcmplt.64 vr0, vr11102; CHECK-DF2-NEXT: bf32 .LBB25_21103; CHECK-DF2-NEXT: # %bb.1: # %label11104; CHECK-DF2-NEXT: movi16 a0, 11105; CHECK-DF2-NEXT: rts161106; CHECK-DF2-NEXT: .LBB25_2: # %label21107; CHECK-DF2-NEXT: movi16 a0, 01108; CHECK-DF2-NEXT: rts161109; CHECK-DF2-NEXT: .p2align 11110; CHECK-DF2-NEXT: # %bb.3:1111; CHECK-DF2-NEXT: .p2align 2, 0x01112; CHECK-DF2-NEXT: .LCPI25_0:1113; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 101114entry:1115 %fcmp = fcmp olt double %x, 10.01116 br i1 %fcmp, label %label1, label %label21117label1:1118 ret i32 11119label2:1120 ret i32 01121}1122 1123define i32 @brR0_olt(double %x) {1124;1125;1126; CHECK-DF-LABEL: brR0_olt:1127; CHECK-DF: # %bb.0: # %entry1128; CHECK-DF-NEXT: grs32 a0, .LCPI26_01129; CHECK-DF-NEXT: fldd vr1, (a0, 0)1130; CHECK-DF-NEXT: fcmpltd vr0, vr11131; CHECK-DF-NEXT: bf32 .LBB26_21132; CHECK-DF-NEXT: # %bb.1: # %label11133; CHECK-DF-NEXT: movi16 a0, 11134; CHECK-DF-NEXT: rts161135; CHECK-DF-NEXT: .LBB26_2: # %label21136; CHECK-DF-NEXT: movi16 a0, 01137; CHECK-DF-NEXT: rts161138; CHECK-DF-NEXT: .p2align 11139; CHECK-DF-NEXT: # %bb.3:1140; CHECK-DF-NEXT: .p2align 2, 0x01141; CHECK-DF-NEXT: .LCPI26_0:1142; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 01143;1144; CHECK-DF2-LABEL: brR0_olt:1145; CHECK-DF2: # %bb.0: # %entry1146; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI26_0]1147; CHECK-DF2-NEXT: fcmplt.64 vr0, vr11148; CHECK-DF2-NEXT: bf32 .LBB26_21149; CHECK-DF2-NEXT: # %bb.1: # %label11150; CHECK-DF2-NEXT: movi16 a0, 11151; CHECK-DF2-NEXT: rts161152; CHECK-DF2-NEXT: .LBB26_2: # %label21153; CHECK-DF2-NEXT: movi16 a0, 01154; CHECK-DF2-NEXT: rts161155; CHECK-DF2-NEXT: .p2align 11156; CHECK-DF2-NEXT: # %bb.3:1157; CHECK-DF2-NEXT: .p2align 2, 0x01158; CHECK-DF2-NEXT: .LCPI26_0:1159; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 01160entry:1161 %fcmp = fcmp olt double %x, 0.01162 br i1 %fcmp, label %label1, label %label21163label1:1164 ret i32 11165label2:1166 ret i32 01167}1168 1169;SLE1170define i32 @brRR_ole(double %x, double %y) {1171;1172;1173; CHECK-DF-LABEL: brRR_ole:1174; CHECK-DF: # %bb.0: # %entry1175; CHECK-DF-NEXT: fcmphsd vr0, vr11176; CHECK-DF-NEXT: bf32 .LBB27_21177; CHECK-DF-NEXT: # %bb.1: # %label11178; CHECK-DF-NEXT: movi16 a0, 11179; CHECK-DF-NEXT: rts161180; CHECK-DF-NEXT: .LBB27_2: # %label21181; CHECK-DF-NEXT: movi16 a0, 01182; CHECK-DF-NEXT: rts161183;1184; CHECK-DF2-LABEL: brRR_ole:1185; CHECK-DF2: # %bb.0: # %entry1186; CHECK-DF2-NEXT: fcmphs.64 vr0, vr11187; CHECK-DF2-NEXT: bf32 .LBB27_21188; CHECK-DF2-NEXT: # %bb.1: # %label11189; CHECK-DF2-NEXT: movi16 a0, 11190; CHECK-DF2-NEXT: rts161191; CHECK-DF2-NEXT: .LBB27_2: # %label21192; CHECK-DF2-NEXT: movi16 a0, 01193; CHECK-DF2-NEXT: rts161194entry:1195 %fcmp = fcmp ole double %y, %x1196 br i1 %fcmp, label %label1, label %label21197label1:1198 ret i32 11199label2:1200 ret i32 01201}1202 1203define i32 @brRI_ole(double %x) {1204;1205;1206; CHECK-DF-LABEL: brRI_ole:1207; CHECK-DF: # %bb.0: # %entry1208; CHECK-DF-NEXT: grs32 a0, .LCPI28_01209; CHECK-DF-NEXT: fldd vr1, (a0, 0)1210; CHECK-DF-NEXT: fcmphsd vr1, vr01211; CHECK-DF-NEXT: bf32 .LBB28_21212; CHECK-DF-NEXT: # %bb.1: # %label11213; CHECK-DF-NEXT: movi16 a0, 11214; CHECK-DF-NEXT: rts161215; CHECK-DF-NEXT: .LBB28_2: # %label21216; CHECK-DF-NEXT: movi16 a0, 01217; CHECK-DF-NEXT: rts161218; CHECK-DF-NEXT: .p2align 11219; CHECK-DF-NEXT: # %bb.3:1220; CHECK-DF-NEXT: .p2align 2, 0x01221; CHECK-DF-NEXT: .LCPI28_0:1222; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 101223;1224; CHECK-DF2-LABEL: brRI_ole:1225; CHECK-DF2: # %bb.0: # %entry1226; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI28_0]1227; CHECK-DF2-NEXT: fcmphs.64 vr1, vr01228; CHECK-DF2-NEXT: bf32 .LBB28_21229; CHECK-DF2-NEXT: # %bb.1: # %label11230; CHECK-DF2-NEXT: movi16 a0, 11231; CHECK-DF2-NEXT: rts161232; CHECK-DF2-NEXT: .LBB28_2: # %label21233; CHECK-DF2-NEXT: movi16 a0, 01234; CHECK-DF2-NEXT: rts161235; CHECK-DF2-NEXT: .p2align 11236; CHECK-DF2-NEXT: # %bb.3:1237; CHECK-DF2-NEXT: .p2align 2, 0x01238; CHECK-DF2-NEXT: .LCPI28_0:1239; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 101240entry:1241 %fcmp = fcmp ole double %x, 10.01242 br i1 %fcmp, label %label1, label %label21243label1:1244 ret i32 11245label2:1246 ret i32 01247}1248 1249define i32 @brR0_ole(double %x) {1250;1251;1252; CHECK-DF-LABEL: brR0_ole:1253; CHECK-DF: # %bb.0: # %entry1254; CHECK-DF-NEXT: grs32 a0, .LCPI29_01255; CHECK-DF-NEXT: fldd vr1, (a0, 0)1256; CHECK-DF-NEXT: fcmphsd vr1, vr01257; CHECK-DF-NEXT: bf32 .LBB29_21258; CHECK-DF-NEXT: # %bb.1: # %label11259; CHECK-DF-NEXT: movi16 a0, 11260; CHECK-DF-NEXT: rts161261; CHECK-DF-NEXT: .LBB29_2: # %label21262; CHECK-DF-NEXT: movi16 a0, 01263; CHECK-DF-NEXT: rts161264; CHECK-DF-NEXT: .p2align 11265; CHECK-DF-NEXT: # %bb.3:1266; CHECK-DF-NEXT: .p2align 2, 0x01267; CHECK-DF-NEXT: .LCPI29_0:1268; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 01269;1270; CHECK-DF2-LABEL: brR0_ole:1271; CHECK-DF2: # %bb.0: # %entry1272; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI29_0]1273; CHECK-DF2-NEXT: fcmphs.64 vr1, vr01274; CHECK-DF2-NEXT: bf32 .LBB29_21275; CHECK-DF2-NEXT: # %bb.1: # %label11276; CHECK-DF2-NEXT: movi16 a0, 11277; CHECK-DF2-NEXT: rts161278; CHECK-DF2-NEXT: .LBB29_2: # %label21279; CHECK-DF2-NEXT: movi16 a0, 01280; CHECK-DF2-NEXT: rts161281; CHECK-DF2-NEXT: .p2align 11282; CHECK-DF2-NEXT: # %bb.3:1283; CHECK-DF2-NEXT: .p2align 2, 0x01284; CHECK-DF2-NEXT: .LCPI29_0:1285; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 01286entry:1287 %fcmp = fcmp ole double %x, 0.01288 br i1 %fcmp, label %label1, label %label21289label1:1290 ret i32 11291label2:1292 ret i32 01293}1294 1295;False1296define i32 @brRR_false(double %x, double %y) {1297;1298;1299; CHECK-DF-LABEL: brRR_false:1300; CHECK-DF: # %bb.0: # %entry1301; CHECK-DF-NEXT: movi16 a0, 11302; CHECK-DF-NEXT: btsti16 a0, 01303; CHECK-DF-NEXT: bt32 .LBB30_21304; CHECK-DF-NEXT: # %bb.1: # %label11305; CHECK-DF-NEXT: rts161306; CHECK-DF-NEXT: .LBB30_2: # %label21307; CHECK-DF-NEXT: movi16 a0, 01308; CHECK-DF-NEXT: rts161309;1310; CHECK-DF2-LABEL: brRR_false:1311; CHECK-DF2: # %bb.0: # %entry1312; CHECK-DF2-NEXT: movi16 a0, 11313; CHECK-DF2-NEXT: btsti16 a0, 01314; CHECK-DF2-NEXT: bt32 .LBB30_21315; CHECK-DF2-NEXT: # %bb.1: # %label11316; CHECK-DF2-NEXT: rts161317; CHECK-DF2-NEXT: .LBB30_2: # %label21318; CHECK-DF2-NEXT: movi16 a0, 01319; CHECK-DF2-NEXT: rts161320entry:1321 %fcmp = fcmp false double %y, %x1322 br i1 %fcmp, label %label1, label %label21323label1:1324 ret i32 11325label2:1326 ret i32 01327}1328 1329define i32 @brRI_false(double %x) {1330;1331;1332; CHECK-DF-LABEL: brRI_false:1333; CHECK-DF: # %bb.0: # %entry1334; CHECK-DF-NEXT: movi16 a0, 11335; CHECK-DF-NEXT: btsti16 a0, 01336; CHECK-DF-NEXT: bt32 .LBB31_21337; CHECK-DF-NEXT: # %bb.1: # %label11338; CHECK-DF-NEXT: rts161339; CHECK-DF-NEXT: .LBB31_2: # %label21340; CHECK-DF-NEXT: movi16 a0, 01341; CHECK-DF-NEXT: rts161342;1343; CHECK-DF2-LABEL: brRI_false:1344; CHECK-DF2: # %bb.0: # %entry1345; CHECK-DF2-NEXT: movi16 a0, 11346; CHECK-DF2-NEXT: btsti16 a0, 01347; CHECK-DF2-NEXT: bt32 .LBB31_21348; CHECK-DF2-NEXT: # %bb.1: # %label11349; CHECK-DF2-NEXT: rts161350; CHECK-DF2-NEXT: .LBB31_2: # %label21351; CHECK-DF2-NEXT: movi16 a0, 01352; CHECK-DF2-NEXT: rts161353entry:1354 %fcmp = fcmp false double %x, 10.01355 br i1 %fcmp, label %label1, label %label21356label1:1357 ret i32 11358label2:1359 ret i32 01360}1361 1362define i32 @brR0_false(double %x) {1363;1364;1365; CHECK-DF-LABEL: brR0_false:1366; CHECK-DF: # %bb.0: # %entry1367; CHECK-DF-NEXT: movi16 a0, 11368; CHECK-DF-NEXT: btsti16 a0, 01369; CHECK-DF-NEXT: bt32 .LBB32_21370; CHECK-DF-NEXT: # %bb.1: # %label11371; CHECK-DF-NEXT: rts161372; CHECK-DF-NEXT: .LBB32_2: # %label21373; CHECK-DF-NEXT: movi16 a0, 01374; CHECK-DF-NEXT: rts161375;1376; CHECK-DF2-LABEL: brR0_false:1377; CHECK-DF2: # %bb.0: # %entry1378; CHECK-DF2-NEXT: movi16 a0, 11379; CHECK-DF2-NEXT: btsti16 a0, 01380; CHECK-DF2-NEXT: bt32 .LBB32_21381; CHECK-DF2-NEXT: # %bb.1: # %label11382; CHECK-DF2-NEXT: rts161383; CHECK-DF2-NEXT: .LBB32_2: # %label21384; CHECK-DF2-NEXT: movi16 a0, 01385; CHECK-DF2-NEXT: rts161386entry:1387 %fcmp = fcmp false double %x, 0.01388 br i1 %fcmp, label %label1, label %label21389label1:1390 ret i32 11391label2:1392 ret i32 01393}1394 1395 1396;ORD1397define i32 @brRR_ord(double %x, double %y) {1398;1399;1400; CHECK-DF-LABEL: brRR_ord:1401; CHECK-DF: # %bb.0: # %entry1402; CHECK-DF-NEXT: fcmpuod vr1, vr01403; CHECK-DF-NEXT: bt32 .LBB33_21404; CHECK-DF-NEXT: # %bb.1: # %label11405; CHECK-DF-NEXT: movi16 a0, 11406; CHECK-DF-NEXT: rts161407; CHECK-DF-NEXT: .LBB33_2: # %label21408; CHECK-DF-NEXT: movi16 a0, 01409; CHECK-DF-NEXT: rts161410;1411; CHECK-DF2-LABEL: brRR_ord:1412; CHECK-DF2: # %bb.0: # %entry1413; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr01414; CHECK-DF2-NEXT: bt32 .LBB33_21415; CHECK-DF2-NEXT: # %bb.1: # %label11416; CHECK-DF2-NEXT: movi16 a0, 11417; CHECK-DF2-NEXT: rts161418; CHECK-DF2-NEXT: .LBB33_2: # %label21419; CHECK-DF2-NEXT: movi16 a0, 01420; CHECK-DF2-NEXT: rts161421entry:1422 %fcmp = fcmp ord double %y, %x1423 br i1 %fcmp, label %label1, label %label21424label1:1425 ret i32 11426label2:1427 ret i32 01428}1429 1430define i32 @brRI_ord(double %x) {1431;1432;1433; CHECK-DF-LABEL: brRI_ord:1434; CHECK-DF: # %bb.0: # %entry1435; CHECK-DF-NEXT: fcmpuod vr0, vr01436; CHECK-DF-NEXT: bt32 .LBB34_21437; CHECK-DF-NEXT: # %bb.1: # %label11438; CHECK-DF-NEXT: movi16 a0, 11439; CHECK-DF-NEXT: rts161440; CHECK-DF-NEXT: .LBB34_2: # %label21441; CHECK-DF-NEXT: movi16 a0, 01442; CHECK-DF-NEXT: rts161443;1444; CHECK-DF2-LABEL: brRI_ord:1445; CHECK-DF2: # %bb.0: # %entry1446; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr01447; CHECK-DF2-NEXT: bt32 .LBB34_21448; CHECK-DF2-NEXT: # %bb.1: # %label11449; CHECK-DF2-NEXT: movi16 a0, 11450; CHECK-DF2-NEXT: rts161451; CHECK-DF2-NEXT: .LBB34_2: # %label21452; CHECK-DF2-NEXT: movi16 a0, 01453; CHECK-DF2-NEXT: rts161454entry:1455 %fcmp = fcmp ord double %x, 10.01456 br i1 %fcmp, label %label1, label %label21457label1:1458 ret i32 11459label2:1460 ret i32 01461}1462 1463define i32 @brR0_ord(double %x) {1464;1465;1466; CHECK-DF-LABEL: brR0_ord:1467; CHECK-DF: # %bb.0: # %entry1468; CHECK-DF-NEXT: fcmpuod vr0, vr01469; CHECK-DF-NEXT: bt32 .LBB35_21470; CHECK-DF-NEXT: # %bb.1: # %label11471; CHECK-DF-NEXT: movi16 a0, 11472; CHECK-DF-NEXT: rts161473; CHECK-DF-NEXT: .LBB35_2: # %label21474; CHECK-DF-NEXT: movi16 a0, 01475; CHECK-DF-NEXT: rts161476;1477; CHECK-DF2-LABEL: brR0_ord:1478; CHECK-DF2: # %bb.0: # %entry1479; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr01480; CHECK-DF2-NEXT: bt32 .LBB35_21481; CHECK-DF2-NEXT: # %bb.1: # %label11482; CHECK-DF2-NEXT: movi16 a0, 11483; CHECK-DF2-NEXT: rts161484; CHECK-DF2-NEXT: .LBB35_2: # %label21485; CHECK-DF2-NEXT: movi16 a0, 01486; CHECK-DF2-NEXT: rts161487entry:1488 %fcmp = fcmp ord double %x, 0.01489 br i1 %fcmp, label %label1, label %label21490label1:1491 ret i32 11492label2:1493 ret i32 01494}1495 1496 1497;UEQ1498define i32 @brRR_ueq(double %x, double %y) {1499;1500;1501; CHECK-DF-LABEL: brRR_ueq:1502; CHECK-DF: # %bb.0: # %entry1503; CHECK-DF-NEXT: fcmpuod vr1, vr01504; CHECK-DF-NEXT: mvcv16 a01505; CHECK-DF-NEXT: fcmpned vr1, vr01506; CHECK-DF-NEXT: mvc32 a11507; CHECK-DF-NEXT: and16 a0, a11508; CHECK-DF-NEXT: btsti16 a0, 01509; CHECK-DF-NEXT: bf32 .LBB36_21510; CHECK-DF-NEXT: # %bb.1: # %label21511; CHECK-DF-NEXT: movi16 a0, 01512; CHECK-DF-NEXT: rts161513; CHECK-DF-NEXT: .LBB36_2: # %label11514; CHECK-DF-NEXT: movi16 a0, 11515; CHECK-DF-NEXT: rts161516;1517; CHECK-DF2-LABEL: brRR_ueq:1518; CHECK-DF2: # %bb.0: # %entry1519; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr01520; CHECK-DF2-NEXT: mvcv16 a01521; CHECK-DF2-NEXT: fcmpne.64 vr1, vr01522; CHECK-DF2-NEXT: mvc32 a11523; CHECK-DF2-NEXT: and16 a0, a11524; CHECK-DF2-NEXT: btsti16 a0, 01525; CHECK-DF2-NEXT: bf32 .LBB36_21526; CHECK-DF2-NEXT: # %bb.1: # %label21527; CHECK-DF2-NEXT: movi16 a0, 01528; CHECK-DF2-NEXT: rts161529; CHECK-DF2-NEXT: .LBB36_2: # %label11530; CHECK-DF2-NEXT: movi16 a0, 11531; CHECK-DF2-NEXT: rts161532entry:1533 %fcmp = fcmp ueq double %y, %x1534 br i1 %fcmp, label %label1, label %label21535label1:1536 ret i32 11537label2:1538 ret i32 01539}1540 1541define i32 @brRI_ueq(double %x) {1542;1543;1544; CHECK-DF-LABEL: brRI_ueq:1545; CHECK-DF: # %bb.0: # %entry1546; CHECK-DF-NEXT: grs32 a0, .LCPI37_01547; CHECK-DF-NEXT: fldd vr1, (a0, 0)1548; CHECK-DF-NEXT: fcmpuod vr0, vr11549; CHECK-DF-NEXT: mvcv16 a01550; CHECK-DF-NEXT: fcmpned vr0, vr11551; CHECK-DF-NEXT: mvc32 a11552; CHECK-DF-NEXT: and16 a0, a11553; CHECK-DF-NEXT: btsti16 a0, 01554; CHECK-DF-NEXT: bf32 .LBB37_21555; CHECK-DF-NEXT: # %bb.1: # %label21556; CHECK-DF-NEXT: movi16 a0, 01557; CHECK-DF-NEXT: rts161558; CHECK-DF-NEXT: .LBB37_2: # %label11559; CHECK-DF-NEXT: movi16 a0, 11560; CHECK-DF-NEXT: rts161561; CHECK-DF-NEXT: .p2align 11562; CHECK-DF-NEXT: # %bb.3:1563; CHECK-DF-NEXT: .p2align 2, 0x01564; CHECK-DF-NEXT: .LCPI37_0:1565; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 101566;1567; CHECK-DF2-LABEL: brRI_ueq:1568; CHECK-DF2: # %bb.0: # %entry1569; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI37_0]1570; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr11571; CHECK-DF2-NEXT: mvcv16 a01572; CHECK-DF2-NEXT: fcmpne.64 vr0, vr11573; CHECK-DF2-NEXT: mvc32 a11574; CHECK-DF2-NEXT: and16 a0, a11575; CHECK-DF2-NEXT: btsti16 a0, 01576; CHECK-DF2-NEXT: bf32 .LBB37_21577; CHECK-DF2-NEXT: # %bb.1: # %label21578; CHECK-DF2-NEXT: movi16 a0, 01579; CHECK-DF2-NEXT: rts161580; CHECK-DF2-NEXT: .LBB37_2: # %label11581; CHECK-DF2-NEXT: movi16 a0, 11582; CHECK-DF2-NEXT: rts161583; CHECK-DF2-NEXT: .p2align 11584; CHECK-DF2-NEXT: # %bb.3:1585; CHECK-DF2-NEXT: .p2align 2, 0x01586; CHECK-DF2-NEXT: .LCPI37_0:1587; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 101588entry:1589 %fcmp = fcmp ueq double %x, 10.01590 br i1 %fcmp, label %label1, label %label21591label1:1592 ret i32 11593label2:1594 ret i32 01595}1596 1597define i32 @brR0_ueq(double %x) {1598;1599;1600; CHECK-DF-LABEL: brR0_ueq:1601; CHECK-DF: # %bb.0: # %entry1602; CHECK-DF-NEXT: grs32 a0, .LCPI38_01603; CHECK-DF-NEXT: fldd vr1, (a0, 0)1604; CHECK-DF-NEXT: fcmpuod vr0, vr11605; CHECK-DF-NEXT: mvcv16 a01606; CHECK-DF-NEXT: fcmpned vr0, vr11607; CHECK-DF-NEXT: mvc32 a11608; CHECK-DF-NEXT: and16 a0, a11609; CHECK-DF-NEXT: btsti16 a0, 01610; CHECK-DF-NEXT: bf32 .LBB38_21611; CHECK-DF-NEXT: # %bb.1: # %label21612; CHECK-DF-NEXT: movi16 a0, 01613; CHECK-DF-NEXT: rts161614; CHECK-DF-NEXT: .LBB38_2: # %label11615; CHECK-DF-NEXT: movi16 a0, 11616; CHECK-DF-NEXT: rts161617; CHECK-DF-NEXT: .p2align 11618; CHECK-DF-NEXT: # %bb.3:1619; CHECK-DF-NEXT: .p2align 2, 0x01620; CHECK-DF-NEXT: .LCPI38_0:1621; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 01622;1623; CHECK-DF2-LABEL: brR0_ueq:1624; CHECK-DF2: # %bb.0: # %entry1625; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI38_0]1626; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr11627; CHECK-DF2-NEXT: mvcv16 a01628; CHECK-DF2-NEXT: fcmpne.64 vr0, vr11629; CHECK-DF2-NEXT: mvc32 a11630; CHECK-DF2-NEXT: and16 a0, a11631; CHECK-DF2-NEXT: btsti16 a0, 01632; CHECK-DF2-NEXT: bf32 .LBB38_21633; CHECK-DF2-NEXT: # %bb.1: # %label21634; CHECK-DF2-NEXT: movi16 a0, 01635; CHECK-DF2-NEXT: rts161636; CHECK-DF2-NEXT: .LBB38_2: # %label11637; CHECK-DF2-NEXT: movi16 a0, 11638; CHECK-DF2-NEXT: rts161639; CHECK-DF2-NEXT: .p2align 11640; CHECK-DF2-NEXT: # %bb.3:1641; CHECK-DF2-NEXT: .p2align 2, 0x01642; CHECK-DF2-NEXT: .LCPI38_0:1643; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 01644entry:1645 %fcmp = fcmp ueq double %x, 0.01646 br i1 %fcmp, label %label1, label %label21647label1:1648 ret i32 11649label2:1650 ret i32 01651}1652 1653;UNE1654define i32 @brRR_une(double %x, double %y) {1655;1656;1657; CHECK-DF-LABEL: brRR_une:1658; CHECK-DF: # %bb.0: # %entry1659; CHECK-DF-NEXT: fcmpned vr1, vr01660; CHECK-DF-NEXT: bf32 .LBB39_21661; CHECK-DF-NEXT: # %bb.1: # %label11662; CHECK-DF-NEXT: movi16 a0, 11663; CHECK-DF-NEXT: rts161664; CHECK-DF-NEXT: .LBB39_2: # %label21665; CHECK-DF-NEXT: movi16 a0, 01666; CHECK-DF-NEXT: rts161667;1668; CHECK-DF2-LABEL: brRR_une:1669; CHECK-DF2: # %bb.0: # %entry1670; CHECK-DF2-NEXT: fcmpne.64 vr1, vr01671; CHECK-DF2-NEXT: bf32 .LBB39_21672; CHECK-DF2-NEXT: # %bb.1: # %label11673; CHECK-DF2-NEXT: movi16 a0, 11674; CHECK-DF2-NEXT: rts161675; CHECK-DF2-NEXT: .LBB39_2: # %label21676; CHECK-DF2-NEXT: movi16 a0, 01677; CHECK-DF2-NEXT: rts161678entry:1679 %fcmp = fcmp une double %y, %x1680 br i1 %fcmp, label %label1, label %label21681label1:1682 ret i32 11683label2:1684 ret i32 01685}1686 1687define i32 @brRI_une(double %x) {1688;1689;1690; CHECK-DF-LABEL: brRI_une:1691; CHECK-DF: # %bb.0: # %entry1692; CHECK-DF-NEXT: grs32 a0, .LCPI40_01693; CHECK-DF-NEXT: fldd vr1, (a0, 0)1694; CHECK-DF-NEXT: fcmpned vr0, vr11695; CHECK-DF-NEXT: bf32 .LBB40_21696; CHECK-DF-NEXT: # %bb.1: # %label11697; CHECK-DF-NEXT: movi16 a0, 11698; CHECK-DF-NEXT: rts161699; CHECK-DF-NEXT: .LBB40_2: # %label21700; CHECK-DF-NEXT: movi16 a0, 01701; CHECK-DF-NEXT: rts161702; CHECK-DF-NEXT: .p2align 11703; CHECK-DF-NEXT: # %bb.3:1704; CHECK-DF-NEXT: .p2align 2, 0x01705; CHECK-DF-NEXT: .LCPI40_0:1706; CHECK-DF-NEXT: .quad 0x4024000000000000 # double 101707;1708; CHECK-DF2-LABEL: brRI_une:1709; CHECK-DF2: # %bb.0: # %entry1710; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI40_0]1711; CHECK-DF2-NEXT: fcmpne.64 vr0, vr11712; CHECK-DF2-NEXT: bf32 .LBB40_21713; CHECK-DF2-NEXT: # %bb.1: # %label11714; CHECK-DF2-NEXT: movi16 a0, 11715; CHECK-DF2-NEXT: rts161716; CHECK-DF2-NEXT: .LBB40_2: # %label21717; CHECK-DF2-NEXT: movi16 a0, 01718; CHECK-DF2-NEXT: rts161719; CHECK-DF2-NEXT: .p2align 11720; CHECK-DF2-NEXT: # %bb.3:1721; CHECK-DF2-NEXT: .p2align 2, 0x01722; CHECK-DF2-NEXT: .LCPI40_0:1723; CHECK-DF2-NEXT: .quad 0x4024000000000000 # double 101724entry:1725 %fcmp = fcmp une double %x, 10.01726 br i1 %fcmp, label %label1, label %label21727label1:1728 ret i32 11729label2:1730 ret i32 01731}1732 1733define i32 @brR0_une(double %x) {1734;1735;1736; CHECK-DF-LABEL: brR0_une:1737; CHECK-DF: # %bb.0: # %entry1738; CHECK-DF-NEXT: grs32 a0, .LCPI41_01739; CHECK-DF-NEXT: fldd vr1, (a0, 0)1740; CHECK-DF-NEXT: fcmpned vr0, vr11741; CHECK-DF-NEXT: bf32 .LBB41_21742; CHECK-DF-NEXT: # %bb.1: # %label11743; CHECK-DF-NEXT: movi16 a0, 11744; CHECK-DF-NEXT: rts161745; CHECK-DF-NEXT: .LBB41_2: # %label21746; CHECK-DF-NEXT: movi16 a0, 01747; CHECK-DF-NEXT: rts161748; CHECK-DF-NEXT: .p2align 11749; CHECK-DF-NEXT: # %bb.3:1750; CHECK-DF-NEXT: .p2align 2, 0x01751; CHECK-DF-NEXT: .LCPI41_0:1752; CHECK-DF-NEXT: .quad 0x0000000000000000 # double 01753;1754; CHECK-DF2-LABEL: brR0_une:1755; CHECK-DF2: # %bb.0: # %entry1756; CHECK-DF2-NEXT: flrw.64 vr1, [.LCPI41_0]1757; CHECK-DF2-NEXT: fcmpne.64 vr0, vr11758; CHECK-DF2-NEXT: bf32 .LBB41_21759; CHECK-DF2-NEXT: # %bb.1: # %label11760; CHECK-DF2-NEXT: movi16 a0, 11761; CHECK-DF2-NEXT: rts161762; CHECK-DF2-NEXT: .LBB41_2: # %label21763; CHECK-DF2-NEXT: movi16 a0, 01764; CHECK-DF2-NEXT: rts161765; CHECK-DF2-NEXT: .p2align 11766; CHECK-DF2-NEXT: # %bb.3:1767; CHECK-DF2-NEXT: .p2align 2, 0x01768; CHECK-DF2-NEXT: .LCPI41_0:1769; CHECK-DF2-NEXT: .quad 0x0000000000000000 # double 01770entry:1771 %fcmp = fcmp une double %x, 0.01772 br i1 %fcmp, label %label1, label %label21773label1:1774 ret i32 11775label2:1776 ret i32 01777}1778 1779;UNO1780define i32 @brRR_uno(double %x, double %y) {1781;1782;1783; CHECK-DF-LABEL: brRR_uno:1784; CHECK-DF: # %bb.0: # %entry1785; CHECK-DF-NEXT: fcmpuod vr1, vr01786; CHECK-DF-NEXT: bt32 .LBB42_21787; CHECK-DF-NEXT: # %bb.1: # %label21788; CHECK-DF-NEXT: movi16 a0, 01789; CHECK-DF-NEXT: rts161790; CHECK-DF-NEXT: .LBB42_2: # %label11791; CHECK-DF-NEXT: movi16 a0, 11792; CHECK-DF-NEXT: rts161793;1794; CHECK-DF2-LABEL: brRR_uno:1795; CHECK-DF2: # %bb.0: # %entry1796; CHECK-DF2-NEXT: fcmpuo.64 vr1, vr01797; CHECK-DF2-NEXT: bt32 .LBB42_21798; CHECK-DF2-NEXT: # %bb.1: # %label21799; CHECK-DF2-NEXT: movi16 a0, 01800; CHECK-DF2-NEXT: rts161801; CHECK-DF2-NEXT: .LBB42_2: # %label11802; CHECK-DF2-NEXT: movi16 a0, 11803; CHECK-DF2-NEXT: rts161804entry:1805 %fcmp = fcmp uno double %y, %x1806 br i1 %fcmp, label %label1, label %label21807label1:1808 ret i32 11809label2:1810 ret i32 01811}1812 1813define i32 @brRI_uno(double %x) {1814;1815;1816; CHECK-DF-LABEL: brRI_uno:1817; CHECK-DF: # %bb.0: # %entry1818; CHECK-DF-NEXT: fcmpuod vr0, vr01819; CHECK-DF-NEXT: bt32 .LBB43_21820; CHECK-DF-NEXT: # %bb.1: # %label21821; CHECK-DF-NEXT: movi16 a0, 01822; CHECK-DF-NEXT: rts161823; CHECK-DF-NEXT: .LBB43_2: # %label11824; CHECK-DF-NEXT: movi16 a0, 11825; CHECK-DF-NEXT: rts161826;1827; CHECK-DF2-LABEL: brRI_uno:1828; CHECK-DF2: # %bb.0: # %entry1829; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr01830; CHECK-DF2-NEXT: bt32 .LBB43_21831; CHECK-DF2-NEXT: # %bb.1: # %label21832; CHECK-DF2-NEXT: movi16 a0, 01833; CHECK-DF2-NEXT: rts161834; CHECK-DF2-NEXT: .LBB43_2: # %label11835; CHECK-DF2-NEXT: movi16 a0, 11836; CHECK-DF2-NEXT: rts161837entry:1838 %fcmp = fcmp uno double %x, 10.01839 br i1 %fcmp, label %label1, label %label21840label1:1841 ret i32 11842label2:1843 ret i32 01844}1845 1846define i32 @brR0_uno(double %x) {1847;1848;1849; CHECK-DF-LABEL: brR0_uno:1850; CHECK-DF: # %bb.0: # %entry1851; CHECK-DF-NEXT: fcmpuod vr0, vr01852; CHECK-DF-NEXT: bt32 .LBB44_21853; CHECK-DF-NEXT: # %bb.1: # %label21854; CHECK-DF-NEXT: movi16 a0, 01855; CHECK-DF-NEXT: rts161856; CHECK-DF-NEXT: .LBB44_2: # %label11857; CHECK-DF-NEXT: movi16 a0, 11858; CHECK-DF-NEXT: rts161859;1860; CHECK-DF2-LABEL: brR0_uno:1861; CHECK-DF2: # %bb.0: # %entry1862; CHECK-DF2-NEXT: fcmpuo.64 vr0, vr01863; CHECK-DF2-NEXT: bt32 .LBB44_21864; CHECK-DF2-NEXT: # %bb.1: # %label21865; CHECK-DF2-NEXT: movi16 a0, 01866; CHECK-DF2-NEXT: rts161867; CHECK-DF2-NEXT: .LBB44_2: # %label11868; CHECK-DF2-NEXT: movi16 a0, 11869; CHECK-DF2-NEXT: rts161870entry:1871 %fcmp = fcmp uno double %x, 0.01872 br i1 %fcmp, label %label1, label %label21873label1:1874 ret i32 11875label2:1876 ret i32 01877}1878 1879;True1880define i32 @brRR_true(double %x, double %y) {1881;1882;1883; CHECK-DF-LABEL: brRR_true:1884; CHECK-DF: # %bb.0: # %entry1885; CHECK-DF-NEXT: movi16 a0, 01886; CHECK-DF-NEXT: btsti16 a0, 01887; CHECK-DF-NEXT: bt32 .LBB45_21888; CHECK-DF-NEXT: # %bb.1: # %label11889; CHECK-DF-NEXT: movi16 a0, 11890; CHECK-DF-NEXT: .LBB45_2: # %label21891; CHECK-DF-NEXT: rts161892;1893; CHECK-DF2-LABEL: brRR_true:1894; CHECK-DF2: # %bb.0: # %entry1895; CHECK-DF2-NEXT: movi16 a0, 01896; CHECK-DF2-NEXT: btsti16 a0, 01897; CHECK-DF2-NEXT: bt32 .LBB45_21898; CHECK-DF2-NEXT: # %bb.1: # %label11899; CHECK-DF2-NEXT: movi16 a0, 11900; CHECK-DF2-NEXT: .LBB45_2: # %label21901; CHECK-DF2-NEXT: rts161902entry:1903 %fcmp = fcmp true double %y, %x1904 br i1 %fcmp, label %label1, label %label21905label1:1906 ret i32 11907label2:1908 ret i32 01909}1910 1911define i32 @brRI_true(double %x) {1912;1913;1914; CHECK-DF-LABEL: brRI_true:1915; CHECK-DF: # %bb.0: # %entry1916; CHECK-DF-NEXT: movi16 a0, 01917; CHECK-DF-NEXT: btsti16 a0, 01918; CHECK-DF-NEXT: bt32 .LBB46_21919; CHECK-DF-NEXT: # %bb.1: # %label11920; CHECK-DF-NEXT: movi16 a0, 11921; CHECK-DF-NEXT: .LBB46_2: # %label21922; CHECK-DF-NEXT: rts161923;1924; CHECK-DF2-LABEL: brRI_true:1925; CHECK-DF2: # %bb.0: # %entry1926; CHECK-DF2-NEXT: movi16 a0, 01927; CHECK-DF2-NEXT: btsti16 a0, 01928; CHECK-DF2-NEXT: bt32 .LBB46_21929; CHECK-DF2-NEXT: # %bb.1: # %label11930; CHECK-DF2-NEXT: movi16 a0, 11931; CHECK-DF2-NEXT: .LBB46_2: # %label21932; CHECK-DF2-NEXT: rts161933entry:1934 %fcmp = fcmp true double %x, 10.01935 br i1 %fcmp, label %label1, label %label21936label1:1937 ret i32 11938label2:1939 ret i32 01940}1941 1942define i32 @brR0_true(double %x) {1943;1944;1945; CHECK-DF-LABEL: brR0_true:1946; CHECK-DF: # %bb.0: # %entry1947; CHECK-DF-NEXT: movi16 a0, 01948; CHECK-DF-NEXT: btsti16 a0, 01949; CHECK-DF-NEXT: bt32 .LBB47_21950; CHECK-DF-NEXT: # %bb.1: # %label11951; CHECK-DF-NEXT: movi16 a0, 11952; CHECK-DF-NEXT: .LBB47_2: # %label21953; CHECK-DF-NEXT: rts161954;1955; CHECK-DF2-LABEL: brR0_true:1956; CHECK-DF2: # %bb.0: # %entry1957; CHECK-DF2-NEXT: movi16 a0, 01958; CHECK-DF2-NEXT: btsti16 a0, 01959; CHECK-DF2-NEXT: bt32 .LBB47_21960; CHECK-DF2-NEXT: # %bb.1: # %label11961; CHECK-DF2-NEXT: movi16 a0, 11962; CHECK-DF2-NEXT: .LBB47_2: # %label21963; CHECK-DF2-NEXT: rts161964entry:1965 %fcmp = fcmp true double %x, 0.01966 br i1 %fcmp, label %label1, label %label21967label1:1968 ret i32 11969label2:1970 ret i32 01971}1972