brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · 93e4fa7 Raw
165 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=i686-unknown   | FileCheck %s -check-prefix=X864 5define i32 @foo(i32 %a, i32 %b) local_unnamed_addr #0 {6; X64-LABEL: foo:7; X64:       # %bb.0: # %entry8; X64-NEXT:    # kill: def $esi killed $esi def $rsi9; X64-NEXT:    # kill: def $edi killed $edi def $rdi10; X64-NEXT:    leal 4(%rdi,%rsi,2), %ecx11; X64-NEXT:    leal 4(%rdi,%rsi,4), %eax12; X64-NEXT:    imull %ecx, %eax13; X64-NEXT:    retq14;15; X86-LABEL: foo:16; X86:       # %bb.0: # %entry17; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax18; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx19; X86-NEXT:    leal 4(%ecx,%eax,2), %edx20; X86-NEXT:    leal 4(%ecx,%eax,4), %eax21; X86-NEXT:    imull %edx, %eax22; X86-NEXT:    retl23entry:24  %mul = shl i32 %b, 125  %add = add i32 %a, 426  %add1 = add i32 %add, %mul27  %mul2 = shl i32 %b, 228  %add4 = add i32 %add, %mul229  %mul5 = mul nsw i32 %add1, %add430  ret i32 %mul531}32 33define i32 @foo1(i32 %a, i32 %b) local_unnamed_addr #0 {34; X64-LABEL: foo1:35; X64:       # %bb.0: # %entry36; X64-NEXT:    # kill: def $esi killed $esi def $rsi37; X64-NEXT:    # kill: def $edi killed $edi def $rdi38; X64-NEXT:    leal 4(%rdi,%rsi,4), %ecx39; X64-NEXT:    leal 4(%rdi,%rsi,8), %eax40; X64-NEXT:    imull %ecx, %eax41; X64-NEXT:    retq42;43; X86-LABEL: foo1:44; X86:       # %bb.0: # %entry45; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax46; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx47; X86-NEXT:    leal 4(%ecx,%eax,4), %edx48; X86-NEXT:    leal 4(%ecx,%eax,8), %eax49; X86-NEXT:    imull %edx, %eax50; X86-NEXT:    retl51entry:52  %mul = shl i32 %b, 253  %add = add i32 %a, 454  %add1 = add i32 %add, %mul55  %mul2 = shl i32 %b, 356  %add4 = add i32 %add, %mul257  %mul5 = mul nsw i32 %add1, %add458  ret i32 %mul559}60 61define i32 @foo1_mult_basic_blocks(i32 %a, i32 %b) local_unnamed_addr #0 {62; X64-LABEL: foo1_mult_basic_blocks:63; X64:       # %bb.0: # %entry64; X64-NEXT:    # kill: def $esi killed $esi def $rsi65; X64-NEXT:    # kill: def $edi killed $edi def $rdi66; X64-NEXT:    leal 4(%rdi,%rsi,4), %ecx67; X64-NEXT:    xorl %eax, %eax68; X64-NEXT:    cmpl $10, %ecx69; X64-NEXT:    je .LBB2_270; X64-NEXT:  # %bb.1: # %mid71; X64-NEXT:    leal 4(%rdi,%rsi,8), %eax72; X64-NEXT:    imull %eax, %ecx73; X64-NEXT:    movl %ecx, %eax74; X64-NEXT:  .LBB2_2: # %exit75; X64-NEXT:    retq76;77; X86-LABEL: foo1_mult_basic_blocks:78; X86:       # %bb.0: # %entry79; X86-NEXT:    pushl %esi80; X86-NEXT:    .cfi_def_cfa_offset 881; X86-NEXT:    .cfi_offset %esi, -882; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx83; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi84; X86-NEXT:    leal 4(%esi,%edx,4), %ecx85; X86-NEXT:    xorl %eax, %eax86; X86-NEXT:    cmpl $10, %ecx87; X86-NEXT:    je .LBB2_288; X86-NEXT:  # %bb.1: # %mid89; X86-NEXT:    leal 4(%esi,%edx,8), %eax90; X86-NEXT:    imull %eax, %ecx91; X86-NEXT:    movl %ecx, %eax92; X86-NEXT:  .LBB2_2: # %exit93; X86-NEXT:    popl %esi94; X86-NEXT:    .cfi_def_cfa_offset 495; X86-NEXT:    retl96entry:97  %mul = shl i32 %b, 298  %add = add i32 %a, 499  %add1 = add i32 %add, %mul100  %cmp = icmp ne i32 %add1 , 10101  br i1 %cmp , label %mid , label %exit102mid:103  %addn = add i32 %a , 4104  %mul2 = shl i32 %b, 3105  %add4 = add i32 %addn, %mul2106  %mul5 = mul nsw i32 %add1, %add4107  br label %exit108 109exit:110  %retmul = phi i32 [%mul5 , %mid] , [0 , %entry]111  ret i32 %retmul112}113 114define i32 @foo1_mult_basic_blocks_illegal_scale(i32 %a, i32 %b) local_unnamed_addr #0 {115; X64-LABEL: foo1_mult_basic_blocks_illegal_scale:116; X64:       # %bb.0: # %entry117; X64-NEXT:    # kill: def $esi killed $esi def $rsi118; X64-NEXT:    # kill: def $edi killed $edi def $rdi119; X64-NEXT:    leal 4(%rdi,%rsi,2), %ecx120; X64-NEXT:    xorl %eax, %eax121; X64-NEXT:    cmpl $10, %ecx122; X64-NEXT:    je .LBB3_2123; X64-NEXT:  # %bb.1: # %mid124; X64-NEXT:    leal 4(%rdi,%rsi,8), %eax125; X64-NEXT:    imull %eax, %ecx126; X64-NEXT:    movl %ecx, %eax127; X64-NEXT:  .LBB3_2: # %exit128; X64-NEXT:    retq129;130; X86-LABEL: foo1_mult_basic_blocks_illegal_scale:131; X86:       # %bb.0: # %entry132; X86-NEXT:    pushl %esi133; X86-NEXT:    .cfi_def_cfa_offset 8134; X86-NEXT:    .cfi_offset %esi, -8135; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx136; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi137; X86-NEXT:    leal 4(%esi,%edx,2), %ecx138; X86-NEXT:    xorl %eax, %eax139; X86-NEXT:    cmpl $10, %ecx140; X86-NEXT:    je .LBB3_2141; X86-NEXT:  # %bb.1: # %mid142; X86-NEXT:    leal 4(%esi,%edx,8), %eax143; X86-NEXT:    imull %eax, %ecx144; X86-NEXT:    movl %ecx, %eax145; X86-NEXT:  .LBB3_2: # %exit146; X86-NEXT:    popl %esi147; X86-NEXT:    .cfi_def_cfa_offset 4148; X86-NEXT:    retl149entry:150  %mul = shl i32 %b, 1151  %add = add i32 %a, 4152  %add1 = add i32 %add, %mul153  %cmp = icmp ne i32 %add1 , 10154  br i1 %cmp, label %mid , label %exit155mid:156  %addn = add i32 %a , 4157  %mul2 = shl i32 %b, 3158  %add4 = add i32 %addn, %mul2159  %mul5 = mul nsw i32 %add1, %add4160  br label %exit161exit:162  %retmul = phi i32 [%mul5 , %mid] , [0 , %entry]163  ret i32 %retmul164}165