mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-08 03:26:34 +00:00
Evan implemented this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47827 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a4239e7367
commit
3be4893dce
@ -154,29 +154,6 @@ more than one use. Itanium will want this too.
|
|||||||
|
|
||||||
===-------------------------------------------------------------------------===
|
===-------------------------------------------------------------------------===
|
||||||
|
|
||||||
Compile this:
|
|
||||||
|
|
||||||
int %f1(int %a, int %b) {
|
|
||||||
%tmp.1 = and int %a, 15 ; <int> [#uses=1]
|
|
||||||
%tmp.3 = and int %b, 240 ; <int> [#uses=1]
|
|
||||||
%tmp.4 = or int %tmp.3, %tmp.1 ; <int> [#uses=1]
|
|
||||||
ret int %tmp.4
|
|
||||||
}
|
|
||||||
|
|
||||||
without a copy. We make this currently:
|
|
||||||
|
|
||||||
_f1:
|
|
||||||
rlwinm r2, r4, 0, 24, 27
|
|
||||||
rlwimi r2, r3, 0, 28, 31
|
|
||||||
or r3, r2, r2
|
|
||||||
blr
|
|
||||||
|
|
||||||
The two-addr pass or RA needs to learn when it is profitable to commute an
|
|
||||||
instruction to avoid a copy AFTER the 2-addr instruction. The 2-addr pass
|
|
||||||
currently only commutes to avoid inserting a copy BEFORE the two addr instr.
|
|
||||||
|
|
||||||
===-------------------------------------------------------------------------===
|
|
||||||
|
|
||||||
Compile offsets from allocas:
|
Compile offsets from allocas:
|
||||||
|
|
||||||
int *%test() {
|
int *%test() {
|
||||||
|
@ -24,3 +24,11 @@ define void @test2(i32* %A, i32* %B, i32* %D, i32* %E) {
|
|||||||
store i32 %B.upgrd.4, i32* %E
|
store i32 %B.upgrd.4, i32* %E
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define i32 @test3(i32 %a, i32 %b) {
|
||||||
|
%tmp.1 = and i32 %a, 15 ; <i32> [#uses=1]
|
||||||
|
%tmp.3 = and i32 %b, 240 ; <i32> [#uses=1]
|
||||||
|
%tmp.4 = or i32 %tmp.3, %tmp.1 ; <i32> [#uses=1]
|
||||||
|
ret i32 %tmp.4
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user