brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.8 KiB · cb2361f Raw
1049 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=-sse -O3 | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -O3 | FileCheck %s --check-prefixes=X644 5define i32 @test_oeq_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {6; X86-LABEL: test_oeq_q:7; X86:       # %bb.0:8; X86-NEXT:    fldt {{[0-9]+}}(%esp)9; X86-NEXT:    fldt {{[0-9]+}}(%esp)10; X86-NEXT:    fucompp11; X86-NEXT:    wait12; X86-NEXT:    fnstsw %ax13; X86-NEXT:    # kill: def $ah killed $ah killed $ax14; X86-NEXT:    sahf15; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax16; X86-NEXT:    jne .LBB0_317; X86-NEXT:  # %bb.1:18; X86-NEXT:    jp .LBB0_319; X86-NEXT:  # %bb.2:20; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax21; X86-NEXT:  .LBB0_3:22; X86-NEXT:    movl (%eax), %eax23; X86-NEXT:    retl24;25; X64-LABEL: test_oeq_q:26; X64:       # %bb.0:27; X64-NEXT:    movl %edi, %eax28; X64-NEXT:    fldt {{[0-9]+}}(%rsp)29; X64-NEXT:    fldt {{[0-9]+}}(%rsp)30; X64-NEXT:    fucompi %st(1), %st31; X64-NEXT:    fstp %st(0)32; X64-NEXT:    wait33; X64-NEXT:    cmovnel %esi, %eax34; X64-NEXT:    cmovpl %esi, %eax35; X64-NEXT:    retq36  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(37                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"oeq",38                                               metadata !"fpexcept.strict") #039  %res = select i1 %cond, i32 %a, i32 %b40  ret i32 %res41}42 43define i32 @test_ogt_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {44; X86-LABEL: test_ogt_q:45; X86:       # %bb.0:46; X86-NEXT:    fldt {{[0-9]+}}(%esp)47; X86-NEXT:    fldt {{[0-9]+}}(%esp)48; X86-NEXT:    fucompp49; X86-NEXT:    wait50; X86-NEXT:    fnstsw %ax51; X86-NEXT:    # kill: def $ah killed $ah killed $ax52; X86-NEXT:    sahf53; X86-NEXT:    ja .LBB1_154; X86-NEXT:  # %bb.2:55; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax56; X86-NEXT:    movl (%eax), %eax57; X86-NEXT:    retl58; X86-NEXT:  .LBB1_1:59; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax60; X86-NEXT:    movl (%eax), %eax61; X86-NEXT:    retl62;63; X64-LABEL: test_ogt_q:64; X64:       # %bb.0:65; X64-NEXT:    movl %edi, %eax66; X64-NEXT:    fldt {{[0-9]+}}(%rsp)67; X64-NEXT:    fldt {{[0-9]+}}(%rsp)68; X64-NEXT:    fucompi %st(1), %st69; X64-NEXT:    fstp %st(0)70; X64-NEXT:    wait71; X64-NEXT:    cmovbel %esi, %eax72; X64-NEXT:    retq73  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(74                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ogt",75                                               metadata !"fpexcept.strict") #076  %res = select i1 %cond, i32 %a, i32 %b77  ret i32 %res78}79 80define i32 @test_oge_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {81; X86-LABEL: test_oge_q:82; X86:       # %bb.0:83; X86-NEXT:    fldt {{[0-9]+}}(%esp)84; X86-NEXT:    fldt {{[0-9]+}}(%esp)85; X86-NEXT:    fucompp86; X86-NEXT:    wait87; X86-NEXT:    fnstsw %ax88; X86-NEXT:    # kill: def $ah killed $ah killed $ax89; X86-NEXT:    sahf90; X86-NEXT:    jae .LBB2_191; X86-NEXT:  # %bb.2:92; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax93; X86-NEXT:    movl (%eax), %eax94; X86-NEXT:    retl95; X86-NEXT:  .LBB2_1:96; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax97; X86-NEXT:    movl (%eax), %eax98; X86-NEXT:    retl99;100; X64-LABEL: test_oge_q:101; X64:       # %bb.0:102; X64-NEXT:    movl %edi, %eax103; X64-NEXT:    fldt {{[0-9]+}}(%rsp)104; X64-NEXT:    fldt {{[0-9]+}}(%rsp)105; X64-NEXT:    fucompi %st(1), %st106; X64-NEXT:    fstp %st(0)107; X64-NEXT:    wait108; X64-NEXT:    cmovbl %esi, %eax109; X64-NEXT:    retq110  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(111                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"oge",112                                               metadata !"fpexcept.strict") #0113  %res = select i1 %cond, i32 %a, i32 %b114  ret i32 %res115}116 117define i32 @test_olt_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {118; X86-LABEL: test_olt_q:119; X86:       # %bb.0:120; X86-NEXT:    fldt {{[0-9]+}}(%esp)121; X86-NEXT:    fldt {{[0-9]+}}(%esp)122; X86-NEXT:    fucompp123; X86-NEXT:    wait124; X86-NEXT:    fnstsw %ax125; X86-NEXT:    # kill: def $ah killed $ah killed $ax126; X86-NEXT:    sahf127; X86-NEXT:    ja .LBB3_1128; X86-NEXT:  # %bb.2:129; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax130; X86-NEXT:    movl (%eax), %eax131; X86-NEXT:    retl132; X86-NEXT:  .LBB3_1:133; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax134; X86-NEXT:    movl (%eax), %eax135; X86-NEXT:    retl136;137; X64-LABEL: test_olt_q:138; X64:       # %bb.0:139; X64-NEXT:    movl %edi, %eax140; X64-NEXT:    fldt {{[0-9]+}}(%rsp)141; X64-NEXT:    fldt {{[0-9]+}}(%rsp)142; X64-NEXT:    fucompi %st(1), %st143; X64-NEXT:    fstp %st(0)144; X64-NEXT:    wait145; X64-NEXT:    cmovbel %esi, %eax146; X64-NEXT:    retq147  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(148                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"olt",149                                               metadata !"fpexcept.strict") #0150  %res = select i1 %cond, i32 %a, i32 %b151  ret i32 %res152}153 154define i32 @test_ole_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {155; X86-LABEL: test_ole_q:156; X86:       # %bb.0:157; X86-NEXT:    fldt {{[0-9]+}}(%esp)158; X86-NEXT:    fldt {{[0-9]+}}(%esp)159; X86-NEXT:    fucompp160; X86-NEXT:    wait161; X86-NEXT:    fnstsw %ax162; X86-NEXT:    # kill: def $ah killed $ah killed $ax163; X86-NEXT:    sahf164; X86-NEXT:    jae .LBB4_1165; X86-NEXT:  # %bb.2:166; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax167; X86-NEXT:    movl (%eax), %eax168; X86-NEXT:    retl169; X86-NEXT:  .LBB4_1:170; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax171; X86-NEXT:    movl (%eax), %eax172; X86-NEXT:    retl173;174; X64-LABEL: test_ole_q:175; X64:       # %bb.0:176; X64-NEXT:    movl %edi, %eax177; X64-NEXT:    fldt {{[0-9]+}}(%rsp)178; X64-NEXT:    fldt {{[0-9]+}}(%rsp)179; X64-NEXT:    fucompi %st(1), %st180; X64-NEXT:    fstp %st(0)181; X64-NEXT:    wait182; X64-NEXT:    cmovbl %esi, %eax183; X64-NEXT:    retq184  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(185                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ole",186                                               metadata !"fpexcept.strict") #0187  %res = select i1 %cond, i32 %a, i32 %b188  ret i32 %res189}190 191define i32 @test_one_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {192; X86-LABEL: test_one_q:193; X86:       # %bb.0:194; X86-NEXT:    fldt {{[0-9]+}}(%esp)195; X86-NEXT:    fldt {{[0-9]+}}(%esp)196; X86-NEXT:    fucompp197; X86-NEXT:    wait198; X86-NEXT:    fnstsw %ax199; X86-NEXT:    # kill: def $ah killed $ah killed $ax200; X86-NEXT:    sahf201; X86-NEXT:    jne .LBB5_1202; X86-NEXT:  # %bb.2:203; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax204; X86-NEXT:    movl (%eax), %eax205; X86-NEXT:    retl206; X86-NEXT:  .LBB5_1:207; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax208; X86-NEXT:    movl (%eax), %eax209; X86-NEXT:    retl210;211; X64-LABEL: test_one_q:212; X64:       # %bb.0:213; X64-NEXT:    movl %edi, %eax214; X64-NEXT:    fldt {{[0-9]+}}(%rsp)215; X64-NEXT:    fldt {{[0-9]+}}(%rsp)216; X64-NEXT:    fucompi %st(1), %st217; X64-NEXT:    fstp %st(0)218; X64-NEXT:    wait219; X64-NEXT:    cmovel %esi, %eax220; X64-NEXT:    retq221  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(222                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"one",223                                               metadata !"fpexcept.strict") #0224  %res = select i1 %cond, i32 %a, i32 %b225  ret i32 %res226}227 228define i32 @test_ord_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {229; X86-LABEL: test_ord_q:230; X86:       # %bb.0:231; X86-NEXT:    fldt {{[0-9]+}}(%esp)232; X86-NEXT:    fldt {{[0-9]+}}(%esp)233; X86-NEXT:    fucompp234; X86-NEXT:    wait235; X86-NEXT:    fnstsw %ax236; X86-NEXT:    # kill: def $ah killed $ah killed $ax237; X86-NEXT:    sahf238; X86-NEXT:    jnp .LBB6_1239; X86-NEXT:  # %bb.2:240; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax241; X86-NEXT:    movl (%eax), %eax242; X86-NEXT:    retl243; X86-NEXT:  .LBB6_1:244; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax245; X86-NEXT:    movl (%eax), %eax246; X86-NEXT:    retl247;248; X64-LABEL: test_ord_q:249; X64:       # %bb.0:250; X64-NEXT:    movl %edi, %eax251; X64-NEXT:    fldt {{[0-9]+}}(%rsp)252; X64-NEXT:    fldt {{[0-9]+}}(%rsp)253; X64-NEXT:    fucompi %st(1), %st254; X64-NEXT:    fstp %st(0)255; X64-NEXT:    wait256; X64-NEXT:    cmovpl %esi, %eax257; X64-NEXT:    retq258  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(259                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ord",260                                               metadata !"fpexcept.strict") #0261  %res = select i1 %cond, i32 %a, i32 %b262  ret i32 %res263}264 265define i32 @test_ueq_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {266; X86-LABEL: test_ueq_q:267; X86:       # %bb.0:268; X86-NEXT:    fldt {{[0-9]+}}(%esp)269; X86-NEXT:    fldt {{[0-9]+}}(%esp)270; X86-NEXT:    fucompp271; X86-NEXT:    wait272; X86-NEXT:    fnstsw %ax273; X86-NEXT:    # kill: def $ah killed $ah killed $ax274; X86-NEXT:    sahf275; X86-NEXT:    je .LBB7_1276; X86-NEXT:  # %bb.2:277; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax278; X86-NEXT:    movl (%eax), %eax279; X86-NEXT:    retl280; X86-NEXT:  .LBB7_1:281; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax282; X86-NEXT:    movl (%eax), %eax283; X86-NEXT:    retl284;285; X64-LABEL: test_ueq_q:286; X64:       # %bb.0:287; X64-NEXT:    movl %edi, %eax288; X64-NEXT:    fldt {{[0-9]+}}(%rsp)289; X64-NEXT:    fldt {{[0-9]+}}(%rsp)290; X64-NEXT:    fucompi %st(1), %st291; X64-NEXT:    fstp %st(0)292; X64-NEXT:    wait293; X64-NEXT:    cmovnel %esi, %eax294; X64-NEXT:    retq295  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(296                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ueq",297                                               metadata !"fpexcept.strict") #0298  %res = select i1 %cond, i32 %a, i32 %b299  ret i32 %res300}301 302define i32 @test_ugt_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {303; X86-LABEL: test_ugt_q:304; X86:       # %bb.0:305; X86-NEXT:    fldt {{[0-9]+}}(%esp)306; X86-NEXT:    fldt {{[0-9]+}}(%esp)307; X86-NEXT:    fucompp308; X86-NEXT:    wait309; X86-NEXT:    fnstsw %ax310; X86-NEXT:    # kill: def $ah killed $ah killed $ax311; X86-NEXT:    sahf312; X86-NEXT:    jb .LBB8_1313; X86-NEXT:  # %bb.2:314; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax315; X86-NEXT:    movl (%eax), %eax316; X86-NEXT:    retl317; X86-NEXT:  .LBB8_1:318; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax319; X86-NEXT:    movl (%eax), %eax320; X86-NEXT:    retl321;322; X64-LABEL: test_ugt_q:323; X64:       # %bb.0:324; X64-NEXT:    movl %edi, %eax325; X64-NEXT:    fldt {{[0-9]+}}(%rsp)326; X64-NEXT:    fldt {{[0-9]+}}(%rsp)327; X64-NEXT:    fucompi %st(1), %st328; X64-NEXT:    fstp %st(0)329; X64-NEXT:    wait330; X64-NEXT:    cmovael %esi, %eax331; X64-NEXT:    retq332  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(333                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ugt",334                                               metadata !"fpexcept.strict") #0335  %res = select i1 %cond, i32 %a, i32 %b336  ret i32 %res337}338 339define i32 @test_uge_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {340; X86-LABEL: test_uge_q:341; X86:       # %bb.0:342; X86-NEXT:    fldt {{[0-9]+}}(%esp)343; X86-NEXT:    fldt {{[0-9]+}}(%esp)344; X86-NEXT:    fucompp345; X86-NEXT:    wait346; X86-NEXT:    fnstsw %ax347; X86-NEXT:    # kill: def $ah killed $ah killed $ax348; X86-NEXT:    sahf349; X86-NEXT:    jbe .LBB9_1350; X86-NEXT:  # %bb.2:351; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax352; X86-NEXT:    movl (%eax), %eax353; X86-NEXT:    retl354; X86-NEXT:  .LBB9_1:355; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax356; X86-NEXT:    movl (%eax), %eax357; X86-NEXT:    retl358;359; X64-LABEL: test_uge_q:360; X64:       # %bb.0:361; X64-NEXT:    movl %edi, %eax362; X64-NEXT:    fldt {{[0-9]+}}(%rsp)363; X64-NEXT:    fldt {{[0-9]+}}(%rsp)364; X64-NEXT:    fucompi %st(1), %st365; X64-NEXT:    fstp %st(0)366; X64-NEXT:    wait367; X64-NEXT:    cmoval %esi, %eax368; X64-NEXT:    retq369  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(370                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"uge",371                                               metadata !"fpexcept.strict") #0372  %res = select i1 %cond, i32 %a, i32 %b373  ret i32 %res374}375 376define i32 @test_ult_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {377; X86-LABEL: test_ult_q:378; X86:       # %bb.0:379; X86-NEXT:    fldt {{[0-9]+}}(%esp)380; X86-NEXT:    fldt {{[0-9]+}}(%esp)381; X86-NEXT:    fucompp382; X86-NEXT:    wait383; X86-NEXT:    fnstsw %ax384; X86-NEXT:    # kill: def $ah killed $ah killed $ax385; X86-NEXT:    sahf386; X86-NEXT:    jb .LBB10_1387; X86-NEXT:  # %bb.2:388; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax389; X86-NEXT:    movl (%eax), %eax390; X86-NEXT:    retl391; X86-NEXT:  .LBB10_1:392; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax393; X86-NEXT:    movl (%eax), %eax394; X86-NEXT:    retl395;396; X64-LABEL: test_ult_q:397; X64:       # %bb.0:398; X64-NEXT:    movl %edi, %eax399; X64-NEXT:    fldt {{[0-9]+}}(%rsp)400; X64-NEXT:    fldt {{[0-9]+}}(%rsp)401; X64-NEXT:    fucompi %st(1), %st402; X64-NEXT:    fstp %st(0)403; X64-NEXT:    wait404; X64-NEXT:    cmovael %esi, %eax405; X64-NEXT:    retq406  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(407                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ult",408                                               metadata !"fpexcept.strict") #0409  %res = select i1 %cond, i32 %a, i32 %b410  ret i32 %res411}412 413define i32 @test_ule_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {414; X86-LABEL: test_ule_q:415; X86:       # %bb.0:416; X86-NEXT:    fldt {{[0-9]+}}(%esp)417; X86-NEXT:    fldt {{[0-9]+}}(%esp)418; X86-NEXT:    fucompp419; X86-NEXT:    wait420; X86-NEXT:    fnstsw %ax421; X86-NEXT:    # kill: def $ah killed $ah killed $ax422; X86-NEXT:    sahf423; X86-NEXT:    jbe .LBB11_1424; X86-NEXT:  # %bb.2:425; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax426; X86-NEXT:    movl (%eax), %eax427; X86-NEXT:    retl428; X86-NEXT:  .LBB11_1:429; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax430; X86-NEXT:    movl (%eax), %eax431; X86-NEXT:    retl432;433; X64-LABEL: test_ule_q:434; X64:       # %bb.0:435; X64-NEXT:    movl %edi, %eax436; X64-NEXT:    fldt {{[0-9]+}}(%rsp)437; X64-NEXT:    fldt {{[0-9]+}}(%rsp)438; X64-NEXT:    fucompi %st(1), %st439; X64-NEXT:    fstp %st(0)440; X64-NEXT:    wait441; X64-NEXT:    cmoval %esi, %eax442; X64-NEXT:    retq443  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(444                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ule",445                                               metadata !"fpexcept.strict") #0446  %res = select i1 %cond, i32 %a, i32 %b447  ret i32 %res448}449 450define i32 @test_une_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {451; X86-LABEL: test_une_q:452; X86:       # %bb.0:453; X86-NEXT:    fldt {{[0-9]+}}(%esp)454; X86-NEXT:    fldt {{[0-9]+}}(%esp)455; X86-NEXT:    fucompp456; X86-NEXT:    wait457; X86-NEXT:    fnstsw %ax458; X86-NEXT:    # kill: def $ah killed $ah killed $ax459; X86-NEXT:    sahf460; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax461; X86-NEXT:    jne .LBB12_3462; X86-NEXT:  # %bb.1:463; X86-NEXT:    jp .LBB12_3464; X86-NEXT:  # %bb.2:465; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax466; X86-NEXT:  .LBB12_3:467; X86-NEXT:    movl (%eax), %eax468; X86-NEXT:    retl469;470; X64-LABEL: test_une_q:471; X64:       # %bb.0:472; X64-NEXT:    movl %esi, %eax473; X64-NEXT:    fldt {{[0-9]+}}(%rsp)474; X64-NEXT:    fldt {{[0-9]+}}(%rsp)475; X64-NEXT:    fucompi %st(1), %st476; X64-NEXT:    fstp %st(0)477; X64-NEXT:    wait478; X64-NEXT:    cmovnel %edi, %eax479; X64-NEXT:    cmovpl %edi, %eax480; X64-NEXT:    retq481  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(482                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"une",483                                               metadata !"fpexcept.strict") #0484  %res = select i1 %cond, i32 %a, i32 %b485  ret i32 %res486}487 488define i32 @test_uno_q(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {489; X86-LABEL: test_uno_q:490; X86:       # %bb.0:491; X86-NEXT:    fldt {{[0-9]+}}(%esp)492; X86-NEXT:    fldt {{[0-9]+}}(%esp)493; X86-NEXT:    fucompp494; X86-NEXT:    wait495; X86-NEXT:    fnstsw %ax496; X86-NEXT:    # kill: def $ah killed $ah killed $ax497; X86-NEXT:    sahf498; X86-NEXT:    jp .LBB13_1499; X86-NEXT:  # %bb.2:500; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax501; X86-NEXT:    movl (%eax), %eax502; X86-NEXT:    retl503; X86-NEXT:  .LBB13_1:504; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax505; X86-NEXT:    movl (%eax), %eax506; X86-NEXT:    retl507;508; X64-LABEL: test_uno_q:509; X64:       # %bb.0:510; X64-NEXT:    movl %edi, %eax511; X64-NEXT:    fldt {{[0-9]+}}(%rsp)512; X64-NEXT:    fldt {{[0-9]+}}(%rsp)513; X64-NEXT:    fucompi %st(1), %st514; X64-NEXT:    fstp %st(0)515; X64-NEXT:    wait516; X64-NEXT:    cmovnpl %esi, %eax517; X64-NEXT:    retq518  %cond = call i1 @llvm.experimental.constrained.fcmp.f80(519                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"uno",520                                               metadata !"fpexcept.strict") #0521  %res = select i1 %cond, i32 %a, i32 %b522  ret i32 %res523}524 525define i32 @test_oeq_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {526; X86-LABEL: test_oeq_s:527; X86:       # %bb.0:528; X86-NEXT:    fldt {{[0-9]+}}(%esp)529; X86-NEXT:    fldt {{[0-9]+}}(%esp)530; X86-NEXT:    fcompp531; X86-NEXT:    wait532; X86-NEXT:    fnstsw %ax533; X86-NEXT:    # kill: def $ah killed $ah killed $ax534; X86-NEXT:    sahf535; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax536; X86-NEXT:    jne .LBB14_3537; X86-NEXT:  # %bb.1:538; X86-NEXT:    jp .LBB14_3539; X86-NEXT:  # %bb.2:540; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax541; X86-NEXT:  .LBB14_3:542; X86-NEXT:    movl (%eax), %eax543; X86-NEXT:    retl544;545; X64-LABEL: test_oeq_s:546; X64:       # %bb.0:547; X64-NEXT:    movl %edi, %eax548; X64-NEXT:    fldt {{[0-9]+}}(%rsp)549; X64-NEXT:    fldt {{[0-9]+}}(%rsp)550; X64-NEXT:    fcompi %st(1), %st551; X64-NEXT:    fstp %st(0)552; X64-NEXT:    wait553; X64-NEXT:    cmovnel %esi, %eax554; X64-NEXT:    cmovpl %esi, %eax555; X64-NEXT:    retq556  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(557                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"oeq",558                                               metadata !"fpexcept.strict") #0559  %res = select i1 %cond, i32 %a, i32 %b560  ret i32 %res561}562 563define i32 @test_ogt_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {564; X86-LABEL: test_ogt_s:565; X86:       # %bb.0:566; X86-NEXT:    fldt {{[0-9]+}}(%esp)567; X86-NEXT:    fldt {{[0-9]+}}(%esp)568; X86-NEXT:    fcompp569; X86-NEXT:    wait570; X86-NEXT:    fnstsw %ax571; X86-NEXT:    # kill: def $ah killed $ah killed $ax572; X86-NEXT:    sahf573; X86-NEXT:    ja .LBB15_1574; X86-NEXT:  # %bb.2:575; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax576; X86-NEXT:    movl (%eax), %eax577; X86-NEXT:    retl578; X86-NEXT:  .LBB15_1:579; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax580; X86-NEXT:    movl (%eax), %eax581; X86-NEXT:    retl582;583; X64-LABEL: test_ogt_s:584; X64:       # %bb.0:585; X64-NEXT:    movl %edi, %eax586; X64-NEXT:    fldt {{[0-9]+}}(%rsp)587; X64-NEXT:    fldt {{[0-9]+}}(%rsp)588; X64-NEXT:    fcompi %st(1), %st589; X64-NEXT:    fstp %st(0)590; X64-NEXT:    wait591; X64-NEXT:    cmovbel %esi, %eax592; X64-NEXT:    retq593  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(594                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ogt",595                                               metadata !"fpexcept.strict") #0596  %res = select i1 %cond, i32 %a, i32 %b597  ret i32 %res598}599 600define i32 @test_oge_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {601; X86-LABEL: test_oge_s:602; X86:       # %bb.0:603; X86-NEXT:    fldt {{[0-9]+}}(%esp)604; X86-NEXT:    fldt {{[0-9]+}}(%esp)605; X86-NEXT:    fcompp606; X86-NEXT:    wait607; X86-NEXT:    fnstsw %ax608; X86-NEXT:    # kill: def $ah killed $ah killed $ax609; X86-NEXT:    sahf610; X86-NEXT:    jae .LBB16_1611; X86-NEXT:  # %bb.2:612; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax613; X86-NEXT:    movl (%eax), %eax614; X86-NEXT:    retl615; X86-NEXT:  .LBB16_1:616; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax617; X86-NEXT:    movl (%eax), %eax618; X86-NEXT:    retl619;620; X64-LABEL: test_oge_s:621; X64:       # %bb.0:622; X64-NEXT:    movl %edi, %eax623; X64-NEXT:    fldt {{[0-9]+}}(%rsp)624; X64-NEXT:    fldt {{[0-9]+}}(%rsp)625; X64-NEXT:    fcompi %st(1), %st626; X64-NEXT:    fstp %st(0)627; X64-NEXT:    wait628; X64-NEXT:    cmovbl %esi, %eax629; X64-NEXT:    retq630  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(631                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"oge",632                                               metadata !"fpexcept.strict") #0633  %res = select i1 %cond, i32 %a, i32 %b634  ret i32 %res635}636 637define i32 @test_olt_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {638; X86-LABEL: test_olt_s:639; X86:       # %bb.0:640; X86-NEXT:    fldt {{[0-9]+}}(%esp)641; X86-NEXT:    fldt {{[0-9]+}}(%esp)642; X86-NEXT:    fcompp643; X86-NEXT:    wait644; X86-NEXT:    fnstsw %ax645; X86-NEXT:    # kill: def $ah killed $ah killed $ax646; X86-NEXT:    sahf647; X86-NEXT:    ja .LBB17_1648; X86-NEXT:  # %bb.2:649; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax650; X86-NEXT:    movl (%eax), %eax651; X86-NEXT:    retl652; X86-NEXT:  .LBB17_1:653; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax654; X86-NEXT:    movl (%eax), %eax655; X86-NEXT:    retl656;657; X64-LABEL: test_olt_s:658; X64:       # %bb.0:659; X64-NEXT:    movl %edi, %eax660; X64-NEXT:    fldt {{[0-9]+}}(%rsp)661; X64-NEXT:    fldt {{[0-9]+}}(%rsp)662; X64-NEXT:    fcompi %st(1), %st663; X64-NEXT:    fstp %st(0)664; X64-NEXT:    wait665; X64-NEXT:    cmovbel %esi, %eax666; X64-NEXT:    retq667  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(668                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"olt",669                                               metadata !"fpexcept.strict") #0670  %res = select i1 %cond, i32 %a, i32 %b671  ret i32 %res672}673 674define i32 @test_ole_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {675; X86-LABEL: test_ole_s:676; X86:       # %bb.0:677; X86-NEXT:    fldt {{[0-9]+}}(%esp)678; X86-NEXT:    fldt {{[0-9]+}}(%esp)679; X86-NEXT:    fcompp680; X86-NEXT:    wait681; X86-NEXT:    fnstsw %ax682; X86-NEXT:    # kill: def $ah killed $ah killed $ax683; X86-NEXT:    sahf684; X86-NEXT:    jae .LBB18_1685; X86-NEXT:  # %bb.2:686; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax687; X86-NEXT:    movl (%eax), %eax688; X86-NEXT:    retl689; X86-NEXT:  .LBB18_1:690; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax691; X86-NEXT:    movl (%eax), %eax692; X86-NEXT:    retl693;694; X64-LABEL: test_ole_s:695; X64:       # %bb.0:696; X64-NEXT:    movl %edi, %eax697; X64-NEXT:    fldt {{[0-9]+}}(%rsp)698; X64-NEXT:    fldt {{[0-9]+}}(%rsp)699; X64-NEXT:    fcompi %st(1), %st700; X64-NEXT:    fstp %st(0)701; X64-NEXT:    wait702; X64-NEXT:    cmovbl %esi, %eax703; X64-NEXT:    retq704  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(705                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ole",706                                               metadata !"fpexcept.strict") #0707  %res = select i1 %cond, i32 %a, i32 %b708  ret i32 %res709}710 711define i32 @test_one_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {712; X86-LABEL: test_one_s:713; X86:       # %bb.0:714; X86-NEXT:    fldt {{[0-9]+}}(%esp)715; X86-NEXT:    fldt {{[0-9]+}}(%esp)716; X86-NEXT:    fcompp717; X86-NEXT:    wait718; X86-NEXT:    fnstsw %ax719; X86-NEXT:    # kill: def $ah killed $ah killed $ax720; X86-NEXT:    sahf721; X86-NEXT:    jne .LBB19_1722; X86-NEXT:  # %bb.2:723; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax724; X86-NEXT:    movl (%eax), %eax725; X86-NEXT:    retl726; X86-NEXT:  .LBB19_1:727; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax728; X86-NEXT:    movl (%eax), %eax729; X86-NEXT:    retl730;731; X64-LABEL: test_one_s:732; X64:       # %bb.0:733; X64-NEXT:    movl %edi, %eax734; X64-NEXT:    fldt {{[0-9]+}}(%rsp)735; X64-NEXT:    fldt {{[0-9]+}}(%rsp)736; X64-NEXT:    fcompi %st(1), %st737; X64-NEXT:    fstp %st(0)738; X64-NEXT:    wait739; X64-NEXT:    cmovel %esi, %eax740; X64-NEXT:    retq741  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(742                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"one",743                                               metadata !"fpexcept.strict") #0744  %res = select i1 %cond, i32 %a, i32 %b745  ret i32 %res746}747 748define i32 @test_ord_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {749; X86-LABEL: test_ord_s:750; X86:       # %bb.0:751; X86-NEXT:    fldt {{[0-9]+}}(%esp)752; X86-NEXT:    fldt {{[0-9]+}}(%esp)753; X86-NEXT:    fcompp754; X86-NEXT:    wait755; X86-NEXT:    fnstsw %ax756; X86-NEXT:    # kill: def $ah killed $ah killed $ax757; X86-NEXT:    sahf758; X86-NEXT:    jnp .LBB20_1759; X86-NEXT:  # %bb.2:760; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax761; X86-NEXT:    movl (%eax), %eax762; X86-NEXT:    retl763; X86-NEXT:  .LBB20_1:764; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax765; X86-NEXT:    movl (%eax), %eax766; X86-NEXT:    retl767;768; X64-LABEL: test_ord_s:769; X64:       # %bb.0:770; X64-NEXT:    movl %edi, %eax771; X64-NEXT:    fldt {{[0-9]+}}(%rsp)772; X64-NEXT:    fldt {{[0-9]+}}(%rsp)773; X64-NEXT:    fcompi %st(1), %st774; X64-NEXT:    fstp %st(0)775; X64-NEXT:    wait776; X64-NEXT:    cmovpl %esi, %eax777; X64-NEXT:    retq778  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(779                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ord",780                                               metadata !"fpexcept.strict") #0781  %res = select i1 %cond, i32 %a, i32 %b782  ret i32 %res783}784 785define i32 @test_ueq_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {786; X86-LABEL: test_ueq_s:787; X86:       # %bb.0:788; X86-NEXT:    fldt {{[0-9]+}}(%esp)789; X86-NEXT:    fldt {{[0-9]+}}(%esp)790; X86-NEXT:    fcompp791; X86-NEXT:    wait792; X86-NEXT:    fnstsw %ax793; X86-NEXT:    # kill: def $ah killed $ah killed $ax794; X86-NEXT:    sahf795; X86-NEXT:    je .LBB21_1796; X86-NEXT:  # %bb.2:797; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax798; X86-NEXT:    movl (%eax), %eax799; X86-NEXT:    retl800; X86-NEXT:  .LBB21_1:801; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax802; X86-NEXT:    movl (%eax), %eax803; X86-NEXT:    retl804;805; X64-LABEL: test_ueq_s:806; X64:       # %bb.0:807; X64-NEXT:    movl %edi, %eax808; X64-NEXT:    fldt {{[0-9]+}}(%rsp)809; X64-NEXT:    fldt {{[0-9]+}}(%rsp)810; X64-NEXT:    fcompi %st(1), %st811; X64-NEXT:    fstp %st(0)812; X64-NEXT:    wait813; X64-NEXT:    cmovnel %esi, %eax814; X64-NEXT:    retq815  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(816                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ueq",817                                               metadata !"fpexcept.strict") #0818  %res = select i1 %cond, i32 %a, i32 %b819  ret i32 %res820}821 822define i32 @test_ugt_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {823; X86-LABEL: test_ugt_s:824; X86:       # %bb.0:825; X86-NEXT:    fldt {{[0-9]+}}(%esp)826; X86-NEXT:    fldt {{[0-9]+}}(%esp)827; X86-NEXT:    fcompp828; X86-NEXT:    wait829; X86-NEXT:    fnstsw %ax830; X86-NEXT:    # kill: def $ah killed $ah killed $ax831; X86-NEXT:    sahf832; X86-NEXT:    jb .LBB22_1833; X86-NEXT:  # %bb.2:834; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax835; X86-NEXT:    movl (%eax), %eax836; X86-NEXT:    retl837; X86-NEXT:  .LBB22_1:838; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax839; X86-NEXT:    movl (%eax), %eax840; X86-NEXT:    retl841;842; X64-LABEL: test_ugt_s:843; X64:       # %bb.0:844; X64-NEXT:    movl %edi, %eax845; X64-NEXT:    fldt {{[0-9]+}}(%rsp)846; X64-NEXT:    fldt {{[0-9]+}}(%rsp)847; X64-NEXT:    fcompi %st(1), %st848; X64-NEXT:    fstp %st(0)849; X64-NEXT:    wait850; X64-NEXT:    cmovael %esi, %eax851; X64-NEXT:    retq852  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(853                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ugt",854                                               metadata !"fpexcept.strict") #0855  %res = select i1 %cond, i32 %a, i32 %b856  ret i32 %res857}858 859define i32 @test_uge_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {860; X86-LABEL: test_uge_s:861; X86:       # %bb.0:862; X86-NEXT:    fldt {{[0-9]+}}(%esp)863; X86-NEXT:    fldt {{[0-9]+}}(%esp)864; X86-NEXT:    fcompp865; X86-NEXT:    wait866; X86-NEXT:    fnstsw %ax867; X86-NEXT:    # kill: def $ah killed $ah killed $ax868; X86-NEXT:    sahf869; X86-NEXT:    jbe .LBB23_1870; X86-NEXT:  # %bb.2:871; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax872; X86-NEXT:    movl (%eax), %eax873; X86-NEXT:    retl874; X86-NEXT:  .LBB23_1:875; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax876; X86-NEXT:    movl (%eax), %eax877; X86-NEXT:    retl878;879; X64-LABEL: test_uge_s:880; X64:       # %bb.0:881; X64-NEXT:    movl %edi, %eax882; X64-NEXT:    fldt {{[0-9]+}}(%rsp)883; X64-NEXT:    fldt {{[0-9]+}}(%rsp)884; X64-NEXT:    fcompi %st(1), %st885; X64-NEXT:    fstp %st(0)886; X64-NEXT:    wait887; X64-NEXT:    cmoval %esi, %eax888; X64-NEXT:    retq889  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(890                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"uge",891                                               metadata !"fpexcept.strict") #0892  %res = select i1 %cond, i32 %a, i32 %b893  ret i32 %res894}895 896define i32 @test_ult_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {897; X86-LABEL: test_ult_s:898; X86:       # %bb.0:899; X86-NEXT:    fldt {{[0-9]+}}(%esp)900; X86-NEXT:    fldt {{[0-9]+}}(%esp)901; X86-NEXT:    fcompp902; X86-NEXT:    wait903; X86-NEXT:    fnstsw %ax904; X86-NEXT:    # kill: def $ah killed $ah killed $ax905; X86-NEXT:    sahf906; X86-NEXT:    jb .LBB24_1907; X86-NEXT:  # %bb.2:908; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax909; X86-NEXT:    movl (%eax), %eax910; X86-NEXT:    retl911; X86-NEXT:  .LBB24_1:912; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax913; X86-NEXT:    movl (%eax), %eax914; X86-NEXT:    retl915;916; X64-LABEL: test_ult_s:917; X64:       # %bb.0:918; X64-NEXT:    movl %edi, %eax919; X64-NEXT:    fldt {{[0-9]+}}(%rsp)920; X64-NEXT:    fldt {{[0-9]+}}(%rsp)921; X64-NEXT:    fcompi %st(1), %st922; X64-NEXT:    fstp %st(0)923; X64-NEXT:    wait924; X64-NEXT:    cmovael %esi, %eax925; X64-NEXT:    retq926  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(927                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ult",928                                               metadata !"fpexcept.strict") #0929  %res = select i1 %cond, i32 %a, i32 %b930  ret i32 %res931}932 933define i32 @test_ule_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {934; X86-LABEL: test_ule_s:935; X86:       # %bb.0:936; X86-NEXT:    fldt {{[0-9]+}}(%esp)937; X86-NEXT:    fldt {{[0-9]+}}(%esp)938; X86-NEXT:    fcompp939; X86-NEXT:    wait940; X86-NEXT:    fnstsw %ax941; X86-NEXT:    # kill: def $ah killed $ah killed $ax942; X86-NEXT:    sahf943; X86-NEXT:    jbe .LBB25_1944; X86-NEXT:  # %bb.2:945; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax946; X86-NEXT:    movl (%eax), %eax947; X86-NEXT:    retl948; X86-NEXT:  .LBB25_1:949; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax950; X86-NEXT:    movl (%eax), %eax951; X86-NEXT:    retl952;953; X64-LABEL: test_ule_s:954; X64:       # %bb.0:955; X64-NEXT:    movl %edi, %eax956; X64-NEXT:    fldt {{[0-9]+}}(%rsp)957; X64-NEXT:    fldt {{[0-9]+}}(%rsp)958; X64-NEXT:    fcompi %st(1), %st959; X64-NEXT:    fstp %st(0)960; X64-NEXT:    wait961; X64-NEXT:    cmoval %esi, %eax962; X64-NEXT:    retq963  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(964                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"ule",965                                               metadata !"fpexcept.strict") #0966  %res = select i1 %cond, i32 %a, i32 %b967  ret i32 %res968}969 970define i32 @test_une_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {971; X86-LABEL: test_une_s:972; X86:       # %bb.0:973; X86-NEXT:    fldt {{[0-9]+}}(%esp)974; X86-NEXT:    fldt {{[0-9]+}}(%esp)975; X86-NEXT:    fcompp976; X86-NEXT:    wait977; X86-NEXT:    fnstsw %ax978; X86-NEXT:    # kill: def $ah killed $ah killed $ax979; X86-NEXT:    sahf980; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax981; X86-NEXT:    jne .LBB26_3982; X86-NEXT:  # %bb.1:983; X86-NEXT:    jp .LBB26_3984; X86-NEXT:  # %bb.2:985; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax986; X86-NEXT:  .LBB26_3:987; X86-NEXT:    movl (%eax), %eax988; X86-NEXT:    retl989;990; X64-LABEL: test_une_s:991; X64:       # %bb.0:992; X64-NEXT:    movl %esi, %eax993; X64-NEXT:    fldt {{[0-9]+}}(%rsp)994; X64-NEXT:    fldt {{[0-9]+}}(%rsp)995; X64-NEXT:    fcompi %st(1), %st996; X64-NEXT:    fstp %st(0)997; X64-NEXT:    wait998; X64-NEXT:    cmovnel %edi, %eax999; X64-NEXT:    cmovpl %edi, %eax1000; X64-NEXT:    retq1001  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(1002                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"une",1003                                               metadata !"fpexcept.strict") #01004  %res = select i1 %cond, i32 %a, i32 %b1005  ret i32 %res1006}1007 1008define i32 @test_uno_s(i32 %a, i32 %b, x86_fp80 %f1, x86_fp80 %f2) #0 {1009; X86-LABEL: test_uno_s:1010; X86:       # %bb.0:1011; X86-NEXT:    fldt {{[0-9]+}}(%esp)1012; X86-NEXT:    fldt {{[0-9]+}}(%esp)1013; X86-NEXT:    fcompp1014; X86-NEXT:    wait1015; X86-NEXT:    fnstsw %ax1016; X86-NEXT:    # kill: def $ah killed $ah killed $ax1017; X86-NEXT:    sahf1018; X86-NEXT:    jp .LBB27_11019; X86-NEXT:  # %bb.2:1020; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1021; X86-NEXT:    movl (%eax), %eax1022; X86-NEXT:    retl1023; X86-NEXT:  .LBB27_1:1024; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1025; X86-NEXT:    movl (%eax), %eax1026; X86-NEXT:    retl1027;1028; X64-LABEL: test_uno_s:1029; X64:       # %bb.0:1030; X64-NEXT:    movl %edi, %eax1031; X64-NEXT:    fldt {{[0-9]+}}(%rsp)1032; X64-NEXT:    fldt {{[0-9]+}}(%rsp)1033; X64-NEXT:    fcompi %st(1), %st1034; X64-NEXT:    fstp %st(0)1035; X64-NEXT:    wait1036; X64-NEXT:    cmovnpl %esi, %eax1037; X64-NEXT:    retq1038  %cond = call i1 @llvm.experimental.constrained.fcmps.f80(1039                                               x86_fp80 %f1, x86_fp80 %f2, metadata !"uno",1040                                               metadata !"fpexcept.strict") #01041  %res = select i1 %cond, i32 %a, i32 %b1042  ret i32 %res1043}1044 1045attributes #0 = { strictfp }1046 1047declare i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80, x86_fp80, metadata, metadata)1048declare i1 @llvm.experimental.constrained.fcmps.f80(x86_fp80, x86_fp80, metadata, metadata)1049