mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-04 03:17:51 +00:00
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30921 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
26d2990e03
commit
15bdc96c5b
@ -734,3 +734,30 @@ _foo:
|
||||
ret
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Consider the expansion of:
|
||||
|
||||
uint %test3(uint %X) {
|
||||
%tmp1 = rem uint %X, 255
|
||||
ret uint %tmp1
|
||||
}
|
||||
|
||||
Currently it compiles to:
|
||||
|
||||
...
|
||||
movl $2155905153, %ecx
|
||||
movl 8(%esp), %esi
|
||||
movl %esi, %eax
|
||||
mull %ecx
|
||||
...
|
||||
|
||||
This could be "reassociated" into:
|
||||
|
||||
movl $2155905153, %eax
|
||||
movl 8(%esp), %ecx
|
||||
mull %ecx
|
||||
|
||||
to avoid the copy. In fact, the existing two-address stuff would do this
|
||||
except that mul isn't a commutative 2-addr instruction. I guess this has
|
||||
to be done at isel time based on the #uses to mul?
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user