summaryrefslogtreecommitdiff
path: root/lib/Target/PowerPC/README.txt
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-01-07 17:53:10 +0000
committerChris Lattner <sabre@nondot.org>2010-01-07 17:53:10 +0000
commitddac70674723ea8c6f115b39b40528f0d0cd76a6 (patch)
tree9cdd7c580b8c55c9be124848d8aa75e2dab40e73 /lib/Target/PowerPC/README.txt
parent3d594fd2992fa31aa74f974edaeddc4178206380 (diff)
downloadllvm-ddac70674723ea8c6f115b39b40528f0d0cd76a6.tar.gz
llvm-ddac70674723ea8c6f115b39b40528f0d0cd76a6.tar.bz2
llvm-ddac70674723ea8c6f115b39b40528f0d0cd76a6.tar.xz
constant materialization could be improved.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92921 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PowerPC/README.txt')
-rw-r--r--lib/Target/PowerPC/README.txt33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/Target/PowerPC/README.txt b/lib/Target/PowerPC/README.txt
index f5e50fc808..060d6a5c5c 100644
--- a/lib/Target/PowerPC/README.txt
+++ b/lib/Target/PowerPC/README.txt
@@ -7,6 +7,39 @@ TODO:
===-------------------------------------------------------------------------===
+On PPC64, this:
+
+long f2 (long x) { return 0xfffffff000000000UL; }
+long f3 (long x) { return 0x1ffffffffUL; }
+
+could compile into:
+
+_f2:
+ li r3,-1
+ rldicr r3,r3,0,27
+ blr
+_f3:
+ li r3,-1
+ rldicl r3,r3,0,31
+ blr
+
+we produce:
+
+_f2:
+ lis r2, 4095
+ ori r2, r2, 65535
+ sldi r3, r2, 36
+ blr
+_f3:
+ li r2, 1
+ sldi r2, r2, 32
+ oris r2, r2, 65535
+ ori r3, r2, 65535
+ blr
+
+
+===-------------------------------------------------------------------------===
+
Support 'update' load/store instructions. These are cracked on the G5, but are
still a codesize win.