blob: 899750523b9801f413dab715391868255ff82ddd [file] [log] [blame]
Simon Pilgrim804cbd62017-07-27 10:36:09 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s -check-prefix=X64
3; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s -check-prefix=X86
4
5define i32 @foo(i32 %a, i32 %b) local_unnamed_addr #0 {
6; X64-LABEL: foo:
7; X64: # BB#0: # %entry
8; X64-NEXT: # kill: %ESI<def> %ESI<kill> %RSI<def>
9; X64-NEXT: # kill: %EDI<def> %EDI<kill> %RDI<def>
10; X64-NEXT: leal 4(%rdi,%rsi,2), %ecx
11; X64-NEXT: leal 4(%rdi,%rsi,4), %eax
12; X64-NEXT: imull %ecx, %eax
13; X64-NEXT: retq
14;
15; X86-LABEL: foo:
16; X86: # BB#0: # %entry
17; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
18; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
19; X86-NEXT: leal 4(%ecx,%eax,2), %edx
20; X86-NEXT: leal 4(%ecx,%eax,4), %eax
21; X86-NEXT: imull %edx, %eax
22; X86-NEXT: retl
23entry:
24 %mul = shl i32 %b, 1
25 %add = add i32 %a, 4
26 %add1 = add i32 %add, %mul
27 %mul2 = shl i32 %b, 2
28 %add4 = add i32 %add, %mul2
29 %mul5 = mul nsw i32 %add1, %add4
30 ret i32 %mul5
31}
32