constant materialization could be improved.
authorChris Lattner <sabre@nondot.org>
Thu, 7 Jan 2010 17:53:10 +0000 (17:53 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 7 Jan 2010 17:53:10 +0000 (17:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92921 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/README.txt

index f5e50fc808a8d87ebe3547e0c5d3eaa2a5c20df6..060d6a5c5c2b9d13a33cf92c547220cfa526cc3a 100644 (file)
@@ -5,6 +5,39 @@ TODO:
 * implement do-loop -> bdnz transform
 * lmw/stmw pass a la arm load store optimizer for prolog/epilog
 
+===-------------------------------------------------------------------------===
+
+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