brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · 492faaa Raw
224 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=i686-- -mattr=+x87,-sse,-sse2 -global-isel | FileCheck %s --check-prefixes=CHECK-32,GISEL_X863; RUN: llc < %s -mtriple=i686-- -mattr=+x87,-sse,-sse2 | FileCheck %s --check-prefixes=CHECK-32,SDAG_X864; RUN: llc < %s -mtriple=i686-- -mattr=+x87,-sse,-sse2 -fast-isel=true | FileCheck %s --check-prefixes=CHECK-32,SDAG_X86,FAST_X865; RUN: llc < %s -mtriple=x86_64-- -mattr=+x87,-sse,-sse2 -global-isel | FileCheck %s --check-prefixes=CHECK-64,GISEL_X646; RUN: llc < %s -mtriple=x86_64-- -mattr=+x87,-sse,-sse2 | FileCheck %s --check-prefixes=CHECK-64,SDAG_X647; RUN: llc < %s -mtriple=x86_64-- -mattr=+x87,-sse,-sse2 -fast-isel=true | FileCheck %s --check-prefixes=CHECK-64,SDAG_X64,FAST_X648 9define x86_fp80 @f0(x86_fp80 noundef %a) nounwind {10; GISEL_X86-LABEL: f0:11; GISEL_X86:       # %bb.0:12; GISEL_X86-NEXT:    pushl %ebp13; GISEL_X86-NEXT:    movl %esp, %ebp14; GISEL_X86-NEXT:    andl $-16, %esp15; GISEL_X86-NEXT:    subl $48, %esp16; GISEL_X86-NEXT:    fldt 8(%ebp)17; GISEL_X86-NEXT:    fldt {{\.?LCPI[0-9]+_[0-9]+}}18; GISEL_X86-NEXT:    fxch %st(1)19; GISEL_X86-NEXT:    fstpt {{[0-9]+}}(%esp)20; GISEL_X86-NEXT:    fstpt (%esp)21; GISEL_X86-NEXT:    fldt {{[0-9]+}}(%esp)22; GISEL_X86-NEXT:    fldt (%esp)23; GISEL_X86-NEXT:    faddp %st, %st(1)24; GISEL_X86-NEXT:    movl %ebp, %esp25; GISEL_X86-NEXT:    popl %ebp26; GISEL_X86-NEXT:    retl27;28; SDAG_X86-LABEL: f0:29; SDAG_X86:       # %bb.0:30; SDAG_X86-NEXT:    pushl %ebp31; SDAG_X86-NEXT:    movl %esp, %ebp32; SDAG_X86-NEXT:    andl $-16, %esp33; SDAG_X86-NEXT:    subl $48, %esp34; SDAG_X86-NEXT:    fldt 8(%ebp)35; SDAG_X86-NEXT:    fld %st(0)36; SDAG_X86-NEXT:    fstpt {{[0-9]+}}(%esp)37; SDAG_X86-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}38; SDAG_X86-NEXT:    fld %st(0)39; SDAG_X86-NEXT:    fstpt (%esp)40; SDAG_X86-NEXT:    faddp %st, %st(1)41; SDAG_X86-NEXT:    movl %ebp, %esp42; SDAG_X86-NEXT:    popl %ebp43; SDAG_X86-NEXT:    retl44;45; GISEL_X64-LABEL: f0:46; GISEL_X64:       # %bb.0:47; GISEL_X64-NEXT:    fldt {{[0-9]+}}(%rsp)48; GISEL_X64-NEXT:    fldt {{\.?LCPI[0-9]+_[0-9]+}}(%rip)49; GISEL_X64-NEXT:    fxch %st(1)50; GISEL_X64-NEXT:    fstpt -{{[0-9]+}}(%rsp)51; GISEL_X64-NEXT:    fstpt -{{[0-9]+}}(%rsp)52; GISEL_X64-NEXT:    fldt -{{[0-9]+}}(%rsp)53; GISEL_X64-NEXT:    fldt -{{[0-9]+}}(%rsp)54; GISEL_X64-NEXT:    faddp %st, %st(1)55; GISEL_X64-NEXT:    retq56;57; SDAG_X64-LABEL: f0:58; SDAG_X64:       # %bb.0:59; SDAG_X64-NEXT:    fldt {{[0-9]+}}(%rsp)60; SDAG_X64-NEXT:    fld %st(0)61; SDAG_X64-NEXT:    fstpt -{{[0-9]+}}(%rsp)62; SDAG_X64-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)63; SDAG_X64-NEXT:    fld %st(0)64; SDAG_X64-NEXT:    fstpt -{{[0-9]+}}(%rsp)65; SDAG_X64-NEXT:    faddp %st, %st(1)66; SDAG_X64-NEXT:    retq67  %a.addr = alloca x86_fp80, align 1668  %x = alloca x86_fp80, align 1669  store x86_fp80 %a, ptr %a.addr, align 1670  store x86_fp80 0xK400A8000000000000000, ptr %x, align 1671  %load1 = load x86_fp80, ptr %a.addr, align 1672  %load2 = load x86_fp80, ptr %x, align 1673  %add = fadd x86_fp80 %load1, %load274  ret x86_fp80 %add75}76 77 78define void @f1(ptr %a, ptr %b) nounwind {79; GISEL_X86-LABEL: f1:80; GISEL_X86:       # %bb.0:81; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax82; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx83; GISEL_X86-NEXT:    fldt (%eax)84; GISEL_X86-NEXT:    fldt (%ecx)85; GISEL_X86-NEXT:    fsubrp %st, %st(1)86; GISEL_X86-NEXT:    fstpt (%eax)87; GISEL_X86-NEXT:    retl88;89; SDAG_X86-LABEL: f1:90; SDAG_X86:       # %bb.0:91; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax92; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx93; SDAG_X86-NEXT:    fldt (%ecx)94; SDAG_X86-NEXT:    fldt (%eax)95; SDAG_X86-NEXT:    fsubrp %st, %st(1)96; SDAG_X86-NEXT:    fstpt (%ecx)97; SDAG_X86-NEXT:    retl98;99; CHECK-64-LABEL: f1:100; CHECK-64:       # %bb.0:101; CHECK-64-NEXT:    fldt (%rdi)102; CHECK-64-NEXT:    fldt (%rsi)103; CHECK-64-NEXT:    fsubrp %st, %st(1)104; CHECK-64-NEXT:    fstpt (%rdi)105; CHECK-64-NEXT:    retq106  %load1 = load x86_fp80, ptr %a, align 4107  %load2 = load x86_fp80, ptr %b, align 4108  %sub = fsub x86_fp80 %load1, %load2109  store x86_fp80 %sub, ptr %a, align 4110  ret void111}112 113define void @f2(ptr %a, ptr %b) nounwind {114; GISEL_X86-LABEL: f2:115; GISEL_X86:       # %bb.0:116; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax117; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx118; GISEL_X86-NEXT:    fldt (%eax)119; GISEL_X86-NEXT:    fldt (%ecx)120; GISEL_X86-NEXT:    fmulp %st, %st(1)121; GISEL_X86-NEXT:    fstpt (%eax)122; GISEL_X86-NEXT:    retl123;124; SDAG_X86-LABEL: f2:125; SDAG_X86:       # %bb.0:126; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax127; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx128; SDAG_X86-NEXT:    fldt (%ecx)129; SDAG_X86-NEXT:    fldt (%eax)130; SDAG_X86-NEXT:    fmulp %st, %st(1)131; SDAG_X86-NEXT:    fstpt (%ecx)132; SDAG_X86-NEXT:    retl133;134; CHECK-64-LABEL: f2:135; CHECK-64:       # %bb.0:136; CHECK-64-NEXT:    fldt (%rdi)137; CHECK-64-NEXT:    fldt (%rsi)138; CHECK-64-NEXT:    fmulp %st, %st(1)139; CHECK-64-NEXT:    fstpt (%rdi)140; CHECK-64-NEXT:    retq141  %load1 = load x86_fp80, ptr %a, align 16142  %load2 = load x86_fp80, ptr %b, align 16143  %mul = fmul x86_fp80 %load1, %load2144  store x86_fp80 %mul, ptr %a, align 16145  ret void146}147 148define void @f3(ptr %a, ptr %b) nounwind {149; GISEL_X86-LABEL: f3:150; GISEL_X86:       # %bb.0:151; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax152; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx153; GISEL_X86-NEXT:    fldt (%eax)154; GISEL_X86-NEXT:    fldt (%ecx)155; GISEL_X86-NEXT:    fdivrp %st, %st(1)156; GISEL_X86-NEXT:    fstpt (%eax)157; GISEL_X86-NEXT:    retl158;159; SDAG_X86-LABEL: f3:160; SDAG_X86:       # %bb.0:161; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax162; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx163; SDAG_X86-NEXT:    fldt (%ecx)164; SDAG_X86-NEXT:    fldt (%eax)165; SDAG_X86-NEXT:    fdivrp %st, %st(1)166; SDAG_X86-NEXT:    fstpt (%ecx)167; SDAG_X86-NEXT:    retl168;169; CHECK-64-LABEL: f3:170; CHECK-64:       # %bb.0:171; CHECK-64-NEXT:    fldt (%rdi)172; CHECK-64-NEXT:    fldt (%rsi)173; CHECK-64-NEXT:    fdivrp %st, %st(1)174; CHECK-64-NEXT:    fstpt (%rdi)175; CHECK-64-NEXT:    retq176  %load1 = load x86_fp80, ptr %a, align 4177  %load2 = load x86_fp80, ptr %b, align 4178  %div = fdiv x86_fp80 %load1, %load2179  store x86_fp80 %div, ptr %a, align 4180  ret void181}182 183define void @f6(ptr %a, ptr %b) nounwind {184; GISEL_X86-LABEL: f6:185; GISEL_X86:       # %bb.0:186; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax187; GISEL_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx188; GISEL_X86-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}189; GISEL_X86-NEXT:    fadds (%eax)190; GISEL_X86-NEXT:    fstps (%ecx)191; GISEL_X86-NEXT:    retl192;193; SDAG_X86-LABEL: f6:194; SDAG_X86:       # %bb.0:195; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %eax196; SDAG_X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx197; SDAG_X86-NEXT:    flds (%ecx)198; SDAG_X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}199; SDAG_X86-NEXT:    fstps (%eax)200; SDAG_X86-NEXT:    retl201;202; GISEL_X64-LABEL: f6:203; GISEL_X64:       # %bb.0:204; GISEL_X64-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)205; GISEL_X64-NEXT:    fadds (%rdi)206; GISEL_X64-NEXT:    fstps (%rsi)207; GISEL_X64-NEXT:    retq208;209; SDAG_X64-LABEL: f6:210; SDAG_X64:       # %bb.0:211; SDAG_X64-NEXT:    flds (%rdi)212; SDAG_X64-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)213; SDAG_X64-NEXT:    fstps (%rsi)214; SDAG_X64-NEXT:    retq215  %load1 = load float, ptr %a216  %add = fadd float %load1, 20.0217  store float %add, ptr %b218  ret void219}220;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:221; CHECK-32: {{.*}}222; FAST_X64: {{.*}}223; FAST_X86: {{.*}}224