1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/CodeGen/X86/imul-lea-2.ll
Evan Cheng a15fdaa292 Optimize some 64-bit multiplication by constants into two lea's or one lea + shl since imulq is slow (latency 5). e.g.
x * 40
=>
shlq    $3, %rdi
leaq    (%rdi,%rdi,4), %rax

This has the added benefit of allowing more multiply to be folded into addressing mode. e.g.
a * 24 + b
=>
leaq    (%rdi,%rdi,2), %rax
leaq    (%rsi,%rax,8), %rax

llvm-svn: 67917
2009-03-28 05:57:29 +00:00

16 lines
388 B
LLVM

; RUN: llvm-as < %s | llc -march=x86-64 | grep lea | count 3
; RUN: llvm-as < %s | llc -march=x86-64 | grep shl | count 1
; RUN: llvm-as < %s | llc -march=x86-64 | not grep imul
define i64 @t1(i64 %a) nounwind readnone {
entry:
%0 = mul i64 %a, 81 ; <i64> [#uses=1]
ret i64 %0
}
define i64 @t2(i64 %a) nounwind readnone {
entry:
%0 = mul i64 %a, 40 ; <i64> [#uses=1]
ret i64 %0
}