brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · bdf3432 Raw
138 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=x86_64-unknown-gnux32 | FileCheck %s --check-prefixes=X324; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefix=X645 6define void @add(ptr %p, ptr %q) nounwind {7; X86-LABEL: add:8; X86:       # %bb.0:9; X86-NEXT:    pushl %ebp10; X86-NEXT:    pushl %ebx11; X86-NEXT:    pushl %edi12; X86-NEXT:    pushl %esi13; X86-NEXT:    subl $8, %esp14; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx15; X86-NEXT:    movl 28(%ecx), %eax16; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill17; X86-NEXT:    movl 24(%ecx), %eax18; X86-NEXT:    movl %eax, (%esp) # 4-byte Spill19; X86-NEXT:    movl 20(%ecx), %esi20; X86-NEXT:    movl 16(%ecx), %edi21; X86-NEXT:    movl 12(%ecx), %ebx22; X86-NEXT:    movl 8(%ecx), %ebp23; X86-NEXT:    movl (%ecx), %edx24; X86-NEXT:    movl 4(%ecx), %ecx25; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax26; X86-NEXT:    addl %edx, (%eax)27; X86-NEXT:    adcl %ecx, 4(%eax)28; X86-NEXT:    adcl %ebp, 8(%eax)29; X86-NEXT:    adcl %ebx, 12(%eax)30; X86-NEXT:    adcl %edi, 16(%eax)31; X86-NEXT:    adcl %esi, 20(%eax)32; X86-NEXT:    movl (%esp), %ecx # 4-byte Reload33; X86-NEXT:    adcl %ecx, 24(%eax)34; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload35; X86-NEXT:    adcl %ecx, 28(%eax)36; X86-NEXT:    addl $8, %esp37; X86-NEXT:    popl %esi38; X86-NEXT:    popl %edi39; X86-NEXT:    popl %ebx40; X86-NEXT:    popl %ebp41; X86-NEXT:    retl42;43; X32-LABEL: add:44; X32:       # %bb.0:45; X32-NEXT:    movq 24(%esi), %rax46; X32-NEXT:    movq 16(%esi), %rcx47; X32-NEXT:    movq (%esi), %rdx48; X32-NEXT:    movq 8(%esi), %rsi49; X32-NEXT:    addq %rdx, (%edi)50; X32-NEXT:    adcq %rsi, 8(%edi)51; X32-NEXT:    adcq %rcx, 16(%edi)52; X32-NEXT:    adcq %rax, 24(%edi)53; X32-NEXT:    retq54;55; X64-LABEL: add:56; X64:       # %bb.0:57; X64-NEXT:    movq 24(%rsi), %rax58; X64-NEXT:    movq 16(%rsi), %rcx59; X64-NEXT:    movq (%rsi), %rdx60; X64-NEXT:    movq 8(%rsi), %rsi61; X64-NEXT:    addq %rdx, (%rdi)62; X64-NEXT:    adcq %rsi, 8(%rdi)63; X64-NEXT:    adcq %rcx, 16(%rdi)64; X64-NEXT:    adcq %rax, 24(%rdi)65; X64-NEXT:    retq66  %a = load i256, ptr %p67  %b = load i256, ptr %q68  %c = add i256 %a, %b69  store i256 %c, ptr %p70  ret void71}72define void @sub(ptr %p, ptr %q) nounwind {73; X86-LABEL: sub:74; X86:       # %bb.0:75; X86-NEXT:    pushl %ebp76; X86-NEXT:    pushl %ebx77; X86-NEXT:    pushl %edi78; X86-NEXT:    pushl %esi79; X86-NEXT:    subl $8, %esp80; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx81; X86-NEXT:    movl 28(%ecx), %eax82; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill83; X86-NEXT:    movl 24(%ecx), %eax84; X86-NEXT:    movl %eax, (%esp) # 4-byte Spill85; X86-NEXT:    movl 20(%ecx), %esi86; X86-NEXT:    movl 16(%ecx), %edi87; X86-NEXT:    movl 12(%ecx), %ebx88; X86-NEXT:    movl 8(%ecx), %ebp89; X86-NEXT:    movl (%ecx), %edx90; X86-NEXT:    movl 4(%ecx), %ecx91; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax92; X86-NEXT:    subl %edx, (%eax)93; X86-NEXT:    sbbl %ecx, 4(%eax)94; X86-NEXT:    sbbl %ebp, 8(%eax)95; X86-NEXT:    sbbl %ebx, 12(%eax)96; X86-NEXT:    sbbl %edi, 16(%eax)97; X86-NEXT:    sbbl %esi, 20(%eax)98; X86-NEXT:    movl (%esp), %ecx # 4-byte Reload99; X86-NEXT:    sbbl %ecx, 24(%eax)100; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload101; X86-NEXT:    sbbl %ecx, 28(%eax)102; X86-NEXT:    addl $8, %esp103; X86-NEXT:    popl %esi104; X86-NEXT:    popl %edi105; X86-NEXT:    popl %ebx106; X86-NEXT:    popl %ebp107; X86-NEXT:    retl108;109; X32-LABEL: sub:110; X32:       # %bb.0:111; X32-NEXT:    movq 24(%esi), %rax112; X32-NEXT:    movq 16(%esi), %rcx113; X32-NEXT:    movq (%esi), %rdx114; X32-NEXT:    movq 8(%esi), %rsi115; X32-NEXT:    subq %rdx, (%edi)116; X32-NEXT:    sbbq %rsi, 8(%edi)117; X32-NEXT:    sbbq %rcx, 16(%edi)118; X32-NEXT:    sbbq %rax, 24(%edi)119; X32-NEXT:    retq120;121; X64-LABEL: sub:122; X64:       # %bb.0:123; X64-NEXT:    movq 24(%rsi), %rax124; X64-NEXT:    movq 16(%rsi), %rcx125; X64-NEXT:    movq (%rsi), %rdx126; X64-NEXT:    movq 8(%rsi), %rsi127; X64-NEXT:    subq %rdx, (%rdi)128; X64-NEXT:    sbbq %rsi, 8(%rdi)129; X64-NEXT:    sbbq %rcx, 16(%rdi)130; X64-NEXT:    sbbq %rax, 24(%rdi)131; X64-NEXT:    retq132  %a = load i256, ptr %p133  %b = load i256, ptr %q134  %c = sub i256 %a, %b135  store i256 %c, ptr %p136  ret void137}138