brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.7 KiB · 4a223aa Raw
889 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s                               -mtriple=x86_64-apple-darwin10 -mattr=+sse,+sse2,-x87 -verify-machineinstrs | FileCheck %s --check-prefixes=X64,SDAG-X643; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mattr=+sse,+sse2,-x87 -verify-machineinstrs | FileCheck %s --check-prefixes=X64,FAST-X644; RUN: llc < %s -global-isel -global-isel-abort=1 -mtriple=x86_64-apple-darwin10 -mattr=+sse,+sse2,-x87 -verify-machineinstrs | FileCheck %s --check-prefixes=GISEL-X645; i686 with 64 bit store is issue.6; RUN: llc < %s                               -mtriple=i686-apple-darwin10 -mattr=-sse,-sse2,+x87 -verify-machineinstrs | FileCheck %s --check-prefixes=X86,SDAG-X867; Allow fast-isel to fallback to selection dag on x868; RUN: llc < %s -fast-isel -mtriple=i686-apple-darwin10 -mattr=-sse,-sse2,+x87 -verify-machineinstrs | FileCheck %s --check-prefixes=X86,FAST-X869; llc < %s -global-isel -global-isel-abort=1 -mtriple=i686-apple-darwin10 -mattr=-sse,-sse2,+x87 -verify-machineinstrs | FileCheck %s --check-prefixes=GISEL-X8610 11  define i1 @fcmp_float_oeq(float %x, float %y) nounwind {12; X64-LABEL: fcmp_float_oeq:13; X64:       ## %bb.0:14; X64-NEXT:    cmpeqss %xmm1, %xmm015; X64-NEXT:    movd %xmm0, %eax16; X64-NEXT:    andl $1, %eax17; X64-NEXT:    ## kill: def $al killed $al killed $eax18; X64-NEXT:    retq19;20; GISEL-X64-LABEL: fcmp_float_oeq:21; GISEL-X64:       ## %bb.0:22; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm023; GISEL-X64-NEXT:    sete %cl24; GISEL-X64-NEXT:    setnp %al25; GISEL-X64-NEXT:    andb %cl, %al26; GISEL-X64-NEXT:    retq27;28; X86-LABEL: fcmp_float_oeq:29; X86:       ## %bb.0:30; X86-NEXT:    flds {{[0-9]+}}(%esp)31; X86-NEXT:    flds {{[0-9]+}}(%esp)32; X86-NEXT:    fucompp33; X86-NEXT:    fnstsw %ax34; X86-NEXT:    ## kill: def $ah killed $ah killed $ax35; X86-NEXT:    sahf36; X86-NEXT:    setnp %cl37; X86-NEXT:    sete %al38; X86-NEXT:    andb %cl, %al39; X86-NEXT:    retl40    %1 = fcmp oeq float %x, %y41    ret i1 %142  }43 44  define i1 @fcmp_float_ogt(float %x, float %y) nounwind {45; X64-LABEL: fcmp_float_ogt:46; X64:       ## %bb.0:47; X64-NEXT:    ucomiss %xmm1, %xmm048; X64-NEXT:    seta %al49; X64-NEXT:    retq50;51; GISEL-X64-LABEL: fcmp_float_ogt:52; GISEL-X64:       ## %bb.0:53; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm054; GISEL-X64-NEXT:    seta %al55; GISEL-X64-NEXT:    retq56;57; X86-LABEL: fcmp_float_ogt:58; X86:       ## %bb.0:59; X86-NEXT:    flds {{[0-9]+}}(%esp)60; X86-NEXT:    flds {{[0-9]+}}(%esp)61; X86-NEXT:    fucompp62; X86-NEXT:    fnstsw %ax63; X86-NEXT:    ## kill: def $ah killed $ah killed $ax64; X86-NEXT:    sahf65; X86-NEXT:    seta %al66; X86-NEXT:    retl67    %1 = fcmp ogt float %x, %y68    ret i1 %169  }70 71  define i1 @fcmp_float_oge(float %x, float %y) nounwind {72; X64-LABEL: fcmp_float_oge:73; X64:       ## %bb.0:74; X64-NEXT:    ucomiss %xmm1, %xmm075; X64-NEXT:    setae %al76; X64-NEXT:    retq77;78; GISEL-X64-LABEL: fcmp_float_oge:79; GISEL-X64:       ## %bb.0:80; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm081; GISEL-X64-NEXT:    setae %al82; GISEL-X64-NEXT:    retq83;84; X86-LABEL: fcmp_float_oge:85; X86:       ## %bb.0:86; X86-NEXT:    flds {{[0-9]+}}(%esp)87; X86-NEXT:    flds {{[0-9]+}}(%esp)88; X86-NEXT:    fucompp89; X86-NEXT:    fnstsw %ax90; X86-NEXT:    ## kill: def $ah killed $ah killed $ax91; X86-NEXT:    sahf92; X86-NEXT:    setae %al93; X86-NEXT:    retl94    %1 = fcmp oge float %x, %y95    ret i1 %196  }97 98  define i1 @fcmp_float_olt(float %x, float %y) nounwind {99; X64-LABEL: fcmp_float_olt:100; X64:       ## %bb.0:101; X64-NEXT:    ucomiss %xmm0, %xmm1102; X64-NEXT:    seta %al103; X64-NEXT:    retq104;105; GISEL-X64-LABEL: fcmp_float_olt:106; GISEL-X64:       ## %bb.0:107; GISEL-X64-NEXT:    ucomiss %xmm0, %xmm1108; GISEL-X64-NEXT:    seta %al109; GISEL-X64-NEXT:    retq110;111; SDAG-X86-LABEL: fcmp_float_olt:112; SDAG-X86:       ## %bb.0:113; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)114; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)115; SDAG-X86-NEXT:    fucompp116; SDAG-X86-NEXT:    fnstsw %ax117; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax118; SDAG-X86-NEXT:    sahf119; SDAG-X86-NEXT:    seta %al120; SDAG-X86-NEXT:    retl121;122; FAST-X86-LABEL: fcmp_float_olt:123; FAST-X86:       ## %bb.0:124; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)125; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)126; FAST-X86-NEXT:    fxch %st(1)127; FAST-X86-NEXT:    fucompp128; FAST-X86-NEXT:    fnstsw %ax129; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax130; FAST-X86-NEXT:    sahf131; FAST-X86-NEXT:    seta %al132; FAST-X86-NEXT:    retl133    %1 = fcmp olt float %x, %y134    ret i1 %1135  }136 137  define i1 @fcmp_float_ole(float %x, float %y) nounwind {138; X64-LABEL: fcmp_float_ole:139; X64:       ## %bb.0:140; X64-NEXT:    ucomiss %xmm0, %xmm1141; X64-NEXT:    setae %al142; X64-NEXT:    retq143;144; GISEL-X64-LABEL: fcmp_float_ole:145; GISEL-X64:       ## %bb.0:146; GISEL-X64-NEXT:    ucomiss %xmm0, %xmm1147; GISEL-X64-NEXT:    setae %al148; GISEL-X64-NEXT:    retq149;150; SDAG-X86-LABEL: fcmp_float_ole:151; SDAG-X86:       ## %bb.0:152; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)153; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)154; SDAG-X86-NEXT:    fucompp155; SDAG-X86-NEXT:    fnstsw %ax156; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax157; SDAG-X86-NEXT:    sahf158; SDAG-X86-NEXT:    setae %al159; SDAG-X86-NEXT:    retl160;161; FAST-X86-LABEL: fcmp_float_ole:162; FAST-X86:       ## %bb.0:163; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)164; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)165; FAST-X86-NEXT:    fxch %st(1)166; FAST-X86-NEXT:    fucompp167; FAST-X86-NEXT:    fnstsw %ax168; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax169; FAST-X86-NEXT:    sahf170; FAST-X86-NEXT:    setae %al171; FAST-X86-NEXT:    retl172    %1 = fcmp ole float %x, %y173    ret i1 %1174  }175 176  define i1 @fcmp_float_one(float %x, float %y) nounwind {177; X64-LABEL: fcmp_float_one:178; X64:       ## %bb.0:179; X64-NEXT:    ucomiss %xmm1, %xmm0180; X64-NEXT:    setne %al181; X64-NEXT:    retq182;183; GISEL-X64-LABEL: fcmp_float_one:184; GISEL-X64:       ## %bb.0:185; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm0186; GISEL-X64-NEXT:    setne %al187; GISEL-X64-NEXT:    retq188;189; X86-LABEL: fcmp_float_one:190; X86:       ## %bb.0:191; X86-NEXT:    flds {{[0-9]+}}(%esp)192; X86-NEXT:    flds {{[0-9]+}}(%esp)193; X86-NEXT:    fucompp194; X86-NEXT:    fnstsw %ax195; X86-NEXT:    ## kill: def $ah killed $ah killed $ax196; X86-NEXT:    sahf197; X86-NEXT:    setne %al198; X86-NEXT:    retl199    %1 = fcmp one float %x, %y200    ret i1 %1201  }202 203  define i1 @fcmp_float_ord(float %x, float %y) nounwind {204; X64-LABEL: fcmp_float_ord:205; X64:       ## %bb.0:206; X64-NEXT:    ucomiss %xmm1, %xmm0207; X64-NEXT:    setnp %al208; X64-NEXT:    retq209;210; GISEL-X64-LABEL: fcmp_float_ord:211; GISEL-X64:       ## %bb.0:212; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm0213; GISEL-X64-NEXT:    setnp %al214; GISEL-X64-NEXT:    retq215;216; X86-LABEL: fcmp_float_ord:217; X86:       ## %bb.0:218; X86-NEXT:    flds {{[0-9]+}}(%esp)219; X86-NEXT:    flds {{[0-9]+}}(%esp)220; X86-NEXT:    fucompp221; X86-NEXT:    fnstsw %ax222; X86-NEXT:    ## kill: def $ah killed $ah killed $ax223; X86-NEXT:    sahf224; X86-NEXT:    setnp %al225; X86-NEXT:    retl226    %1 = fcmp ord float %x, %y227    ret i1 %1228  }229 230  define i1 @fcmp_float_uno(float %x, float %y) nounwind {231; X64-LABEL: fcmp_float_uno:232; X64:       ## %bb.0:233; X64-NEXT:    ucomiss %xmm1, %xmm0234; X64-NEXT:    setp %al235; X64-NEXT:    retq236;237; GISEL-X64-LABEL: fcmp_float_uno:238; GISEL-X64:       ## %bb.0:239; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm0240; GISEL-X64-NEXT:    setp %al241; GISEL-X64-NEXT:    retq242;243; X86-LABEL: fcmp_float_uno:244; X86:       ## %bb.0:245; X86-NEXT:    flds {{[0-9]+}}(%esp)246; X86-NEXT:    flds {{[0-9]+}}(%esp)247; X86-NEXT:    fucompp248; X86-NEXT:    fnstsw %ax249; X86-NEXT:    ## kill: def $ah killed $ah killed $ax250; X86-NEXT:    sahf251; X86-NEXT:    setp %al252; X86-NEXT:    retl253    %1 = fcmp uno float %x, %y254    ret i1 %1255  }256 257  define i1 @fcmp_float_ueq(float %x, float %y) nounwind {258; X64-LABEL: fcmp_float_ueq:259; X64:       ## %bb.0:260; X64-NEXT:    ucomiss %xmm1, %xmm0261; X64-NEXT:    sete %al262; X64-NEXT:    retq263;264; GISEL-X64-LABEL: fcmp_float_ueq:265; GISEL-X64:       ## %bb.0:266; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm0267; GISEL-X64-NEXT:    sete %al268; GISEL-X64-NEXT:    retq269;270; X86-LABEL: fcmp_float_ueq:271; X86:       ## %bb.0:272; X86-NEXT:    flds {{[0-9]+}}(%esp)273; X86-NEXT:    flds {{[0-9]+}}(%esp)274; X86-NEXT:    fucompp275; X86-NEXT:    fnstsw %ax276; X86-NEXT:    ## kill: def $ah killed $ah killed $ax277; X86-NEXT:    sahf278; X86-NEXT:    sete %al279; X86-NEXT:    retl280    %1 = fcmp ueq float %x, %y281    ret i1 %1282  }283 284  define i1 @fcmp_float_ugt(float %x, float %y) nounwind {285; X64-LABEL: fcmp_float_ugt:286; X64:       ## %bb.0:287; X64-NEXT:    ucomiss %xmm0, %xmm1288; X64-NEXT:    setb %al289; X64-NEXT:    retq290;291; GISEL-X64-LABEL: fcmp_float_ugt:292; GISEL-X64:       ## %bb.0:293; GISEL-X64-NEXT:    ucomiss %xmm0, %xmm1294; GISEL-X64-NEXT:    setb %al295; GISEL-X64-NEXT:    retq296;297; SDAG-X86-LABEL: fcmp_float_ugt:298; SDAG-X86:       ## %bb.0:299; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)300; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)301; SDAG-X86-NEXT:    fucompp302; SDAG-X86-NEXT:    fnstsw %ax303; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax304; SDAG-X86-NEXT:    sahf305; SDAG-X86-NEXT:    setb %al306; SDAG-X86-NEXT:    retl307;308; FAST-X86-LABEL: fcmp_float_ugt:309; FAST-X86:       ## %bb.0:310; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)311; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)312; FAST-X86-NEXT:    fxch %st(1)313; FAST-X86-NEXT:    fucompp314; FAST-X86-NEXT:    fnstsw %ax315; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax316; FAST-X86-NEXT:    sahf317; FAST-X86-NEXT:    setb %al318; FAST-X86-NEXT:    retl319    %1 = fcmp ugt float %x, %y320    ret i1 %1321  }322 323  define i1 @fcmp_float_uge(float %x, float %y) nounwind {324; X64-LABEL: fcmp_float_uge:325; X64:       ## %bb.0:326; X64-NEXT:    ucomiss %xmm0, %xmm1327; X64-NEXT:    setbe %al328; X64-NEXT:    retq329;330; GISEL-X64-LABEL: fcmp_float_uge:331; GISEL-X64:       ## %bb.0:332; GISEL-X64-NEXT:    ucomiss %xmm0, %xmm1333; GISEL-X64-NEXT:    setbe %al334; GISEL-X64-NEXT:    retq335;336; SDAG-X86-LABEL: fcmp_float_uge:337; SDAG-X86:       ## %bb.0:338; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)339; SDAG-X86-NEXT:    flds {{[0-9]+}}(%esp)340; SDAG-X86-NEXT:    fucompp341; SDAG-X86-NEXT:    fnstsw %ax342; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax343; SDAG-X86-NEXT:    sahf344; SDAG-X86-NEXT:    setbe %al345; SDAG-X86-NEXT:    retl346;347; FAST-X86-LABEL: fcmp_float_uge:348; FAST-X86:       ## %bb.0:349; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)350; FAST-X86-NEXT:    flds {{[0-9]+}}(%esp)351; FAST-X86-NEXT:    fxch %st(1)352; FAST-X86-NEXT:    fucompp353; FAST-X86-NEXT:    fnstsw %ax354; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax355; FAST-X86-NEXT:    sahf356; FAST-X86-NEXT:    setbe %al357; FAST-X86-NEXT:    retl358    %1 = fcmp uge float %x, %y359    ret i1 %1360  }361 362  define i1 @fcmp_float_ult(float %x, float %y) nounwind {363; X64-LABEL: fcmp_float_ult:364; X64:       ## %bb.0:365; X64-NEXT:    ucomiss %xmm1, %xmm0366; X64-NEXT:    setb %al367; X64-NEXT:    retq368;369; GISEL-X64-LABEL: fcmp_float_ult:370; GISEL-X64:       ## %bb.0:371; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm0372; GISEL-X64-NEXT:    setb %al373; GISEL-X64-NEXT:    retq374;375; X86-LABEL: fcmp_float_ult:376; X86:       ## %bb.0:377; X86-NEXT:    flds {{[0-9]+}}(%esp)378; X86-NEXT:    flds {{[0-9]+}}(%esp)379; X86-NEXT:    fucompp380; X86-NEXT:    fnstsw %ax381; X86-NEXT:    ## kill: def $ah killed $ah killed $ax382; X86-NEXT:    sahf383; X86-NEXT:    setb %al384; X86-NEXT:    retl385    %1 = fcmp ult float %x, %y386    ret i1 %1387  }388 389  define i1 @fcmp_float_ule(float %x, float %y) nounwind {390; X64-LABEL: fcmp_float_ule:391; X64:       ## %bb.0:392; X64-NEXT:    ucomiss %xmm1, %xmm0393; X64-NEXT:    setbe %al394; X64-NEXT:    retq395;396; GISEL-X64-LABEL: fcmp_float_ule:397; GISEL-X64:       ## %bb.0:398; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm0399; GISEL-X64-NEXT:    setbe %al400; GISEL-X64-NEXT:    retq401;402; X86-LABEL: fcmp_float_ule:403; X86:       ## %bb.0:404; X86-NEXT:    flds {{[0-9]+}}(%esp)405; X86-NEXT:    flds {{[0-9]+}}(%esp)406; X86-NEXT:    fucompp407; X86-NEXT:    fnstsw %ax408; X86-NEXT:    ## kill: def $ah killed $ah killed $ax409; X86-NEXT:    sahf410; X86-NEXT:    setbe %al411; X86-NEXT:    retl412    %1 = fcmp ule float %x, %y413    ret i1 %1414  }415 416  define i1 @fcmp_float_une(float %x, float %y) nounwind {417; X64-LABEL: fcmp_float_une:418; X64:       ## %bb.0:419; X64-NEXT:    cmpneqss %xmm1, %xmm0420; X64-NEXT:    movd %xmm0, %eax421; X64-NEXT:    andl $1, %eax422; X64-NEXT:    ## kill: def $al killed $al killed $eax423; X64-NEXT:    retq424;425; GISEL-X64-LABEL: fcmp_float_une:426; GISEL-X64:       ## %bb.0:427; GISEL-X64-NEXT:    ucomiss %xmm1, %xmm0428; GISEL-X64-NEXT:    setne %cl429; GISEL-X64-NEXT:    setp %al430; GISEL-X64-NEXT:    orb %cl, %al431; GISEL-X64-NEXT:    retq432;433; X86-LABEL: fcmp_float_une:434; X86:       ## %bb.0:435; X86-NEXT:    flds {{[0-9]+}}(%esp)436; X86-NEXT:    flds {{[0-9]+}}(%esp)437; X86-NEXT:    fucompp438; X86-NEXT:    fnstsw %ax439; X86-NEXT:    ## kill: def $ah killed $ah killed $ax440; X86-NEXT:    sahf441; X86-NEXT:    setp %cl442; X86-NEXT:    setne %al443; X86-NEXT:    orb %cl, %al444; X86-NEXT:    retl445    %1 = fcmp une float %x, %y446    ret i1 %1447  }448 449  define i1 @fcmp_double_oeq(double %x, double %y) nounwind {450; X64-LABEL: fcmp_double_oeq:451; X64:       ## %bb.0:452; X64-NEXT:    cmpeqsd %xmm1, %xmm0453; X64-NEXT:    movq %xmm0, %rax454; X64-NEXT:    andl $1, %eax455; X64-NEXT:    ## kill: def $al killed $al killed $rax456; X64-NEXT:    retq457;458; GISEL-X64-LABEL: fcmp_double_oeq:459; GISEL-X64:       ## %bb.0:460; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0461; GISEL-X64-NEXT:    sete %cl462; GISEL-X64-NEXT:    setnp %al463; GISEL-X64-NEXT:    andb %cl, %al464; GISEL-X64-NEXT:    retq465;466; X86-LABEL: fcmp_double_oeq:467; X86:       ## %bb.0:468; X86-NEXT:    fldl {{[0-9]+}}(%esp)469; X86-NEXT:    fldl {{[0-9]+}}(%esp)470; X86-NEXT:    fucompp471; X86-NEXT:    fnstsw %ax472; X86-NEXT:    ## kill: def $ah killed $ah killed $ax473; X86-NEXT:    sahf474; X86-NEXT:    setnp %cl475; X86-NEXT:    sete %al476; X86-NEXT:    andb %cl, %al477; X86-NEXT:    retl478    %1 = fcmp oeq double %x, %y479    ret i1 %1480  }481 482  define i1 @fcmp_double_ogt(double %x, double %y) nounwind {483; X64-LABEL: fcmp_double_ogt:484; X64:       ## %bb.0:485; X64-NEXT:    ucomisd %xmm1, %xmm0486; X64-NEXT:    seta %al487; X64-NEXT:    retq488;489; GISEL-X64-LABEL: fcmp_double_ogt:490; GISEL-X64:       ## %bb.0:491; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0492; GISEL-X64-NEXT:    seta %al493; GISEL-X64-NEXT:    retq494;495; X86-LABEL: fcmp_double_ogt:496; X86:       ## %bb.0:497; X86-NEXT:    fldl {{[0-9]+}}(%esp)498; X86-NEXT:    fldl {{[0-9]+}}(%esp)499; X86-NEXT:    fucompp500; X86-NEXT:    fnstsw %ax501; X86-NEXT:    ## kill: def $ah killed $ah killed $ax502; X86-NEXT:    sahf503; X86-NEXT:    seta %al504; X86-NEXT:    retl505    %1 = fcmp ogt double %x, %y506    ret i1 %1507  }508 509  define i1 @fcmp_double_oge(double %x, double %y) nounwind {510; X64-LABEL: fcmp_double_oge:511; X64:       ## %bb.0:512; X64-NEXT:    ucomisd %xmm1, %xmm0513; X64-NEXT:    setae %al514; X64-NEXT:    retq515;516; GISEL-X64-LABEL: fcmp_double_oge:517; GISEL-X64:       ## %bb.0:518; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0519; GISEL-X64-NEXT:    setae %al520; GISEL-X64-NEXT:    retq521;522; X86-LABEL: fcmp_double_oge:523; X86:       ## %bb.0:524; X86-NEXT:    fldl {{[0-9]+}}(%esp)525; X86-NEXT:    fldl {{[0-9]+}}(%esp)526; X86-NEXT:    fucompp527; X86-NEXT:    fnstsw %ax528; X86-NEXT:    ## kill: def $ah killed $ah killed $ax529; X86-NEXT:    sahf530; X86-NEXT:    setae %al531; X86-NEXT:    retl532    %1 = fcmp oge double %x, %y533    ret i1 %1534  }535 536  define i1 @fcmp_double_olt(double %x, double %y) nounwind {537; X64-LABEL: fcmp_double_olt:538; X64:       ## %bb.0:539; X64-NEXT:    ucomisd %xmm0, %xmm1540; X64-NEXT:    seta %al541; X64-NEXT:    retq542;543; GISEL-X64-LABEL: fcmp_double_olt:544; GISEL-X64:       ## %bb.0:545; GISEL-X64-NEXT:    ucomisd %xmm0, %xmm1546; GISEL-X64-NEXT:    seta %al547; GISEL-X64-NEXT:    retq548;549; SDAG-X86-LABEL: fcmp_double_olt:550; SDAG-X86:       ## %bb.0:551; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)552; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)553; SDAG-X86-NEXT:    fucompp554; SDAG-X86-NEXT:    fnstsw %ax555; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax556; SDAG-X86-NEXT:    sahf557; SDAG-X86-NEXT:    seta %al558; SDAG-X86-NEXT:    retl559;560; FAST-X86-LABEL: fcmp_double_olt:561; FAST-X86:       ## %bb.0:562; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)563; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)564; FAST-X86-NEXT:    fxch %st(1)565; FAST-X86-NEXT:    fucompp566; FAST-X86-NEXT:    fnstsw %ax567; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax568; FAST-X86-NEXT:    sahf569; FAST-X86-NEXT:    seta %al570; FAST-X86-NEXT:    retl571    %1 = fcmp olt double %x, %y572    ret i1 %1573  }574 575  define i1 @fcmp_double_ole(double %x, double %y) nounwind {576; X64-LABEL: fcmp_double_ole:577; X64:       ## %bb.0:578; X64-NEXT:    ucomisd %xmm0, %xmm1579; X64-NEXT:    setae %al580; X64-NEXT:    retq581;582; GISEL-X64-LABEL: fcmp_double_ole:583; GISEL-X64:       ## %bb.0:584; GISEL-X64-NEXT:    ucomisd %xmm0, %xmm1585; GISEL-X64-NEXT:    setae %al586; GISEL-X64-NEXT:    retq587;588; SDAG-X86-LABEL: fcmp_double_ole:589; SDAG-X86:       ## %bb.0:590; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)591; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)592; SDAG-X86-NEXT:    fucompp593; SDAG-X86-NEXT:    fnstsw %ax594; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax595; SDAG-X86-NEXT:    sahf596; SDAG-X86-NEXT:    setae %al597; SDAG-X86-NEXT:    retl598;599; FAST-X86-LABEL: fcmp_double_ole:600; FAST-X86:       ## %bb.0:601; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)602; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)603; FAST-X86-NEXT:    fxch %st(1)604; FAST-X86-NEXT:    fucompp605; FAST-X86-NEXT:    fnstsw %ax606; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax607; FAST-X86-NEXT:    sahf608; FAST-X86-NEXT:    setae %al609; FAST-X86-NEXT:    retl610    %1 = fcmp ole double %x, %y611    ret i1 %1612  }613 614  define i1 @fcmp_double_one(double %x, double %y) nounwind {615; X64-LABEL: fcmp_double_one:616; X64:       ## %bb.0:617; X64-NEXT:    ucomisd %xmm1, %xmm0618; X64-NEXT:    setne %al619; X64-NEXT:    retq620;621; GISEL-X64-LABEL: fcmp_double_one:622; GISEL-X64:       ## %bb.0:623; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0624; GISEL-X64-NEXT:    setne %al625; GISEL-X64-NEXT:    retq626;627; X86-LABEL: fcmp_double_one:628; X86:       ## %bb.0:629; X86-NEXT:    fldl {{[0-9]+}}(%esp)630; X86-NEXT:    fldl {{[0-9]+}}(%esp)631; X86-NEXT:    fucompp632; X86-NEXT:    fnstsw %ax633; X86-NEXT:    ## kill: def $ah killed $ah killed $ax634; X86-NEXT:    sahf635; X86-NEXT:    setne %al636; X86-NEXT:    retl637    %1 = fcmp one double %x, %y638    ret i1 %1639  }640 641  define i1 @fcmp_double_ord(double %x, double %y) nounwind {642; X64-LABEL: fcmp_double_ord:643; X64:       ## %bb.0:644; X64-NEXT:    ucomisd %xmm1, %xmm0645; X64-NEXT:    setnp %al646; X64-NEXT:    retq647;648; GISEL-X64-LABEL: fcmp_double_ord:649; GISEL-X64:       ## %bb.0:650; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0651; GISEL-X64-NEXT:    setnp %al652; GISEL-X64-NEXT:    retq653;654; X86-LABEL: fcmp_double_ord:655; X86:       ## %bb.0:656; X86-NEXT:    fldl {{[0-9]+}}(%esp)657; X86-NEXT:    fldl {{[0-9]+}}(%esp)658; X86-NEXT:    fucompp659; X86-NEXT:    fnstsw %ax660; X86-NEXT:    ## kill: def $ah killed $ah killed $ax661; X86-NEXT:    sahf662; X86-NEXT:    setnp %al663; X86-NEXT:    retl664    %1 = fcmp ord double %x, %y665    ret i1 %1666  }667 668  define i1 @fcmp_double_uno(double %x, double %y) nounwind {669; X64-LABEL: fcmp_double_uno:670; X64:       ## %bb.0:671; X64-NEXT:    ucomisd %xmm1, %xmm0672; X64-NEXT:    setp %al673; X64-NEXT:    retq674;675; GISEL-X64-LABEL: fcmp_double_uno:676; GISEL-X64:       ## %bb.0:677; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0678; GISEL-X64-NEXT:    setp %al679; GISEL-X64-NEXT:    retq680;681; X86-LABEL: fcmp_double_uno:682; X86:       ## %bb.0:683; X86-NEXT:    fldl {{[0-9]+}}(%esp)684; X86-NEXT:    fldl {{[0-9]+}}(%esp)685; X86-NEXT:    fucompp686; X86-NEXT:    fnstsw %ax687; X86-NEXT:    ## kill: def $ah killed $ah killed $ax688; X86-NEXT:    sahf689; X86-NEXT:    setp %al690; X86-NEXT:    retl691    %1 = fcmp uno double %x, %y692    ret i1 %1693  }694 695  define i1 @fcmp_double_ueq(double %x, double %y) nounwind {696; X64-LABEL: fcmp_double_ueq:697; X64:       ## %bb.0:698; X64-NEXT:    ucomisd %xmm1, %xmm0699; X64-NEXT:    sete %al700; X64-NEXT:    retq701;702; GISEL-X64-LABEL: fcmp_double_ueq:703; GISEL-X64:       ## %bb.0:704; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0705; GISEL-X64-NEXT:    sete %al706; GISEL-X64-NEXT:    retq707;708; X86-LABEL: fcmp_double_ueq:709; X86:       ## %bb.0:710; X86-NEXT:    fldl {{[0-9]+}}(%esp)711; X86-NEXT:    fldl {{[0-9]+}}(%esp)712; X86-NEXT:    fucompp713; X86-NEXT:    fnstsw %ax714; X86-NEXT:    ## kill: def $ah killed $ah killed $ax715; X86-NEXT:    sahf716; X86-NEXT:    sete %al717; X86-NEXT:    retl718    %1 = fcmp ueq double %x, %y719    ret i1 %1720  }721 722  define i1 @fcmp_double_ugt(double %x, double %y) nounwind {723; X64-LABEL: fcmp_double_ugt:724; X64:       ## %bb.0:725; X64-NEXT:    ucomisd %xmm0, %xmm1726; X64-NEXT:    setb %al727; X64-NEXT:    retq728;729; GISEL-X64-LABEL: fcmp_double_ugt:730; GISEL-X64:       ## %bb.0:731; GISEL-X64-NEXT:    ucomisd %xmm0, %xmm1732; GISEL-X64-NEXT:    setb %al733; GISEL-X64-NEXT:    retq734;735; SDAG-X86-LABEL: fcmp_double_ugt:736; SDAG-X86:       ## %bb.0:737; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)738; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)739; SDAG-X86-NEXT:    fucompp740; SDAG-X86-NEXT:    fnstsw %ax741; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax742; SDAG-X86-NEXT:    sahf743; SDAG-X86-NEXT:    setb %al744; SDAG-X86-NEXT:    retl745;746; FAST-X86-LABEL: fcmp_double_ugt:747; FAST-X86:       ## %bb.0:748; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)749; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)750; FAST-X86-NEXT:    fxch %st(1)751; FAST-X86-NEXT:    fucompp752; FAST-X86-NEXT:    fnstsw %ax753; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax754; FAST-X86-NEXT:    sahf755; FAST-X86-NEXT:    setb %al756; FAST-X86-NEXT:    retl757    %1 = fcmp ugt double %x, %y758    ret i1 %1759  }760 761  define i1 @fcmp_double_uge(double %x, double %y) nounwind {762; X64-LABEL: fcmp_double_uge:763; X64:       ## %bb.0:764; X64-NEXT:    ucomisd %xmm0, %xmm1765; X64-NEXT:    setbe %al766; X64-NEXT:    retq767;768; GISEL-X64-LABEL: fcmp_double_uge:769; GISEL-X64:       ## %bb.0:770; GISEL-X64-NEXT:    ucomisd %xmm0, %xmm1771; GISEL-X64-NEXT:    setbe %al772; GISEL-X64-NEXT:    retq773;774; SDAG-X86-LABEL: fcmp_double_uge:775; SDAG-X86:       ## %bb.0:776; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)777; SDAG-X86-NEXT:    fldl {{[0-9]+}}(%esp)778; SDAG-X86-NEXT:    fucompp779; SDAG-X86-NEXT:    fnstsw %ax780; SDAG-X86-NEXT:    ## kill: def $ah killed $ah killed $ax781; SDAG-X86-NEXT:    sahf782; SDAG-X86-NEXT:    setbe %al783; SDAG-X86-NEXT:    retl784;785; FAST-X86-LABEL: fcmp_double_uge:786; FAST-X86:       ## %bb.0:787; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)788; FAST-X86-NEXT:    fldl {{[0-9]+}}(%esp)789; FAST-X86-NEXT:    fxch %st(1)790; FAST-X86-NEXT:    fucompp791; FAST-X86-NEXT:    fnstsw %ax792; FAST-X86-NEXT:    ## kill: def $ah killed $ah killed $ax793; FAST-X86-NEXT:    sahf794; FAST-X86-NEXT:    setbe %al795; FAST-X86-NEXT:    retl796    %1 = fcmp uge double %x, %y797    ret i1 %1798  }799 800  define i1 @fcmp_double_ult(double %x, double %y) nounwind {801; X64-LABEL: fcmp_double_ult:802; X64:       ## %bb.0:803; X64-NEXT:    ucomisd %xmm1, %xmm0804; X64-NEXT:    setb %al805; X64-NEXT:    retq806;807; GISEL-X64-LABEL: fcmp_double_ult:808; GISEL-X64:       ## %bb.0:809; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0810; GISEL-X64-NEXT:    setb %al811; GISEL-X64-NEXT:    retq812;813; X86-LABEL: fcmp_double_ult:814; X86:       ## %bb.0:815; X86-NEXT:    fldl {{[0-9]+}}(%esp)816; X86-NEXT:    fldl {{[0-9]+}}(%esp)817; X86-NEXT:    fucompp818; X86-NEXT:    fnstsw %ax819; X86-NEXT:    ## kill: def $ah killed $ah killed $ax820; X86-NEXT:    sahf821; X86-NEXT:    setb %al822; X86-NEXT:    retl823    %1 = fcmp ult double %x, %y824    ret i1 %1825  }826 827  define i1 @fcmp_double_ule(double %x, double %y) nounwind {828; X64-LABEL: fcmp_double_ule:829; X64:       ## %bb.0:830; X64-NEXT:    ucomisd %xmm1, %xmm0831; X64-NEXT:    setbe %al832; X64-NEXT:    retq833;834; GISEL-X64-LABEL: fcmp_double_ule:835; GISEL-X64:       ## %bb.0:836; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0837; GISEL-X64-NEXT:    setbe %al838; GISEL-X64-NEXT:    retq839;840; X86-LABEL: fcmp_double_ule:841; X86:       ## %bb.0:842; X86-NEXT:    fldl {{[0-9]+}}(%esp)843; X86-NEXT:    fldl {{[0-9]+}}(%esp)844; X86-NEXT:    fucompp845; X86-NEXT:    fnstsw %ax846; X86-NEXT:    ## kill: def $ah killed $ah killed $ax847; X86-NEXT:    sahf848; X86-NEXT:    setbe %al849; X86-NEXT:    retl850    %1 = fcmp ule double %x, %y851    ret i1 %1852  }853 854  define i1 @fcmp_double_une(double %x, double %y) nounwind {855; X64-LABEL: fcmp_double_une:856; X64:       ## %bb.0:857; X64-NEXT:    cmpneqsd %xmm1, %xmm0858; X64-NEXT:    movq %xmm0, %rax859; X64-NEXT:    andl $1, %eax860; X64-NEXT:    ## kill: def $al killed $al killed $rax861; X64-NEXT:    retq862;863; GISEL-X64-LABEL: fcmp_double_une:864; GISEL-X64:       ## %bb.0:865; GISEL-X64-NEXT:    ucomisd %xmm1, %xmm0866; GISEL-X64-NEXT:    setne %cl867; GISEL-X64-NEXT:    setp %al868; GISEL-X64-NEXT:    orb %cl, %al869; GISEL-X64-NEXT:    retq870;871; X86-LABEL: fcmp_double_une:872; X86:       ## %bb.0:873; X86-NEXT:    fldl {{[0-9]+}}(%esp)874; X86-NEXT:    fldl {{[0-9]+}}(%esp)875; X86-NEXT:    fucompp876; X86-NEXT:    fnstsw %ax877; X86-NEXT:    ## kill: def $ah killed $ah killed $ax878; X86-NEXT:    sahf879; X86-NEXT:    setp %cl880; X86-NEXT:    setne %al881; X86-NEXT:    orb %cl, %al882; X86-NEXT:    retl883    %1 = fcmp une double %x, %y884    ret i1 %1885  }886;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:887; FAST-X64: {{.*}}888; SDAG-X64: {{.*}}889