brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.6 KiB · 89afd1b Raw
177 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s --check-prefixes=X643; RUN: llc < %s -mtriple=i686-unknown-linux-gnu | FileCheck %s --check-prefixes=X864 5define { i128, i8 } @muloti_test(i128 %l, i128 %r) unnamed_addr #0 {6; X64-LABEL: muloti_test:7; X64:       # %bb.0: # %start8; X64-NEXT:    movq %rdx, %r89; X64-NEXT:    movq %rsi, %rax10; X64-NEXT:    testq %rcx, %rcx11; X64-NEXT:    setne %dl12; X64-NEXT:    testq %rsi, %rsi13; X64-NEXT:    setne %r9b14; X64-NEXT:    andb %dl, %r9b15; X64-NEXT:    mulq %r816; X64-NEXT:    movq %rax, %rsi17; X64-NEXT:    seto %r10b18; X64-NEXT:    movq %rcx, %rax19; X64-NEXT:    mulq %rdi20; X64-NEXT:    seto %r11b21; X64-NEXT:    orb %r10b, %r11b22; X64-NEXT:    orb %r9b, %r11b23; X64-NEXT:    leaq (%rsi,%rax), %rcx24; X64-NEXT:    movq %rdi, %rax25; X64-NEXT:    mulq %r826; X64-NEXT:    addq %rcx, %rdx27; X64-NEXT:    setb %cl28; X64-NEXT:    orb %r11b, %cl29; X64-NEXT:    retq30;31; X86-LABEL: muloti_test:32; X86:       # %bb.0: # %start33; X86-NEXT:    pushl %ebp34; X86-NEXT:    .cfi_def_cfa_offset 835; X86-NEXT:    pushl %ebx36; X86-NEXT:    .cfi_def_cfa_offset 1237; X86-NEXT:    pushl %edi38; X86-NEXT:    .cfi_def_cfa_offset 1639; X86-NEXT:    pushl %esi40; X86-NEXT:    .cfi_def_cfa_offset 2041; X86-NEXT:    subl $28, %esp42; X86-NEXT:    .cfi_def_cfa_offset 4843; X86-NEXT:    .cfi_offset %esi, -2044; X86-NEXT:    .cfi_offset %edi, -1645; X86-NEXT:    .cfi_offset %ebx, -1246; X86-NEXT:    .cfi_offset %ebp, -847; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi48; X86-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill49; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax50; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx51; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi52; X86-NEXT:    mull %ebx53; X86-NEXT:    movl %eax, %ecx54; X86-NEXT:    seto {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill55; X86-NEXT:    movl %esi, %eax56; X86-NEXT:    mull %edi57; X86-NEXT:    leal (%ecx,%eax), %esi58; X86-NEXT:    seto {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill59; X86-NEXT:    movl %edi, %eax60; X86-NEXT:    mull %ebx61; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill62; X86-NEXT:    movl %edx, %ecx63; X86-NEXT:    addl %esi, %ecx64; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill65; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax66; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi67; X86-NEXT:    mull %edi68; X86-NEXT:    movl %eax, %esi69; X86-NEXT:    seto {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill70; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx71; X86-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill72; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax73; X86-NEXT:    mull %ebx74; X86-NEXT:    leal (%esi,%eax), %esi75; X86-NEXT:    seto {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill76; X86-NEXT:    movl %ebx, %eax77; X86-NEXT:    mull %edi78; X86-NEXT:    movl %eax, %ebp79; X86-NEXT:    movl %edx, %ebx80; X86-NEXT:    addl %esi, %ebx81; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill82; X86-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload83; X86-NEXT:    adcl %ecx, %ebx84; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax85; X86-NEXT:    mull %edi86; X86-NEXT:    movl %edx, %ecx87; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill88; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax89; X86-NEXT:    mull %edi90; X86-NEXT:    movl %edx, %esi91; X86-NEXT:    movl %eax, %edi92; X86-NEXT:    addl %ecx, %edi93; X86-NEXT:    adcl $0, %esi94; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax95; X86-NEXT:    mull {{[0-9]+}}(%esp)96; X86-NEXT:    movl %edx, %ecx97; X86-NEXT:    addl %edi, %eax98; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill99; X86-NEXT:    adcl %esi, %ecx100; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill101; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi102; X86-NEXT:    movl %esi, %eax103; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi104; X86-NEXT:    mull %edi105; X86-NEXT:    addl %ecx, %eax106; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload107; X86-NEXT:    adcl %ecx, %edx108; X86-NEXT:    addl %ebp, %eax109; X86-NEXT:    adcl %ebx, %edx110; X86-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill111; X86-NEXT:    testl %esi, %esi112; X86-NEXT:    setne %cl113; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi114; X86-NEXT:    testl %esi, %esi115; X86-NEXT:    setne %ch116; X86-NEXT:    andb %cl, %ch117; X86-NEXT:    movb {{[-0-9]+}}(%e{{[sb]}}p), %cl # 1-byte Reload118; X86-NEXT:    orb {{[-0-9]+}}(%e{{[sb]}}p), %cl # 1-byte Folded Reload119; X86-NEXT:    orb %ch, %cl120; X86-NEXT:    orb {{[-0-9]+}}(%e{{[sb]}}p), %cl # 1-byte Folded Reload121; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill122; X86-NEXT:    testl %edi, %edi123; X86-NEXT:    setne %cl124; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi125; X86-NEXT:    testl %edi, %edi126; X86-NEXT:    setne %ch127; X86-NEXT:    andb %cl, %ch128; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 1-byte Folded Reload129; X86-NEXT:    orb {{[-0-9]+}}(%e{{[sb]}}p), %bl # 1-byte Folded Reload130; X86-NEXT:    orb %ch, %bl131; X86-NEXT:    orb {{[-0-9]+}}(%e{{[sb]}}p), %bl # 1-byte Folded Reload132; X86-NEXT:    orl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill133; X86-NEXT:    setne %bh134; X86-NEXT:    orl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill135; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx136; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload137; X86-NEXT:    movl %esi, 4(%ecx)138; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload139; X86-NEXT:    movl %esi, (%ecx)140; X86-NEXT:    movl %eax, 8(%ecx)141; X86-NEXT:    movl %edx, 12(%ecx)142; X86-NEXT:    setne %al143; X86-NEXT:    andb %bh, %al144; X86-NEXT:    orb %bl, %al145; X86-NEXT:    orb {{[-0-9]+}}(%e{{[sb]}}p), %al # 1-byte Folded Reload146; X86-NEXT:    orb {{[-0-9]+}}(%e{{[sb]}}p), %al # 1-byte Folded Reload147; X86-NEXT:    andb $1, %al148; X86-NEXT:    movb %al, 16(%ecx)149; X86-NEXT:    movl %ecx, %eax150; X86-NEXT:    addl $28, %esp151; X86-NEXT:    .cfi_def_cfa_offset 20152; X86-NEXT:    popl %esi153; X86-NEXT:    .cfi_def_cfa_offset 16154; X86-NEXT:    popl %edi155; X86-NEXT:    .cfi_def_cfa_offset 12156; X86-NEXT:    popl %ebx157; X86-NEXT:    .cfi_def_cfa_offset 8158; X86-NEXT:    popl %ebp159; X86-NEXT:    .cfi_def_cfa_offset 4160; X86-NEXT:    retl $4161start:162  %0 = tail call { i128, i1 } @llvm.umul.with.overflow.i128(i128 %l, i128 %r) #2163  %1 = extractvalue { i128, i1 } %0, 0164  %2 = extractvalue { i128, i1 } %0, 1165  %3 = zext i1 %2 to i8166  %4 = insertvalue { i128, i8 } undef, i128 %1, 0167  %5 = insertvalue { i128, i8 } %4, i8 %3, 1168  ret { i128, i8 } %5169}170 171; Function Attrs: nounwind readnone speculatable172declare { i128, i1 } @llvm.umul.with.overflow.i128(i128, i128) #1173 174attributes #0 = { nounwind readnone uwtable }175attributes #1 = { nounwind readnone speculatable }176attributes #2 = { nounwind }177