brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · e10e48f Raw
131 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefix=X643; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefix=X864 5define i128 @foo(i128 %t, i128 %u) {6; X64-LABEL: foo:7; X64:       # %bb.0:8; X64-NEXT:    movq %rdx, %r89; X64-NEXT:    movq %rdi, %rax10; X64-NEXT:    imulq %rdi, %rcx11; X64-NEXT:    mulq %rdx12; X64-NEXT:    addq %rcx, %rdx13; X64-NEXT:    imulq %rsi, %r814; X64-NEXT:    addq %r8, %rdx15; X64-NEXT:    retq16;17; X86-LABEL: foo:18; X86:       # %bb.0:19; X86-NEXT:    pushl %ebp20; X86-NEXT:    .cfi_def_cfa_offset 821; X86-NEXT:    .cfi_offset %ebp, -822; X86-NEXT:    movl %esp, %ebp23; X86-NEXT:    .cfi_def_cfa_register %ebp24; X86-NEXT:    pushl %ebx25; X86-NEXT:    pushl %edi26; X86-NEXT:    pushl %esi27; X86-NEXT:    andl $-16, %esp28; X86-NEXT:    subl $16, %esp29; X86-NEXT:    .cfi_offset %esi, -2030; X86-NEXT:    .cfi_offset %edi, -1631; X86-NEXT:    .cfi_offset %ebx, -1232; X86-NEXT:    movl 32(%ebp), %ecx33; X86-NEXT:    movl 40(%ebp), %edi34; X86-NEXT:    movl 44(%ebp), %esi35; X86-NEXT:    imull %ecx, %esi36; X86-NEXT:    movl %edi, %eax37; X86-NEXT:    mull %ecx38; X86-NEXT:    movl %eax, (%esp) # 4-byte Spill39; X86-NEXT:    movl %edx, %ebx40; X86-NEXT:    addl %esi, %ebx41; X86-NEXT:    movl 36(%ebp), %eax42; X86-NEXT:    imull %edi, %eax43; X86-NEXT:    addl %eax, %ebx44; X86-NEXT:    movl 48(%ebp), %eax45; X86-NEXT:    movl %eax, %ecx46; X86-NEXT:    imull 28(%ebp), %ecx47; X86-NEXT:    movl 24(%ebp), %edi48; X86-NEXT:    mull %edi49; X86-NEXT:    addl %ecx, %edx50; X86-NEXT:    movl 52(%ebp), %esi51; X86-NEXT:    imull %edi, %esi52; X86-NEXT:    addl %edx, %esi53; X86-NEXT:    addl (%esp), %eax # 4-byte Folded Reload54; X86-NEXT:    movl %eax, (%esp) # 4-byte Spill55; X86-NEXT:    adcl %ebx, %esi56; X86-NEXT:    movl %edi, %eax57; X86-NEXT:    movl 40(%ebp), %ecx58; X86-NEXT:    mull %ecx59; X86-NEXT:    movl %edx, %ebx60; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill61; X86-NEXT:    movl 28(%ebp), %eax62; X86-NEXT:    mull %ecx63; X86-NEXT:    movl %edx, %edi64; X86-NEXT:    movl %eax, %ecx65; X86-NEXT:    addl %ebx, %ecx66; X86-NEXT:    adcl $0, %edi67; X86-NEXT:    movl 24(%ebp), %eax68; X86-NEXT:    mull 44(%ebp)69; X86-NEXT:    movl %edx, %ebx70; X86-NEXT:    addl %ecx, %eax71; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill72; X86-NEXT:    adcl %edi, %ebx73; X86-NEXT:    setb %cl74; X86-NEXT:    movl 28(%ebp), %eax75; X86-NEXT:    mull 44(%ebp)76; X86-NEXT:    addl %ebx, %eax77; X86-NEXT:    movzbl %cl, %ecx78; X86-NEXT:    adcl %ecx, %edx79; X86-NEXT:    addl (%esp), %eax # 4-byte Folded Reload80; X86-NEXT:    adcl %esi, %edx81; X86-NEXT:    movl 8(%ebp), %ecx82; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload83; X86-NEXT:    movl %esi, 4(%ecx)84; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload85; X86-NEXT:    movl %esi, (%ecx)86; X86-NEXT:    movl %eax, 8(%ecx)87; X86-NEXT:    movl %edx, 12(%ecx)88; X86-NEXT:    movl %ecx, %eax89; X86-NEXT:    leal -12(%ebp), %esp90; X86-NEXT:    popl %esi91; X86-NEXT:    popl %edi92; X86-NEXT:    popl %ebx93; X86-NEXT:    popl %ebp94; X86-NEXT:    .cfi_def_cfa %esp, 495; X86-NEXT:    retl $496  %k = mul i128 %t, %u97  ret i128 %k98}99 100@aaa = external dso_local global i128101@bbb = external dso_local global i128102 103define void @PR13897() nounwind {104; X64-LABEL: PR13897:105; X64:       # %bb.0: # %"0x0"106; X64-NEXT:    movq bbb(%rip), %rax107; X64-NEXT:    movl %eax, %ecx108; X64-NEXT:    shlq $32, %rax109; X64-NEXT:    orq %rcx, %rax110; X64-NEXT:    movq %rax, aaa+8(%rip)111; X64-NEXT:    movq %rax, aaa(%rip)112; X64-NEXT:    retq113;114; X86-LABEL: PR13897:115; X86:       # %bb.0: # %"0x0"116; X86-NEXT:    movl bbb, %eax117; X86-NEXT:    movl %eax, aaa+12118; X86-NEXT:    movl %eax, aaa+8119; X86-NEXT:    movl %eax, aaa+4120; X86-NEXT:    movl %eax, aaa121; X86-NEXT:    retl122"0x0":123  %0 = load i128, ptr @bbb124  %1 = and i128 %0, 4294967295125  %2 = shl i128 %0, 96126  %3 = mul i128 %1, 18446744078004518913127  %4 = add i128 %3, %2128  store i128 %4, ptr @aaa129  ret void130}131