X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FX86%2Flea-3.ll;h=a56403a24b036af145a6a577d2d88344fae0f6ac;hb=60c91c28e4d2f49c3eaac1b20125854baa8d4c7c;hp=89841ff110ef66dc2b033ca35c31b932aed225e1;hpb=57b82b78450452e2e9a61c8fbeaa55dbfdb7795a;p=oota-llvm.git diff --git a/test/CodeGen/X86/lea-3.ll b/test/CodeGen/X86/lea-3.ll index 89841ff110e..a56403a24b0 100644 --- a/test/CodeGen/X86/lea-3.ll +++ b/test/CodeGen/X86/lea-3.ll @@ -1,18 +1,22 @@ +; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-linux-gnux32 | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-nacl | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s -; RUN: llvm-as < %s | llc -march=x86-64 | grep 'leal (%rdi,%rdi,2), %eax' && -define i32 @test(i32 %a) { - %tmp2 = mul i32 %a, 3 ; [#uses=1] - ret i32 %tmp2 -} - -; RUN: llvm-as < %s | llc -march=x86-64 | grep 'leaq (,%rdi,4), %rax' +; CHECK: leaq (,[[A0:%rdi|%rcx]],4), %rax define i64 @test2(i64 %a) { %tmp2 = shl i64 %a, 2 %tmp3 = or i64 %tmp2, %a ret i64 %tmp3 } -;; TODO! LEA instead of shift + copy. +; CHECK: leal ([[A0]],[[A0]],2), %eax +define i32 @test(i32 %a) { + %tmp2 = mul i32 %a, 3 ; [#uses=1] + ret i32 %tmp2 +} + +; CHECK: leaq (,[[A0]],8), %rax define i64 @test3(i64 %a) { %tmp2 = shl i64 %a, 3 ret i64 %tmp2