[LLVMbugs] [Bug 708] NEW: Instcombine slow down
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Sun Feb 12 21:19:15 PST 2006
http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=708
Summary: Instcombine slow down
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Backend: Alpha
AssignedTo: unassignedbugs at nondot.org
ReportedBy: alenhar2 at uiuc.edu
ulong %foo(ulong %y) {
entry:
%tmp = and ulong %y, 65535
%tmp2 = shr ulong %tmp, ubyte 3
ret ulong %tmp2
}
compiles to a 3 instruction sequence without instcombine
zapnot $16,3,$0
srl $0,3,$0
ret $31,($26),1
After instcombine you get
ulong %foo(ulong %y) {
entry:
%tmp = shr ulong %y, ubyte 3 ; <ulong> [#uses=1]
%tmp2 = and ulong %tmp, 8191 ; <ulong> [#uses=1]
ret ulong %tmp2
}
which compiles to
lda $0,8191($31)
srl $16,3,$1
and $1,$0,$0
ret $31,($26),1
Larger constants will overflow lda and cause even more instructions to load the
constant. Probably need some shift then mask patterns to reverse the order of
things like that.
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the llvm-bugs
mailing list