brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · 19554e6 Raw
228 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-- | FileCheck %s -check-prefix=X873; RUN: llc < %s -mtriple=i686-- -mattr=-x87 | FileCheck %s -check-prefixes=NOX87,NOSSE-NOX874; RUN: llc < %s -mtriple=i686-- -mattr=-x87,-sse2 | FileCheck %s -check-prefixes=NOX87,NOSSE-NOX875; RUN: llc < %s -mtriple=i686-- -mattr=-x87,+sse2 | FileCheck %s -check-prefixes=NOX87,SSE-NOX876 7define float @f1(float %a, float %b) nounwind {8; X87-LABEL: f1:9; X87:       # %bb.0: # %entry10; X87-NEXT:    flds {{[0-9]+}}(%esp)11; X87-NEXT:    retl12;13; NOSSE-NOX87-LABEL: f1:14; NOSSE-NOX87:       # %bb.0: # %entry15; NOSSE-NOX87-NEXT:    movl {{[0-9]+}}(%esp), %eax16; NOSSE-NOX87-NEXT:    retl17;18; SSE-NOX87-LABEL: f1:19; SSE-NOX87:       # %bb.0: # %entry20; SSE-NOX87-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero21; SSE-NOX87-NEXT:    movd %xmm0, %eax22; SSE-NOX87-NEXT:    retl23entry:24  ret float %b25}26 27define double @f2(double %a, double %b) nounwind {28; X87-LABEL: f2:29; X87:       # %bb.0: # %entry30; X87-NEXT:    fldl {{[0-9]+}}(%esp)31; X87-NEXT:    retl32;33; NOX87-LABEL: f2:34; NOX87:       # %bb.0: # %entry35; NOX87-NEXT:    movl {{[0-9]+}}(%esp), %eax36; NOX87-NEXT:    movl {{[0-9]+}}(%esp), %edx37; NOX87-NEXT:    retl38entry:39  ret double %b40}41 42define x86_fp80 @f3(x86_fp80 %a, x86_fp80 %b) nounwind {43; X87-LABEL: f3:44; X87:       # %bb.0: # %entry45; X87-NEXT:    fldt {{[0-9]+}}(%esp)46; X87-NEXT:    retl47;48; NOX87-LABEL: f3:49; NOX87:       # %bb.0: # %entry50; NOX87-NEXT:    movl {{[0-9]+}}(%esp), %eax51; NOX87-NEXT:    movl {{[0-9]+}}(%esp), %edx52; NOX87-NEXT:    movl {{[0-9]+}}(%esp), %ecx53; NOX87-NEXT:    retl54entry:55  ret x86_fp80 %b56}57 58define float @f4(float %a, float %b) nounwind {59; X87-LABEL: f4:60; X87:       # %bb.0: # %entry61; X87-NEXT:    flds {{[0-9]+}}(%esp)62; X87-NEXT:    fadds {{[0-9]+}}(%esp)63; X87-NEXT:    retl64;65; NOSSE-NOX87-LABEL: f4:66; NOSSE-NOX87:       # %bb.0: # %entry67; NOSSE-NOX87-NEXT:    pushl {{[0-9]+}}(%esp)68; NOSSE-NOX87-NEXT:    pushl {{[0-9]+}}(%esp)69; NOSSE-NOX87-NEXT:    calll __addsf370; NOSSE-NOX87-NEXT:    addl $8, %esp71; NOSSE-NOX87-NEXT:    retl72;73; SSE-NOX87-LABEL: f4:74; SSE-NOX87:       # %bb.0: # %entry75; SSE-NOX87-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero76; SSE-NOX87-NEXT:    addss {{[0-9]+}}(%esp), %xmm077; SSE-NOX87-NEXT:    movd %xmm0, %eax78; SSE-NOX87-NEXT:    retl79entry:80  %0 = fadd float %a, %b81  ret float %082}83 84define double @f5(double %a, double %b) nounwind {85; X87-LABEL: f5:86; X87:       # %bb.0: # %entry87; X87-NEXT:    fldl {{[0-9]+}}(%esp)88; X87-NEXT:    faddl {{[0-9]+}}(%esp)89; X87-NEXT:    retl90;91; NOSSE-NOX87-LABEL: f5:92; NOSSE-NOX87:       # %bb.0: # %entry93; NOSSE-NOX87-NEXT:    pushl {{[0-9]+}}(%esp)94; NOSSE-NOX87-NEXT:    pushl {{[0-9]+}}(%esp)95; NOSSE-NOX87-NEXT:    pushl {{[0-9]+}}(%esp)96; NOSSE-NOX87-NEXT:    pushl {{[0-9]+}}(%esp)97; NOSSE-NOX87-NEXT:    calll __adddf398; NOSSE-NOX87-NEXT:    addl $16, %esp99; NOSSE-NOX87-NEXT:    retl100;101; SSE-NOX87-LABEL: f5:102; SSE-NOX87:       # %bb.0: # %entry103; SSE-NOX87-NEXT:    pushl %ebp104; SSE-NOX87-NEXT:    movl %esp, %ebp105; SSE-NOX87-NEXT:    andl $-8, %esp106; SSE-NOX87-NEXT:    subl $8, %esp107; SSE-NOX87-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero108; SSE-NOX87-NEXT:    addsd 16(%ebp), %xmm0109; SSE-NOX87-NEXT:    movsd %xmm0, (%esp)110; SSE-NOX87-NEXT:    movl (%esp), %eax111; SSE-NOX87-NEXT:    movl {{[0-9]+}}(%esp), %edx112; SSE-NOX87-NEXT:    movl %ebp, %esp113; SSE-NOX87-NEXT:    popl %ebp114; SSE-NOX87-NEXT:    retl115entry:116  %0 = fadd double %a, %b117  ret double %0118}119 120define x86_fp80 @f6(x86_fp80 %a, x86_fp80 %b) nounwind {121; X87-LABEL: f6:122; X87:       # %bb.0: # %entry123; X87-NEXT:    fldt {{[0-9]+}}(%esp)124; X87-NEXT:    fldt {{[0-9]+}}(%esp)125; X87-NEXT:    faddp %st, %st(1)126; X87-NEXT:    retl127;128; NOX87-LABEL: f6:129; NOX87:       # %bb.0: # %entry130; NOX87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax131; NOX87-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx132; NOX87-NEXT:    pushl %ecx133; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)134; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)135; NOX87-NEXT:    pushl %eax136; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)137; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)138; NOX87-NEXT:    calll __addxf3139; NOX87-NEXT:    addl $24, %esp140; NOX87-NEXT:    movzwl %cx, %ecx141; NOX87-NEXT:    retl142entry:143  %0 = fadd x86_fp80 %a, %b144  ret x86_fp80 %0145}146 147define {float, float, float} @f7(float %a, float %b) nounwind {148; X87-LABEL: f7:149; X87:       # %bb.0: # %entry150; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax151; X87-NEXT:    flds {{[0-9]+}}(%esp)152; X87-NEXT:    flds {{[0-9]+}}(%esp)153; X87-NEXT:    fstps 8(%eax)154; X87-NEXT:    fsts 4(%eax)155; X87-NEXT:    fstps (%eax)156; X87-NEXT:    retl $4157;158; NOSSE-NOX87-LABEL: f7:159; NOSSE-NOX87:       # %bb.0: # %entry160; NOSSE-NOX87-NEXT:    movl {{[0-9]+}}(%esp), %eax161; NOSSE-NOX87-NEXT:    movl {{[0-9]+}}(%esp), %ecx162; NOSSE-NOX87-NEXT:    movl %eax, %edx163; NOSSE-NOX87-NEXT:    retl164;165; SSE-NOX87-LABEL: f7:166; SSE-NOX87:       # %bb.0: # %entry167; SSE-NOX87-NEXT:    movd {{.*#+}} xmm0 = mem[0],zero,zero,zero168; SSE-NOX87-NEXT:    movd {{.*#+}} xmm1 = mem[0],zero,zero,zero169; SSE-NOX87-NEXT:    movd %xmm0, %eax170; SSE-NOX87-NEXT:    movd %xmm0, %edx171; SSE-NOX87-NEXT:    movd %xmm1, %ecx172; SSE-NOX87-NEXT:    retl173entry:174  %0 = insertvalue {float, float, float} undef, float %a, 0175  %1 = insertvalue {float, float, float} %0, float %a, 1176  %2 = insertvalue {float, float, float} %1, float %b, 2177  ret {float, float, float} %2178}179 180define x86_fp80 @f8(i64 %a) nounwind {181; X87-LABEL: f8:182; X87:       # %bb.0: # %entry183; X87-NEXT:    fildll {{[0-9]+}}(%esp)184; X87-NEXT:    retl185;186; NOX87-LABEL: f8:187; NOX87:       # %bb.0: # %entry188; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)189; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)190; NOX87-NEXT:    calll __floatdixf191; NOX87-NEXT:    addl $8, %esp192; NOX87-NEXT:    movzwl %cx, %ecx193; NOX87-NEXT:    retl194entry:195  %0 = sitofp i64 %a to x86_fp80196  ret x86_fp80 %0197}198 199define i32 @f9(x86_fp80 %a) nounwind {200; X87-LABEL: f9:201; X87:       # %bb.0: # %entry202; X87-NEXT:    subl $8, %esp203; X87-NEXT:    fldt {{[0-9]+}}(%esp)204; X87-NEXT:    fnstcw (%esp)205; X87-NEXT:    movzwl (%esp), %eax206; X87-NEXT:    orl $3072, %eax # imm = 0xC00207; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)208; X87-NEXT:    fldcw {{[0-9]+}}(%esp)209; X87-NEXT:    fistpl {{[0-9]+}}(%esp)210; X87-NEXT:    fldcw (%esp)211; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax212; X87-NEXT:    addl $8, %esp213; X87-NEXT:    retl214;215; NOX87-LABEL: f9:216; NOX87:       # %bb.0: # %entry217; NOX87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax218; NOX87-NEXT:    pushl %eax219; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)220; NOX87-NEXT:    pushl {{[0-9]+}}(%esp)221; NOX87-NEXT:    calll __fixxfsi222; NOX87-NEXT:    addl $12, %esp223; NOX87-NEXT:    retl224entry:225  %0 = fptosi x86_fp80 %a to i32226  ret i32 %0227}228