brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · b4546c1 Raw
94 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=X644 5define i128 @add_i128(i128 %x, i128 %y) nounwind {6; X86-LABEL: add_i128:7; X86:       # %bb.0:8; X86-NEXT:    pushl %ebp9; X86-NEXT:    movl %esp, %ebp10; X86-NEXT:    pushl %edi11; X86-NEXT:    pushl %esi12; X86-NEXT:    andl $-16, %esp13; X86-NEXT:    movl 8(%ebp), %eax14; X86-NEXT:    movl 32(%ebp), %ecx15; X86-NEXT:    movl 36(%ebp), %edx16; X86-NEXT:    movl 24(%ebp), %esi17; X86-NEXT:    movl 28(%ebp), %edi18; X86-NEXT:    addl 40(%ebp), %esi19; X86-NEXT:    adcl 44(%ebp), %edi20; X86-NEXT:    adcl 48(%ebp), %ecx21; X86-NEXT:    adcl 52(%ebp), %edx22; X86-NEXT:    addl $1, %esi23; X86-NEXT:    adcl $0, %edi24; X86-NEXT:    adcl $0, %ecx25; X86-NEXT:    adcl $0, %edx26; X86-NEXT:    movl %edi, 4(%eax)27; X86-NEXT:    movl %esi, (%eax)28; X86-NEXT:    movl %ecx, 8(%eax)29; X86-NEXT:    movl %edx, 12(%eax)30; X86-NEXT:    leal -8(%ebp), %esp31; X86-NEXT:    popl %esi32; X86-NEXT:    popl %edi33; X86-NEXT:    popl %ebp34; X86-NEXT:    retl $435;36; X64-LABEL: add_i128:37; X64:       # %bb.0:38; X64-NEXT:    movq %rdi, %rax39; X64-NEXT:    addq %rdx, %rax40; X64-NEXT:    adcq %rcx, %rsi41; X64-NEXT:    addq $1, %rax42; X64-NEXT:    adcq $0, %rsi43; X64-NEXT:    movq %rsi, %rdx44; X64-NEXT:    retq45  %t0 = add i128 %x, 146  %t1 = add i128 %y, %t047  ret i128 %t148}49 50; PR4248651define <1 x i128> @add_v1i128(<1 x i128> %x, <1 x i128> %y) nounwind {52; X86-LABEL: add_v1i128:53; X86:       # %bb.0:54; X86-NEXT:    pushl %edi55; X86-NEXT:    pushl %esi56; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax57; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx58; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx59; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi60; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi61; X86-NEXT:    addl {{[0-9]+}}(%esp), %esi62; X86-NEXT:    adcl {{[0-9]+}}(%esp), %edi63; X86-NEXT:    adcl {{[0-9]+}}(%esp), %ecx64; X86-NEXT:    adcl {{[0-9]+}}(%esp), %edx65; X86-NEXT:    addl $1, %esi66; X86-NEXT:    adcl $0, %edi67; X86-NEXT:    adcl $0, %ecx68; X86-NEXT:    adcl $0, %edx69; X86-NEXT:    movl %edi, 4(%eax)70; X86-NEXT:    movl %esi, (%eax)71; X86-NEXT:    movl %ecx, 8(%eax)72; X86-NEXT:    movl %edx, 12(%eax)73; X86-NEXT:    popl %esi74; X86-NEXT:    popl %edi75; X86-NEXT:    retl $476;77; X64-LABEL: add_v1i128:78; X64:       # %bb.0:79; X64-NEXT:    movq %rdi, %rax80; X64-NEXT:    addq %rdx, %rax81; X64-NEXT:    adcq %rcx, %rsi82; X64-NEXT:    movq %rax, %xmm083; X64-NEXT:    movq %rsi, %xmm184; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]85; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,2,3]86; X64-NEXT:    movq %xmm0, %rdx87; X64-NEXT:    addq $1, %rax88; X64-NEXT:    adcq $0, %rdx89; X64-NEXT:    retq90  %t0 = add <1 x i128> %x, <i128 1>91  %t1 = add <1 x i128> %y, %t092  ret <1 x i128> %t193}94