1427 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc < %s -global-isel=0 -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefixes=X64,SDAG-X643; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefixes=X64,FASTISEL-X644; RUN: llc < %s -global-isel -global-isel-abort=1 -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefixes=GISEL-X645 6define i32 @fcmp_oeq(float %x, float %y) {7; X64-LABEL: fcmp_oeq:8; X64: ## %bb.0:9; X64-NEXT: ucomiss %xmm1, %xmm010; X64-NEXT: jne LBB0_111; X64-NEXT: jp LBB0_112; X64-NEXT: ## %bb.2: ## %bb113; X64-NEXT: xorl %eax, %eax14; X64-NEXT: retq15; X64-NEXT: LBB0_1: ## %bb216; X64-NEXT: movl $1, %eax17; X64-NEXT: retq18;19; GISEL-X64-LABEL: fcmp_oeq:20; GISEL-X64: ## %bb.0:21; GISEL-X64-NEXT: ucomiss %xmm1, %xmm022; GISEL-X64-NEXT: sete %al23; GISEL-X64-NEXT: setnp %cl24; GISEL-X64-NEXT: andb %al, %cl25; GISEL-X64-NEXT: testb $1, %cl26; GISEL-X64-NEXT: je LBB0_127; GISEL-X64-NEXT: ## %bb.2: ## %bb128; GISEL-X64-NEXT: xorl %eax, %eax29; GISEL-X64-NEXT: retq30; GISEL-X64-NEXT: LBB0_1: ## %bb231; GISEL-X64-NEXT: movl $1, %eax32; GISEL-X64-NEXT: retq33 %1 = fcmp oeq float %x, %y34 br i1 %1, label %bb1, label %bb235bb2:36 ret i32 137bb1:38 ret i32 039}40 41define i32 @fcmp_ogt(float %x, float %y) {42; X64-LABEL: fcmp_ogt:43; X64: ## %bb.0:44; X64-NEXT: ucomiss %xmm1, %xmm045; X64-NEXT: jbe LBB1_146; X64-NEXT: ## %bb.2: ## %bb147; X64-NEXT: xorl %eax, %eax48; X64-NEXT: retq49; X64-NEXT: LBB1_1: ## %bb250; X64-NEXT: movl $1, %eax51; X64-NEXT: retq52;53; GISEL-X64-LABEL: fcmp_ogt:54; GISEL-X64: ## %bb.0:55; GISEL-X64-NEXT: ucomiss %xmm1, %xmm056; GISEL-X64-NEXT: seta %al57; GISEL-X64-NEXT: testb $1, %al58; GISEL-X64-NEXT: je LBB1_159; GISEL-X64-NEXT: ## %bb.2: ## %bb160; GISEL-X64-NEXT: xorl %eax, %eax61; GISEL-X64-NEXT: retq62; GISEL-X64-NEXT: LBB1_1: ## %bb263; GISEL-X64-NEXT: movl $1, %eax64; GISEL-X64-NEXT: retq65 %1 = fcmp ogt float %x, %y66 br i1 %1, label %bb1, label %bb267bb2:68 ret i32 169bb1:70 ret i32 071}72 73define i32 @fcmp_oge(float %x, float %y) {74; X64-LABEL: fcmp_oge:75; X64: ## %bb.0:76; X64-NEXT: ucomiss %xmm1, %xmm077; X64-NEXT: jb LBB2_178; X64-NEXT: ## %bb.2: ## %bb179; X64-NEXT: xorl %eax, %eax80; X64-NEXT: retq81; X64-NEXT: LBB2_1: ## %bb282; X64-NEXT: movl $1, %eax83; X64-NEXT: retq84;85; GISEL-X64-LABEL: fcmp_oge:86; GISEL-X64: ## %bb.0:87; GISEL-X64-NEXT: ucomiss %xmm1, %xmm088; GISEL-X64-NEXT: setae %al89; GISEL-X64-NEXT: testb $1, %al90; GISEL-X64-NEXT: je LBB2_191; GISEL-X64-NEXT: ## %bb.2: ## %bb192; GISEL-X64-NEXT: xorl %eax, %eax93; GISEL-X64-NEXT: retq94; GISEL-X64-NEXT: LBB2_1: ## %bb295; GISEL-X64-NEXT: movl $1, %eax96; GISEL-X64-NEXT: retq97 %1 = fcmp oge float %x, %y98 br i1 %1, label %bb1, label %bb299bb2:100 ret i32 1101bb1:102 ret i32 0103}104 105define i32 @fcmp_olt(float %x, float %y) {106; X64-LABEL: fcmp_olt:107; X64: ## %bb.0:108; X64-NEXT: ucomiss %xmm0, %xmm1109; X64-NEXT: jbe LBB3_1110; X64-NEXT: ## %bb.2: ## %bb1111; X64-NEXT: xorl %eax, %eax112; X64-NEXT: retq113; X64-NEXT: LBB3_1: ## %bb2114; X64-NEXT: movl $1, %eax115; X64-NEXT: retq116;117; GISEL-X64-LABEL: fcmp_olt:118; GISEL-X64: ## %bb.0:119; GISEL-X64-NEXT: ucomiss %xmm0, %xmm1120; GISEL-X64-NEXT: seta %al121; GISEL-X64-NEXT: testb $1, %al122; GISEL-X64-NEXT: je LBB3_1123; GISEL-X64-NEXT: ## %bb.2: ## %bb1124; GISEL-X64-NEXT: xorl %eax, %eax125; GISEL-X64-NEXT: retq126; GISEL-X64-NEXT: LBB3_1: ## %bb2127; GISEL-X64-NEXT: movl $1, %eax128; GISEL-X64-NEXT: retq129 %1 = fcmp olt float %x, %y130 br i1 %1, label %bb1, label %bb2131bb2:132 ret i32 1133bb1:134 ret i32 0135}136 137define i32 @fcmp_ole(float %x, float %y) {138; X64-LABEL: fcmp_ole:139; X64: ## %bb.0:140; X64-NEXT: ucomiss %xmm0, %xmm1141; X64-NEXT: jb LBB4_1142; X64-NEXT: ## %bb.2: ## %bb1143; X64-NEXT: xorl %eax, %eax144; X64-NEXT: retq145; X64-NEXT: LBB4_1: ## %bb2146; X64-NEXT: movl $1, %eax147; X64-NEXT: retq148;149; GISEL-X64-LABEL: fcmp_ole:150; GISEL-X64: ## %bb.0:151; GISEL-X64-NEXT: ucomiss %xmm0, %xmm1152; GISEL-X64-NEXT: setae %al153; GISEL-X64-NEXT: testb $1, %al154; GISEL-X64-NEXT: je LBB4_1155; GISEL-X64-NEXT: ## %bb.2: ## %bb1156; GISEL-X64-NEXT: xorl %eax, %eax157; GISEL-X64-NEXT: retq158; GISEL-X64-NEXT: LBB4_1: ## %bb2159; GISEL-X64-NEXT: movl $1, %eax160; GISEL-X64-NEXT: retq161 %1 = fcmp ole float %x, %y162 br i1 %1, label %bb1, label %bb2163bb2:164 ret i32 1165bb1:166 ret i32 0167}168 169define i32 @fcmp_one(float %x, float %y) {170; X64-LABEL: fcmp_one:171; X64: ## %bb.0:172; X64-NEXT: ucomiss %xmm1, %xmm0173; X64-NEXT: je LBB5_1174; X64-NEXT: ## %bb.2: ## %bb1175; X64-NEXT: xorl %eax, %eax176; X64-NEXT: retq177; X64-NEXT: LBB5_1: ## %bb2178; X64-NEXT: movl $1, %eax179; X64-NEXT: retq180;181; GISEL-X64-LABEL: fcmp_one:182; GISEL-X64: ## %bb.0:183; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0184; GISEL-X64-NEXT: setne %al185; GISEL-X64-NEXT: testb $1, %al186; GISEL-X64-NEXT: je LBB5_1187; GISEL-X64-NEXT: ## %bb.2: ## %bb1188; GISEL-X64-NEXT: xorl %eax, %eax189; GISEL-X64-NEXT: retq190; GISEL-X64-NEXT: LBB5_1: ## %bb2191; GISEL-X64-NEXT: movl $1, %eax192; GISEL-X64-NEXT: retq193 %1 = fcmp one float %x, %y194 br i1 %1, label %bb1, label %bb2195bb2:196 ret i32 1197bb1:198 ret i32 0199}200 201define i32 @fcmp_ord(float %x, float %y) {202; X64-LABEL: fcmp_ord:203; X64: ## %bb.0:204; X64-NEXT: ucomiss %xmm1, %xmm0205; X64-NEXT: jp LBB6_1206; X64-NEXT: ## %bb.2: ## %bb1207; X64-NEXT: xorl %eax, %eax208; X64-NEXT: retq209; X64-NEXT: LBB6_1: ## %bb2210; X64-NEXT: movl $1, %eax211; X64-NEXT: retq212;213; GISEL-X64-LABEL: fcmp_ord:214; GISEL-X64: ## %bb.0:215; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0216; GISEL-X64-NEXT: setnp %al217; GISEL-X64-NEXT: testb $1, %al218; GISEL-X64-NEXT: je LBB6_1219; GISEL-X64-NEXT: ## %bb.2: ## %bb1220; GISEL-X64-NEXT: xorl %eax, %eax221; GISEL-X64-NEXT: retq222; GISEL-X64-NEXT: LBB6_1: ## %bb2223; GISEL-X64-NEXT: movl $1, %eax224; GISEL-X64-NEXT: retq225 %1 = fcmp ord float %x, %y226 br i1 %1, label %bb1, label %bb2227bb2:228 ret i32 1229bb1:230 ret i32 0231}232 233define i32 @fcmp_uno(float %x, float %y) {234; X64-LABEL: fcmp_uno:235; X64: ## %bb.0:236; X64-NEXT: ucomiss %xmm1, %xmm0237; X64-NEXT: jp LBB7_2238; X64-NEXT: ## %bb.1: ## %bb2239; X64-NEXT: movl $1, %eax240; X64-NEXT: retq241; X64-NEXT: LBB7_2: ## %bb1242; X64-NEXT: xorl %eax, %eax243; X64-NEXT: retq244;245; GISEL-X64-LABEL: fcmp_uno:246; GISEL-X64: ## %bb.0:247; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0248; GISEL-X64-NEXT: setp %al249; GISEL-X64-NEXT: testb $1, %al250; GISEL-X64-NEXT: jne LBB7_2251; GISEL-X64-NEXT: ## %bb.1: ## %bb2252; GISEL-X64-NEXT: movl $1, %eax253; GISEL-X64-NEXT: retq254; GISEL-X64-NEXT: LBB7_2: ## %bb1255; GISEL-X64-NEXT: xorl %eax, %eax256; GISEL-X64-NEXT: retq257 %1 = fcmp uno float %x, %y258 br i1 %1, label %bb1, label %bb2259bb2:260 ret i32 1261bb1:262 ret i32 0263}264 265define i32 @fcmp_ueq(float %x, float %y) {266; X64-LABEL: fcmp_ueq:267; X64: ## %bb.0:268; X64-NEXT: ucomiss %xmm1, %xmm0269; X64-NEXT: je LBB8_2270; X64-NEXT: ## %bb.1: ## %bb2271; X64-NEXT: movl $1, %eax272; X64-NEXT: retq273; X64-NEXT: LBB8_2: ## %bb1274; X64-NEXT: xorl %eax, %eax275; X64-NEXT: retq276;277; GISEL-X64-LABEL: fcmp_ueq:278; GISEL-X64: ## %bb.0:279; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0280; GISEL-X64-NEXT: sete %al281; GISEL-X64-NEXT: testb $1, %al282; GISEL-X64-NEXT: jne LBB8_2283; GISEL-X64-NEXT: ## %bb.1: ## %bb2284; GISEL-X64-NEXT: movl $1, %eax285; GISEL-X64-NEXT: retq286; GISEL-X64-NEXT: LBB8_2: ## %bb1287; GISEL-X64-NEXT: xorl %eax, %eax288; GISEL-X64-NEXT: retq289 %1 = fcmp ueq float %x, %y290 br i1 %1, label %bb1, label %bb2291bb2:292 ret i32 1293bb1:294 ret i32 0295}296 297define i32 @fcmp_ugt(float %x, float %y) {298; X64-LABEL: fcmp_ugt:299; X64: ## %bb.0:300; X64-NEXT: ucomiss %xmm0, %xmm1301; X64-NEXT: jae LBB9_1302; X64-NEXT: ## %bb.2: ## %bb1303; X64-NEXT: xorl %eax, %eax304; X64-NEXT: retq305; X64-NEXT: LBB9_1: ## %bb2306; X64-NEXT: movl $1, %eax307; X64-NEXT: retq308;309; GISEL-X64-LABEL: fcmp_ugt:310; GISEL-X64: ## %bb.0:311; GISEL-X64-NEXT: ucomiss %xmm0, %xmm1312; GISEL-X64-NEXT: setb %al313; GISEL-X64-NEXT: testb $1, %al314; GISEL-X64-NEXT: je LBB9_1315; GISEL-X64-NEXT: ## %bb.2: ## %bb1316; GISEL-X64-NEXT: xorl %eax, %eax317; GISEL-X64-NEXT: retq318; GISEL-X64-NEXT: LBB9_1: ## %bb2319; GISEL-X64-NEXT: movl $1, %eax320; GISEL-X64-NEXT: retq321 %1 = fcmp ugt float %x, %y322 br i1 %1, label %bb1, label %bb2323bb2:324 ret i32 1325bb1:326 ret i32 0327}328 329define i32 @fcmp_uge(float %x, float %y) {330; X64-LABEL: fcmp_uge:331; X64: ## %bb.0:332; X64-NEXT: ucomiss %xmm0, %xmm1333; X64-NEXT: ja LBB10_1334; X64-NEXT: ## %bb.2: ## %bb1335; X64-NEXT: xorl %eax, %eax336; X64-NEXT: retq337; X64-NEXT: LBB10_1: ## %bb2338; X64-NEXT: movl $1, %eax339; X64-NEXT: retq340;341; GISEL-X64-LABEL: fcmp_uge:342; GISEL-X64: ## %bb.0:343; GISEL-X64-NEXT: ucomiss %xmm0, %xmm1344; GISEL-X64-NEXT: setbe %al345; GISEL-X64-NEXT: testb $1, %al346; GISEL-X64-NEXT: je LBB10_1347; GISEL-X64-NEXT: ## %bb.2: ## %bb1348; GISEL-X64-NEXT: xorl %eax, %eax349; GISEL-X64-NEXT: retq350; GISEL-X64-NEXT: LBB10_1: ## %bb2351; GISEL-X64-NEXT: movl $1, %eax352; GISEL-X64-NEXT: retq353 %1 = fcmp uge float %x, %y354 br i1 %1, label %bb1, label %bb2355bb2:356 ret i32 1357bb1:358 ret i32 0359}360 361define i32 @fcmp_ult(float %x, float %y) {362; X64-LABEL: fcmp_ult:363; X64: ## %bb.0:364; X64-NEXT: ucomiss %xmm1, %xmm0365; X64-NEXT: jae LBB11_1366; X64-NEXT: ## %bb.2: ## %bb1367; X64-NEXT: xorl %eax, %eax368; X64-NEXT: retq369; X64-NEXT: LBB11_1: ## %bb2370; X64-NEXT: movl $1, %eax371; X64-NEXT: retq372;373; GISEL-X64-LABEL: fcmp_ult:374; GISEL-X64: ## %bb.0:375; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0376; GISEL-X64-NEXT: setb %al377; GISEL-X64-NEXT: testb $1, %al378; GISEL-X64-NEXT: je LBB11_1379; GISEL-X64-NEXT: ## %bb.2: ## %bb1380; GISEL-X64-NEXT: xorl %eax, %eax381; GISEL-X64-NEXT: retq382; GISEL-X64-NEXT: LBB11_1: ## %bb2383; GISEL-X64-NEXT: movl $1, %eax384; GISEL-X64-NEXT: retq385 %1 = fcmp ult float %x, %y386 br i1 %1, label %bb1, label %bb2387bb2:388 ret i32 1389bb1:390 ret i32 0391}392 393define i32 @fcmp_ule(float %x, float %y) {394; X64-LABEL: fcmp_ule:395; X64: ## %bb.0:396; X64-NEXT: ucomiss %xmm1, %xmm0397; X64-NEXT: ja LBB12_1398; X64-NEXT: ## %bb.2: ## %bb1399; X64-NEXT: xorl %eax, %eax400; X64-NEXT: retq401; X64-NEXT: LBB12_1: ## %bb2402; X64-NEXT: movl $1, %eax403; X64-NEXT: retq404;405; GISEL-X64-LABEL: fcmp_ule:406; GISEL-X64: ## %bb.0:407; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0408; GISEL-X64-NEXT: setbe %al409; GISEL-X64-NEXT: testb $1, %al410; GISEL-X64-NEXT: je LBB12_1411; GISEL-X64-NEXT: ## %bb.2: ## %bb1412; GISEL-X64-NEXT: xorl %eax, %eax413; GISEL-X64-NEXT: retq414; GISEL-X64-NEXT: LBB12_1: ## %bb2415; GISEL-X64-NEXT: movl $1, %eax416; GISEL-X64-NEXT: retq417 %1 = fcmp ule float %x, %y418 br i1 %1, label %bb1, label %bb2419bb2:420 ret i32 1421bb1:422 ret i32 0423}424 425define i32 @fcmp_une(float %x, float %y) {426; X64-LABEL: fcmp_une:427; X64: ## %bb.0:428; X64-NEXT: ucomiss %xmm1, %xmm0429; X64-NEXT: jne LBB13_2430; X64-NEXT: jnp LBB13_1431; X64-NEXT: LBB13_2: ## %bb1432; X64-NEXT: xorl %eax, %eax433; X64-NEXT: retq434; X64-NEXT: LBB13_1: ## %bb2435; X64-NEXT: movl $1, %eax436; X64-NEXT: retq437;438; GISEL-X64-LABEL: fcmp_une:439; GISEL-X64: ## %bb.0:440; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0441; GISEL-X64-NEXT: setne %al442; GISEL-X64-NEXT: setp %cl443; GISEL-X64-NEXT: orb %al, %cl444; GISEL-X64-NEXT: testb $1, %cl445; GISEL-X64-NEXT: je LBB13_1446; GISEL-X64-NEXT: ## %bb.2: ## %bb1447; GISEL-X64-NEXT: xorl %eax, %eax448; GISEL-X64-NEXT: retq449; GISEL-X64-NEXT: LBB13_1: ## %bb2450; GISEL-X64-NEXT: movl $1, %eax451; GISEL-X64-NEXT: retq452 %1 = fcmp une float %x, %y453 br i1 %1, label %bb1, label %bb2454bb2:455 ret i32 1456bb1:457 ret i32 0458}459 460define i32 @fcmp_oeq1(float %x) {461; X64-LABEL: fcmp_oeq1:462; X64: ## %bb.0:463; X64-NEXT: ucomiss %xmm0, %xmm0464; X64-NEXT: jp LBB14_1465; X64-NEXT: ## %bb.2: ## %bb1466; X64-NEXT: xorl %eax, %eax467; X64-NEXT: retq468; X64-NEXT: LBB14_1: ## %bb2469; X64-NEXT: movl $1, %eax470; X64-NEXT: retq471;472; GISEL-X64-LABEL: fcmp_oeq1:473; GISEL-X64: ## %bb.0:474; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0475; GISEL-X64-NEXT: sete %al476; GISEL-X64-NEXT: setnp %cl477; GISEL-X64-NEXT: andb %al, %cl478; GISEL-X64-NEXT: testb $1, %cl479; GISEL-X64-NEXT: je LBB14_1480; GISEL-X64-NEXT: ## %bb.2: ## %bb1481; GISEL-X64-NEXT: xorl %eax, %eax482; GISEL-X64-NEXT: retq483; GISEL-X64-NEXT: LBB14_1: ## %bb2484; GISEL-X64-NEXT: movl $1, %eax485; GISEL-X64-NEXT: retq486 %1 = fcmp oeq float %x, %x487 br i1 %1, label %bb1, label %bb2488bb2:489 ret i32 1490bb1:491 ret i32 0492}493 494define i32 @fcmp_oeq2(float %x) {495; X64-LABEL: fcmp_oeq2:496; X64: ## %bb.0:497; X64-NEXT: xorps %xmm1, %xmm1498; X64-NEXT: ucomiss %xmm1, %xmm0499; X64-NEXT: jne LBB15_1500; X64-NEXT: jp LBB15_1501; X64-NEXT: ## %bb.2: ## %bb1502; X64-NEXT: xorl %eax, %eax503; X64-NEXT: retq504; X64-NEXT: LBB15_1: ## %bb2505; X64-NEXT: movl $1, %eax506; X64-NEXT: retq507;508; GISEL-X64-LABEL: fcmp_oeq2:509; GISEL-X64: ## %bb.0:510; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]511; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0512; GISEL-X64-NEXT: sete %al513; GISEL-X64-NEXT: setnp %cl514; GISEL-X64-NEXT: andb %al, %cl515; GISEL-X64-NEXT: testb $1, %cl516; GISEL-X64-NEXT: je LBB15_1517; GISEL-X64-NEXT: ## %bb.2: ## %bb1518; GISEL-X64-NEXT: xorl %eax, %eax519; GISEL-X64-NEXT: retq520; GISEL-X64-NEXT: LBB15_1: ## %bb2521; GISEL-X64-NEXT: movl $1, %eax522; GISEL-X64-NEXT: retq523 %1 = fcmp oeq float %x, 0.000000e+00524 br i1 %1, label %bb1, label %bb2525bb2:526 ret i32 1527bb1:528 ret i32 0529}530 531define i32 @fcmp_ogt1(float %x) {532; SDAG-X64-LABEL: fcmp_ogt1:533; SDAG-X64: ## %bb.0:534; SDAG-X64-NEXT: xorl %eax, %eax535; SDAG-X64-NEXT: testb %al, %al536; SDAG-X64-NEXT: je LBB16_1537; SDAG-X64-NEXT: ## %bb.2: ## %bb1538; SDAG-X64-NEXT: xorl %eax, %eax539; SDAG-X64-NEXT: retq540; SDAG-X64-NEXT: LBB16_1: ## %bb2541; SDAG-X64-NEXT: movl $1, %eax542; SDAG-X64-NEXT: retq543;544; FASTISEL-X64-LABEL: fcmp_ogt1:545; FASTISEL-X64: ## %bb.0:546; FASTISEL-X64-NEXT: movl $1, %eax547; FASTISEL-X64-NEXT: retq548;549; GISEL-X64-LABEL: fcmp_ogt1:550; GISEL-X64: ## %bb.0:551; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0552; GISEL-X64-NEXT: seta %al553; GISEL-X64-NEXT: testb $1, %al554; GISEL-X64-NEXT: je LBB16_1555; GISEL-X64-NEXT: ## %bb.2: ## %bb1556; GISEL-X64-NEXT: xorl %eax, %eax557; GISEL-X64-NEXT: retq558; GISEL-X64-NEXT: LBB16_1: ## %bb2559; GISEL-X64-NEXT: movl $1, %eax560; GISEL-X64-NEXT: retq561 %1 = fcmp ogt float %x, %x562 br i1 %1, label %bb1, label %bb2563bb2:564 ret i32 1565bb1:566 ret i32 0567}568 569define i32 @fcmp_ogt2(float %x) {570; X64-LABEL: fcmp_ogt2:571; X64: ## %bb.0:572; X64-NEXT: xorps %xmm1, %xmm1573; X64-NEXT: ucomiss %xmm1, %xmm0574; X64-NEXT: jbe LBB17_1575; X64-NEXT: ## %bb.2: ## %bb1576; X64-NEXT: xorl %eax, %eax577; X64-NEXT: retq578; X64-NEXT: LBB17_1: ## %bb2579; X64-NEXT: movl $1, %eax580; X64-NEXT: retq581;582; GISEL-X64-LABEL: fcmp_ogt2:583; GISEL-X64: ## %bb.0:584; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]585; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0586; GISEL-X64-NEXT: seta %al587; GISEL-X64-NEXT: testb $1, %al588; GISEL-X64-NEXT: je LBB17_1589; GISEL-X64-NEXT: ## %bb.2: ## %bb1590; GISEL-X64-NEXT: xorl %eax, %eax591; GISEL-X64-NEXT: retq592; GISEL-X64-NEXT: LBB17_1: ## %bb2593; GISEL-X64-NEXT: movl $1, %eax594; GISEL-X64-NEXT: retq595 %1 = fcmp ogt float %x, 0.000000e+00596 br i1 %1, label %bb1, label %bb2597bb2:598 ret i32 1599bb1:600 ret i32 0601}602 603define i32 @fcmp_oge1(float %x) {604; X64-LABEL: fcmp_oge1:605; X64: ## %bb.0:606; X64-NEXT: ucomiss %xmm0, %xmm0607; X64-NEXT: jp LBB18_1608; X64-NEXT: ## %bb.2: ## %bb1609; X64-NEXT: xorl %eax, %eax610; X64-NEXT: retq611; X64-NEXT: LBB18_1: ## %bb2612; X64-NEXT: movl $1, %eax613; X64-NEXT: retq614;615; GISEL-X64-LABEL: fcmp_oge1:616; GISEL-X64: ## %bb.0:617; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0618; GISEL-X64-NEXT: setae %al619; GISEL-X64-NEXT: testb $1, %al620; GISEL-X64-NEXT: je LBB18_1621; GISEL-X64-NEXT: ## %bb.2: ## %bb1622; GISEL-X64-NEXT: xorl %eax, %eax623; GISEL-X64-NEXT: retq624; GISEL-X64-NEXT: LBB18_1: ## %bb2625; GISEL-X64-NEXT: movl $1, %eax626; GISEL-X64-NEXT: retq627 %1 = fcmp oge float %x, %x628 br i1 %1, label %bb1, label %bb2629bb2:630 ret i32 1631bb1:632 ret i32 0633}634 635define i32 @fcmp_oge2(float %x) {636; X64-LABEL: fcmp_oge2:637; X64: ## %bb.0:638; X64-NEXT: xorps %xmm1, %xmm1639; X64-NEXT: ucomiss %xmm1, %xmm0640; X64-NEXT: jb LBB19_1641; X64-NEXT: ## %bb.2: ## %bb1642; X64-NEXT: xorl %eax, %eax643; X64-NEXT: retq644; X64-NEXT: LBB19_1: ## %bb2645; X64-NEXT: movl $1, %eax646; X64-NEXT: retq647;648; GISEL-X64-LABEL: fcmp_oge2:649; GISEL-X64: ## %bb.0:650; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]651; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0652; GISEL-X64-NEXT: setae %al653; GISEL-X64-NEXT: testb $1, %al654; GISEL-X64-NEXT: je LBB19_1655; GISEL-X64-NEXT: ## %bb.2: ## %bb1656; GISEL-X64-NEXT: xorl %eax, %eax657; GISEL-X64-NEXT: retq658; GISEL-X64-NEXT: LBB19_1: ## %bb2659; GISEL-X64-NEXT: movl $1, %eax660; GISEL-X64-NEXT: retq661 %1 = fcmp oge float %x, 0.000000e+00662 br i1 %1, label %bb1, label %bb2663bb2:664 ret i32 1665bb1:666 ret i32 0667}668 669define i32 @fcmp_olt1(float %x) {670; SDAG-X64-LABEL: fcmp_olt1:671; SDAG-X64: ## %bb.0:672; SDAG-X64-NEXT: xorl %eax, %eax673; SDAG-X64-NEXT: testb %al, %al674; SDAG-X64-NEXT: je LBB20_1675; SDAG-X64-NEXT: ## %bb.2: ## %bb1676; SDAG-X64-NEXT: xorl %eax, %eax677; SDAG-X64-NEXT: retq678; SDAG-X64-NEXT: LBB20_1: ## %bb2679; SDAG-X64-NEXT: movl $1, %eax680; SDAG-X64-NEXT: retq681;682; FASTISEL-X64-LABEL: fcmp_olt1:683; FASTISEL-X64: ## %bb.0:684; FASTISEL-X64-NEXT: movl $1, %eax685; FASTISEL-X64-NEXT: retq686;687; GISEL-X64-LABEL: fcmp_olt1:688; GISEL-X64: ## %bb.0:689; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0690; GISEL-X64-NEXT: seta %al691; GISEL-X64-NEXT: testb $1, %al692; GISEL-X64-NEXT: je LBB20_1693; GISEL-X64-NEXT: ## %bb.2: ## %bb1694; GISEL-X64-NEXT: xorl %eax, %eax695; GISEL-X64-NEXT: retq696; GISEL-X64-NEXT: LBB20_1: ## %bb2697; GISEL-X64-NEXT: movl $1, %eax698; GISEL-X64-NEXT: retq699 %1 = fcmp olt float %x, %x700 br i1 %1, label %bb1, label %bb2701bb2:702 ret i32 1703bb1:704 ret i32 0705}706 707define i32 @fcmp_olt2(float %x) {708; X64-LABEL: fcmp_olt2:709; X64: ## %bb.0:710; X64-NEXT: xorps %xmm1, %xmm1711; X64-NEXT: ucomiss %xmm0, %xmm1712; X64-NEXT: jbe LBB21_1713; X64-NEXT: ## %bb.2: ## %bb1714; X64-NEXT: xorl %eax, %eax715; X64-NEXT: retq716; X64-NEXT: LBB21_1: ## %bb2717; X64-NEXT: movl $1, %eax718; X64-NEXT: retq719;720; GISEL-X64-LABEL: fcmp_olt2:721; GISEL-X64: ## %bb.0:722; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]723; GISEL-X64-NEXT: ucomiss %xmm0, %xmm1724; GISEL-X64-NEXT: seta %al725; GISEL-X64-NEXT: testb $1, %al726; GISEL-X64-NEXT: je LBB21_1727; GISEL-X64-NEXT: ## %bb.2: ## %bb1728; GISEL-X64-NEXT: xorl %eax, %eax729; GISEL-X64-NEXT: retq730; GISEL-X64-NEXT: LBB21_1: ## %bb2731; GISEL-X64-NEXT: movl $1, %eax732; GISEL-X64-NEXT: retq733 %1 = fcmp olt float %x, 0.000000e+00734 br i1 %1, label %bb1, label %bb2735bb2:736 ret i32 1737bb1:738 ret i32 0739}740 741define i32 @fcmp_ole1(float %x) {742; X64-LABEL: fcmp_ole1:743; X64: ## %bb.0:744; X64-NEXT: ucomiss %xmm0, %xmm0745; X64-NEXT: jp LBB22_1746; X64-NEXT: ## %bb.2: ## %bb1747; X64-NEXT: xorl %eax, %eax748; X64-NEXT: retq749; X64-NEXT: LBB22_1: ## %bb2750; X64-NEXT: movl $1, %eax751; X64-NEXT: retq752;753; GISEL-X64-LABEL: fcmp_ole1:754; GISEL-X64: ## %bb.0:755; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0756; GISEL-X64-NEXT: setae %al757; GISEL-X64-NEXT: testb $1, %al758; GISEL-X64-NEXT: je LBB22_1759; GISEL-X64-NEXT: ## %bb.2: ## %bb1760; GISEL-X64-NEXT: xorl %eax, %eax761; GISEL-X64-NEXT: retq762; GISEL-X64-NEXT: LBB22_1: ## %bb2763; GISEL-X64-NEXT: movl $1, %eax764; GISEL-X64-NEXT: retq765 %1 = fcmp ole float %x, %x766 br i1 %1, label %bb1, label %bb2767bb2:768 ret i32 1769bb1:770 ret i32 0771}772 773define i32 @fcmp_ole2(float %x) {774; X64-LABEL: fcmp_ole2:775; X64: ## %bb.0:776; X64-NEXT: xorps %xmm1, %xmm1777; X64-NEXT: ucomiss %xmm0, %xmm1778; X64-NEXT: jb LBB23_1779; X64-NEXT: ## %bb.2: ## %bb1780; X64-NEXT: xorl %eax, %eax781; X64-NEXT: retq782; X64-NEXT: LBB23_1: ## %bb2783; X64-NEXT: movl $1, %eax784; X64-NEXT: retq785;786; GISEL-X64-LABEL: fcmp_ole2:787; GISEL-X64: ## %bb.0:788; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]789; GISEL-X64-NEXT: ucomiss %xmm0, %xmm1790; GISEL-X64-NEXT: setae %al791; GISEL-X64-NEXT: testb $1, %al792; GISEL-X64-NEXT: je LBB23_1793; GISEL-X64-NEXT: ## %bb.2: ## %bb1794; GISEL-X64-NEXT: xorl %eax, %eax795; GISEL-X64-NEXT: retq796; GISEL-X64-NEXT: LBB23_1: ## %bb2797; GISEL-X64-NEXT: movl $1, %eax798; GISEL-X64-NEXT: retq799 %1 = fcmp ole float %x, 0.000000e+00800 br i1 %1, label %bb1, label %bb2801bb2:802 ret i32 1803bb1:804 ret i32 0805}806 807define i32 @fcmp_one1(float %x) {808; SDAG-X64-LABEL: fcmp_one1:809; SDAG-X64: ## %bb.0:810; SDAG-X64-NEXT: xorl %eax, %eax811; SDAG-X64-NEXT: testb %al, %al812; SDAG-X64-NEXT: je LBB24_1813; SDAG-X64-NEXT: ## %bb.2: ## %bb1814; SDAG-X64-NEXT: xorl %eax, %eax815; SDAG-X64-NEXT: retq816; SDAG-X64-NEXT: LBB24_1: ## %bb2817; SDAG-X64-NEXT: movl $1, %eax818; SDAG-X64-NEXT: retq819;820; FASTISEL-X64-LABEL: fcmp_one1:821; FASTISEL-X64: ## %bb.0:822; FASTISEL-X64-NEXT: movl $1, %eax823; FASTISEL-X64-NEXT: retq824;825; GISEL-X64-LABEL: fcmp_one1:826; GISEL-X64: ## %bb.0:827; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0828; GISEL-X64-NEXT: setne %al829; GISEL-X64-NEXT: testb $1, %al830; GISEL-X64-NEXT: je LBB24_1831; GISEL-X64-NEXT: ## %bb.2: ## %bb1832; GISEL-X64-NEXT: xorl %eax, %eax833; GISEL-X64-NEXT: retq834; GISEL-X64-NEXT: LBB24_1: ## %bb2835; GISEL-X64-NEXT: movl $1, %eax836; GISEL-X64-NEXT: retq837 %1 = fcmp one float %x, %x838 br i1 %1, label %bb1, label %bb2839bb2:840 ret i32 1841bb1:842 ret i32 0843}844 845define i32 @fcmp_one2(float %x) {846; X64-LABEL: fcmp_one2:847; X64: ## %bb.0:848; X64-NEXT: xorps %xmm1, %xmm1849; X64-NEXT: ucomiss %xmm1, %xmm0850; X64-NEXT: je LBB25_1851; X64-NEXT: ## %bb.2: ## %bb1852; X64-NEXT: xorl %eax, %eax853; X64-NEXT: retq854; X64-NEXT: LBB25_1: ## %bb2855; X64-NEXT: movl $1, %eax856; X64-NEXT: retq857;858; GISEL-X64-LABEL: fcmp_one2:859; GISEL-X64: ## %bb.0:860; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]861; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0862; GISEL-X64-NEXT: setne %al863; GISEL-X64-NEXT: testb $1, %al864; GISEL-X64-NEXT: je LBB25_1865; GISEL-X64-NEXT: ## %bb.2: ## %bb1866; GISEL-X64-NEXT: xorl %eax, %eax867; GISEL-X64-NEXT: retq868; GISEL-X64-NEXT: LBB25_1: ## %bb2869; GISEL-X64-NEXT: movl $1, %eax870; GISEL-X64-NEXT: retq871 %1 = fcmp one float %x, 0.000000e+00872 br i1 %1, label %bb1, label %bb2873bb2:874 ret i32 1875bb1:876 ret i32 0877}878 879define i32 @fcmp_ord1(float %x) {880; X64-LABEL: fcmp_ord1:881; X64: ## %bb.0:882; X64-NEXT: ucomiss %xmm0, %xmm0883; X64-NEXT: jp LBB26_1884; X64-NEXT: ## %bb.2: ## %bb1885; X64-NEXT: xorl %eax, %eax886; X64-NEXT: retq887; X64-NEXT: LBB26_1: ## %bb2888; X64-NEXT: movl $1, %eax889; X64-NEXT: retq890;891; GISEL-X64-LABEL: fcmp_ord1:892; GISEL-X64: ## %bb.0:893; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0894; GISEL-X64-NEXT: setnp %al895; GISEL-X64-NEXT: testb $1, %al896; GISEL-X64-NEXT: je LBB26_1897; GISEL-X64-NEXT: ## %bb.2: ## %bb1898; GISEL-X64-NEXT: xorl %eax, %eax899; GISEL-X64-NEXT: retq900; GISEL-X64-NEXT: LBB26_1: ## %bb2901; GISEL-X64-NEXT: movl $1, %eax902; GISEL-X64-NEXT: retq903 %1 = fcmp ord float %x, %x904 br i1 %1, label %bb1, label %bb2905bb2:906 ret i32 1907bb1:908 ret i32 0909}910 911define i32 @fcmp_ord2(float %x) {912; X64-LABEL: fcmp_ord2:913; X64: ## %bb.0:914; X64-NEXT: ucomiss %xmm0, %xmm0915; X64-NEXT: jp LBB27_1916; X64-NEXT: ## %bb.2: ## %bb1917; X64-NEXT: xorl %eax, %eax918; X64-NEXT: retq919; X64-NEXT: LBB27_1: ## %bb2920; X64-NEXT: movl $1, %eax921; X64-NEXT: retq922;923; GISEL-X64-LABEL: fcmp_ord2:924; GISEL-X64: ## %bb.0:925; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]926; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0927; GISEL-X64-NEXT: setnp %al928; GISEL-X64-NEXT: testb $1, %al929; GISEL-X64-NEXT: je LBB27_1930; GISEL-X64-NEXT: ## %bb.2: ## %bb1931; GISEL-X64-NEXT: xorl %eax, %eax932; GISEL-X64-NEXT: retq933; GISEL-X64-NEXT: LBB27_1: ## %bb2934; GISEL-X64-NEXT: movl $1, %eax935; GISEL-X64-NEXT: retq936 %1 = fcmp ord float %x, 0.000000e+00937 br i1 %1, label %bb1, label %bb2938bb2:939 ret i32 1940bb1:941 ret i32 0942}943 944define i32 @fcmp_uno1(float %x) {945; X64-LABEL: fcmp_uno1:946; X64: ## %bb.0:947; X64-NEXT: ucomiss %xmm0, %xmm0948; X64-NEXT: jp LBB28_2949; X64-NEXT: ## %bb.1: ## %bb2950; X64-NEXT: movl $1, %eax951; X64-NEXT: retq952; X64-NEXT: LBB28_2: ## %bb1953; X64-NEXT: xorl %eax, %eax954; X64-NEXT: retq955;956; GISEL-X64-LABEL: fcmp_uno1:957; GISEL-X64: ## %bb.0:958; GISEL-X64-NEXT: ucomiss %xmm0, %xmm0959; GISEL-X64-NEXT: setp %al960; GISEL-X64-NEXT: testb $1, %al961; GISEL-X64-NEXT: jne LBB28_2962; GISEL-X64-NEXT: ## %bb.1: ## %bb2963; GISEL-X64-NEXT: movl $1, %eax964; GISEL-X64-NEXT: retq965; GISEL-X64-NEXT: LBB28_2: ## %bb1966; GISEL-X64-NEXT: xorl %eax, %eax967; GISEL-X64-NEXT: retq968 %1 = fcmp uno float %x, %x969 br i1 %1, label %bb1, label %bb2970bb2:971 ret i32 1972bb1:973 ret i32 0974}975 976define i32 @fcmp_uno2(float %x) {977; X64-LABEL: fcmp_uno2:978; X64: ## %bb.0:979; X64-NEXT: ucomiss %xmm0, %xmm0980; X64-NEXT: jp LBB29_2981; X64-NEXT: ## %bb.1: ## %bb2982; X64-NEXT: movl $1, %eax983; X64-NEXT: retq984; X64-NEXT: LBB29_2: ## %bb1985; X64-NEXT: xorl %eax, %eax986; X64-NEXT: retq987;988; GISEL-X64-LABEL: fcmp_uno2:989; GISEL-X64: ## %bb.0:990; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]991; GISEL-X64-NEXT: ucomiss %xmm1, %xmm0992; GISEL-X64-NEXT: setp %al993; GISEL-X64-NEXT: testb $1, %al994; GISEL-X64-NEXT: jne LBB29_2995; GISEL-X64-NEXT: ## %bb.1: ## %bb2996; GISEL-X64-NEXT: movl $1, %eax997; GISEL-X64-NEXT: retq998; GISEL-X64-NEXT: LBB29_2: ## %bb1999; GISEL-X64-NEXT: xorl %eax, %eax1000; GISEL-X64-NEXT: retq1001 %1 = fcmp uno float %x, 0.000000e+001002 br i1 %1, label %bb1, label %bb21003bb2:1004 ret i32 11005bb1:1006 ret i32 01007}1008 1009define i32 @fcmp_ueq1(float %x) {1010; SDAG-X64-LABEL: fcmp_ueq1:1011; SDAG-X64: ## %bb.0:1012; SDAG-X64-NEXT: movb $1, %al1013; SDAG-X64-NEXT: testb %al, %al1014; SDAG-X64-NEXT: jne LBB30_21015; SDAG-X64-NEXT: ## %bb.1: ## %bb21016; SDAG-X64-NEXT: movl $1, %eax1017; SDAG-X64-NEXT: retq1018; SDAG-X64-NEXT: LBB30_2: ## %bb11019; SDAG-X64-NEXT: xorl %eax, %eax1020; SDAG-X64-NEXT: retq1021;1022; FASTISEL-X64-LABEL: fcmp_ueq1:1023; FASTISEL-X64: ## %bb.0:1024; FASTISEL-X64-NEXT: xorl %eax, %eax1025; FASTISEL-X64-NEXT: retq1026;1027; GISEL-X64-LABEL: fcmp_ueq1:1028; GISEL-X64: ## %bb.0:1029; GISEL-X64-NEXT: ucomiss %xmm0, %xmm01030; GISEL-X64-NEXT: sete %al1031; GISEL-X64-NEXT: testb $1, %al1032; GISEL-X64-NEXT: jne LBB30_21033; GISEL-X64-NEXT: ## %bb.1: ## %bb21034; GISEL-X64-NEXT: movl $1, %eax1035; GISEL-X64-NEXT: retq1036; GISEL-X64-NEXT: LBB30_2: ## %bb11037; GISEL-X64-NEXT: xorl %eax, %eax1038; GISEL-X64-NEXT: retq1039 %1 = fcmp ueq float %x, %x1040 br i1 %1, label %bb1, label %bb21041bb2:1042 ret i32 11043bb1:1044 ret i32 01045}1046 1047define i32 @fcmp_ueq2(float %x) {1048; X64-LABEL: fcmp_ueq2:1049; X64: ## %bb.0:1050; X64-NEXT: xorps %xmm1, %xmm11051; X64-NEXT: ucomiss %xmm1, %xmm01052; X64-NEXT: je LBB31_21053; X64-NEXT: ## %bb.1: ## %bb21054; X64-NEXT: movl $1, %eax1055; X64-NEXT: retq1056; X64-NEXT: LBB31_2: ## %bb11057; X64-NEXT: xorl %eax, %eax1058; X64-NEXT: retq1059;1060; GISEL-X64-LABEL: fcmp_ueq2:1061; GISEL-X64: ## %bb.0:1062; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]1063; GISEL-X64-NEXT: ucomiss %xmm1, %xmm01064; GISEL-X64-NEXT: sete %al1065; GISEL-X64-NEXT: testb $1, %al1066; GISEL-X64-NEXT: jne LBB31_21067; GISEL-X64-NEXT: ## %bb.1: ## %bb21068; GISEL-X64-NEXT: movl $1, %eax1069; GISEL-X64-NEXT: retq1070; GISEL-X64-NEXT: LBB31_2: ## %bb11071; GISEL-X64-NEXT: xorl %eax, %eax1072; GISEL-X64-NEXT: retq1073 %1 = fcmp ueq float %x, 0.000000e+001074 br i1 %1, label %bb1, label %bb21075bb2:1076 ret i32 11077bb1:1078 ret i32 01079}1080 1081define i32 @fcmp_ugt1(float %x) {1082; X64-LABEL: fcmp_ugt1:1083; X64: ## %bb.0:1084; X64-NEXT: ucomiss %xmm0, %xmm01085; X64-NEXT: jnp LBB32_11086; X64-NEXT: ## %bb.2: ## %bb11087; X64-NEXT: xorl %eax, %eax1088; X64-NEXT: retq1089; X64-NEXT: LBB32_1: ## %bb21090; X64-NEXT: movl $1, %eax1091; X64-NEXT: retq1092;1093; GISEL-X64-LABEL: fcmp_ugt1:1094; GISEL-X64: ## %bb.0:1095; GISEL-X64-NEXT: ucomiss %xmm0, %xmm01096; GISEL-X64-NEXT: setb %al1097; GISEL-X64-NEXT: testb $1, %al1098; GISEL-X64-NEXT: je LBB32_11099; GISEL-X64-NEXT: ## %bb.2: ## %bb11100; GISEL-X64-NEXT: xorl %eax, %eax1101; GISEL-X64-NEXT: retq1102; GISEL-X64-NEXT: LBB32_1: ## %bb21103; GISEL-X64-NEXT: movl $1, %eax1104; GISEL-X64-NEXT: retq1105 %1 = fcmp ugt float %x, %x1106 br i1 %1, label %bb1, label %bb21107bb2:1108 ret i32 11109bb1:1110 ret i32 01111}1112 1113define i32 @fcmp_ugt2(float %x) {1114; X64-LABEL: fcmp_ugt2:1115; X64: ## %bb.0:1116; X64-NEXT: xorps %xmm1, %xmm11117; X64-NEXT: ucomiss %xmm0, %xmm11118; X64-NEXT: jae LBB33_11119; X64-NEXT: ## %bb.2: ## %bb11120; X64-NEXT: xorl %eax, %eax1121; X64-NEXT: retq1122; X64-NEXT: LBB33_1: ## %bb21123; X64-NEXT: movl $1, %eax1124; X64-NEXT: retq1125;1126; GISEL-X64-LABEL: fcmp_ugt2:1127; GISEL-X64: ## %bb.0:1128; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]1129; GISEL-X64-NEXT: ucomiss %xmm0, %xmm11130; GISEL-X64-NEXT: setb %al1131; GISEL-X64-NEXT: testb $1, %al1132; GISEL-X64-NEXT: je LBB33_11133; GISEL-X64-NEXT: ## %bb.2: ## %bb11134; GISEL-X64-NEXT: xorl %eax, %eax1135; GISEL-X64-NEXT: retq1136; GISEL-X64-NEXT: LBB33_1: ## %bb21137; GISEL-X64-NEXT: movl $1, %eax1138; GISEL-X64-NEXT: retq1139 %1 = fcmp ugt float %x, 0.000000e+001140 br i1 %1, label %bb1, label %bb21141bb2:1142 ret i32 11143bb1:1144 ret i32 01145}1146 1147define i32 @fcmp_uge1(float %x) {1148; SDAG-X64-LABEL: fcmp_uge1:1149; SDAG-X64: ## %bb.0:1150; SDAG-X64-NEXT: movb $1, %al1151; SDAG-X64-NEXT: testb %al, %al1152; SDAG-X64-NEXT: je LBB34_11153; SDAG-X64-NEXT: ## %bb.2: ## %bb11154; SDAG-X64-NEXT: xorl %eax, %eax1155; SDAG-X64-NEXT: retq1156; SDAG-X64-NEXT: LBB34_1: ## %bb21157; SDAG-X64-NEXT: movl $1, %eax1158; SDAG-X64-NEXT: retq1159;1160; FASTISEL-X64-LABEL: fcmp_uge1:1161; FASTISEL-X64: ## %bb.0:1162; FASTISEL-X64-NEXT: xorl %eax, %eax1163; FASTISEL-X64-NEXT: retq1164;1165; GISEL-X64-LABEL: fcmp_uge1:1166; GISEL-X64: ## %bb.0:1167; GISEL-X64-NEXT: ucomiss %xmm0, %xmm01168; GISEL-X64-NEXT: setbe %al1169; GISEL-X64-NEXT: testb $1, %al1170; GISEL-X64-NEXT: je LBB34_11171; GISEL-X64-NEXT: ## %bb.2: ## %bb11172; GISEL-X64-NEXT: xorl %eax, %eax1173; GISEL-X64-NEXT: retq1174; GISEL-X64-NEXT: LBB34_1: ## %bb21175; GISEL-X64-NEXT: movl $1, %eax1176; GISEL-X64-NEXT: retq1177 %1 = fcmp uge float %x, %x1178 br i1 %1, label %bb1, label %bb21179bb2:1180 ret i32 11181bb1:1182 ret i32 01183}1184 1185define i32 @fcmp_uge2(float %x) {1186; X64-LABEL: fcmp_uge2:1187; X64: ## %bb.0:1188; X64-NEXT: xorps %xmm1, %xmm11189; X64-NEXT: ucomiss %xmm0, %xmm11190; X64-NEXT: ja LBB35_11191; X64-NEXT: ## %bb.2: ## %bb11192; X64-NEXT: xorl %eax, %eax1193; X64-NEXT: retq1194; X64-NEXT: LBB35_1: ## %bb21195; X64-NEXT: movl $1, %eax1196; X64-NEXT: retq1197;1198; GISEL-X64-LABEL: fcmp_uge2:1199; GISEL-X64: ## %bb.0:1200; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]1201; GISEL-X64-NEXT: ucomiss %xmm0, %xmm11202; GISEL-X64-NEXT: setbe %al1203; GISEL-X64-NEXT: testb $1, %al1204; GISEL-X64-NEXT: je LBB35_11205; GISEL-X64-NEXT: ## %bb.2: ## %bb11206; GISEL-X64-NEXT: xorl %eax, %eax1207; GISEL-X64-NEXT: retq1208; GISEL-X64-NEXT: LBB35_1: ## %bb21209; GISEL-X64-NEXT: movl $1, %eax1210; GISEL-X64-NEXT: retq1211 %1 = fcmp uge float %x, 0.000000e+001212 br i1 %1, label %bb1, label %bb21213bb2:1214 ret i32 11215bb1:1216 ret i32 01217}1218 1219define i32 @fcmp_ult1(float %x) {1220; X64-LABEL: fcmp_ult1:1221; X64: ## %bb.0:1222; X64-NEXT: ucomiss %xmm0, %xmm01223; X64-NEXT: jnp LBB36_11224; X64-NEXT: ## %bb.2: ## %bb11225; X64-NEXT: xorl %eax, %eax1226; X64-NEXT: retq1227; X64-NEXT: LBB36_1: ## %bb21228; X64-NEXT: movl $1, %eax1229; X64-NEXT: retq1230;1231; GISEL-X64-LABEL: fcmp_ult1:1232; GISEL-X64: ## %bb.0:1233; GISEL-X64-NEXT: ucomiss %xmm0, %xmm01234; GISEL-X64-NEXT: setb %al1235; GISEL-X64-NEXT: testb $1, %al1236; GISEL-X64-NEXT: je LBB36_11237; GISEL-X64-NEXT: ## %bb.2: ## %bb11238; GISEL-X64-NEXT: xorl %eax, %eax1239; GISEL-X64-NEXT: retq1240; GISEL-X64-NEXT: LBB36_1: ## %bb21241; GISEL-X64-NEXT: movl $1, %eax1242; GISEL-X64-NEXT: retq1243 %1 = fcmp ult float %x, %x1244 br i1 %1, label %bb1, label %bb21245bb2:1246 ret i32 11247bb1:1248 ret i32 01249}1250 1251define i32 @fcmp_ult2(float %x) {1252; X64-LABEL: fcmp_ult2:1253; X64: ## %bb.0:1254; X64-NEXT: xorps %xmm1, %xmm11255; X64-NEXT: ucomiss %xmm1, %xmm01256; X64-NEXT: jae LBB37_11257; X64-NEXT: ## %bb.2: ## %bb11258; X64-NEXT: xorl %eax, %eax1259; X64-NEXT: retq1260; X64-NEXT: LBB37_1: ## %bb21261; X64-NEXT: movl $1, %eax1262; X64-NEXT: retq1263;1264; GISEL-X64-LABEL: fcmp_ult2:1265; GISEL-X64: ## %bb.0:1266; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]1267; GISEL-X64-NEXT: ucomiss %xmm1, %xmm01268; GISEL-X64-NEXT: setb %al1269; GISEL-X64-NEXT: testb $1, %al1270; GISEL-X64-NEXT: je LBB37_11271; GISEL-X64-NEXT: ## %bb.2: ## %bb11272; GISEL-X64-NEXT: xorl %eax, %eax1273; GISEL-X64-NEXT: retq1274; GISEL-X64-NEXT: LBB37_1: ## %bb21275; GISEL-X64-NEXT: movl $1, %eax1276; GISEL-X64-NEXT: retq1277 %1 = fcmp ult float %x, 0.000000e+001278 br i1 %1, label %bb1, label %bb21279bb2:1280 ret i32 11281bb1:1282 ret i32 01283}1284 1285define i32 @fcmp_ule1(float %x) {1286; SDAG-X64-LABEL: fcmp_ule1:1287; SDAG-X64: ## %bb.0:1288; SDAG-X64-NEXT: movb $1, %al1289; SDAG-X64-NEXT: testb %al, %al1290; SDAG-X64-NEXT: je LBB38_11291; SDAG-X64-NEXT: ## %bb.2: ## %bb11292; SDAG-X64-NEXT: xorl %eax, %eax1293; SDAG-X64-NEXT: retq1294; SDAG-X64-NEXT: LBB38_1: ## %bb21295; SDAG-X64-NEXT: movl $1, %eax1296; SDAG-X64-NEXT: retq1297;1298; FASTISEL-X64-LABEL: fcmp_ule1:1299; FASTISEL-X64: ## %bb.0:1300; FASTISEL-X64-NEXT: xorl %eax, %eax1301; FASTISEL-X64-NEXT: retq1302;1303; GISEL-X64-LABEL: fcmp_ule1:1304; GISEL-X64: ## %bb.0:1305; GISEL-X64-NEXT: ucomiss %xmm0, %xmm01306; GISEL-X64-NEXT: setbe %al1307; GISEL-X64-NEXT: testb $1, %al1308; GISEL-X64-NEXT: je LBB38_11309; GISEL-X64-NEXT: ## %bb.2: ## %bb11310; GISEL-X64-NEXT: xorl %eax, %eax1311; GISEL-X64-NEXT: retq1312; GISEL-X64-NEXT: LBB38_1: ## %bb21313; GISEL-X64-NEXT: movl $1, %eax1314; GISEL-X64-NEXT: retq1315 %1 = fcmp ule float %x, %x1316 br i1 %1, label %bb1, label %bb21317bb2:1318 ret i32 11319bb1:1320 ret i32 01321}1322 1323define i32 @fcmp_ule2(float %x) {1324; X64-LABEL: fcmp_ule2:1325; X64: ## %bb.0:1326; X64-NEXT: xorps %xmm1, %xmm11327; X64-NEXT: ucomiss %xmm1, %xmm01328; X64-NEXT: ja LBB39_11329; X64-NEXT: ## %bb.2: ## %bb11330; X64-NEXT: xorl %eax, %eax1331; X64-NEXT: retq1332; X64-NEXT: LBB39_1: ## %bb21333; X64-NEXT: movl $1, %eax1334; X64-NEXT: retq1335;1336; GISEL-X64-LABEL: fcmp_ule2:1337; GISEL-X64: ## %bb.0:1338; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]1339; GISEL-X64-NEXT: ucomiss %xmm1, %xmm01340; GISEL-X64-NEXT: setbe %al1341; GISEL-X64-NEXT: testb $1, %al1342; GISEL-X64-NEXT: je LBB39_11343; GISEL-X64-NEXT: ## %bb.2: ## %bb11344; GISEL-X64-NEXT: xorl %eax, %eax1345; GISEL-X64-NEXT: retq1346; GISEL-X64-NEXT: LBB39_1: ## %bb21347; GISEL-X64-NEXT: movl $1, %eax1348; GISEL-X64-NEXT: retq1349 %1 = fcmp ule float %x, 0.000000e+001350 br i1 %1, label %bb1, label %bb21351bb2:1352 ret i32 11353bb1:1354 ret i32 01355}1356 1357define i32 @fcmp_une1(float %x) {1358; X64-LABEL: fcmp_une1:1359; X64: ## %bb.0:1360; X64-NEXT: ucomiss %xmm0, %xmm01361; X64-NEXT: jnp LBB40_11362; X64-NEXT: ## %bb.2: ## %bb11363; X64-NEXT: xorl %eax, %eax1364; X64-NEXT: retq1365; X64-NEXT: LBB40_1: ## %bb21366; X64-NEXT: movl $1, %eax1367; X64-NEXT: retq1368;1369; GISEL-X64-LABEL: fcmp_une1:1370; GISEL-X64: ## %bb.0:1371; GISEL-X64-NEXT: ucomiss %xmm0, %xmm01372; GISEL-X64-NEXT: setne %al1373; GISEL-X64-NEXT: setp %cl1374; GISEL-X64-NEXT: orb %al, %cl1375; GISEL-X64-NEXT: testb $1, %cl1376; GISEL-X64-NEXT: je LBB40_11377; GISEL-X64-NEXT: ## %bb.2: ## %bb11378; GISEL-X64-NEXT: xorl %eax, %eax1379; GISEL-X64-NEXT: retq1380; GISEL-X64-NEXT: LBB40_1: ## %bb21381; GISEL-X64-NEXT: movl $1, %eax1382; GISEL-X64-NEXT: retq1383 %1 = fcmp une float %x, %x1384 br i1 %1, label %bb1, label %bb21385bb2:1386 ret i32 11387bb1:1388 ret i32 01389}1390 1391define i32 @fcmp_une2(float %x) {1392; X64-LABEL: fcmp_une2:1393; X64: ## %bb.0:1394; X64-NEXT: xorps %xmm1, %xmm11395; X64-NEXT: ucomiss %xmm1, %xmm01396; X64-NEXT: jne LBB41_21397; X64-NEXT: jnp LBB41_11398; X64-NEXT: LBB41_2: ## %bb11399; X64-NEXT: xorl %eax, %eax1400; X64-NEXT: retq1401; X64-NEXT: LBB41_1: ## %bb21402; X64-NEXT: movl $1, %eax1403; X64-NEXT: retq1404;1405; GISEL-X64-LABEL: fcmp_une2:1406; GISEL-X64: ## %bb.0:1407; GISEL-X64-NEXT: movss {{.*#+}} xmm1 = [0.0E+0,0.0E+0,0.0E+0,0.0E+0]1408; GISEL-X64-NEXT: ucomiss %xmm1, %xmm01409; GISEL-X64-NEXT: setne %al1410; GISEL-X64-NEXT: setp %cl1411; GISEL-X64-NEXT: orb %al, %cl1412; GISEL-X64-NEXT: testb $1, %cl1413; GISEL-X64-NEXT: je LBB41_11414; GISEL-X64-NEXT: ## %bb.2: ## %bb11415; GISEL-X64-NEXT: xorl %eax, %eax1416; GISEL-X64-NEXT: retq1417; GISEL-X64-NEXT: LBB41_1: ## %bb21418; GISEL-X64-NEXT: movl $1, %eax1419; GISEL-X64-NEXT: retq1420 %1 = fcmp une float %x, 0.000000e+001421 br i1 %1, label %bb1, label %bb21422bb2:1423 ret i32 11424bb1:1425 ret i32 01426}1427