summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-02-09 17:38:01 +0000
committerChris Lattner <sabre@nondot.org>2007-02-09 17:38:01 +0000
commitc9088b4c8e98e2d75fccdf9aebc23bb341d021b2 (patch)
tree72268dae60561f5700086f48b30843af31ceea2f /llvm
parent82f223475d362c12a904abd2043a1b2022cf5c31 (diff)
downloadbcm5719-llvm-c9088b4c8e98e2d75fccdf9aebc23bb341d021b2.tar.gz
bcm5719-llvm-c9088b4c8e98e2d75fccdf9aebc23bb341d021b2.zip
add a note
llvm-svn: 34101
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/PowerPC/README.txt29
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/README.txt b/llvm/lib/Target/PowerPC/README.txt
index a615b7ef6df..932893eae1b 100644
--- a/llvm/lib/Target/PowerPC/README.txt
+++ b/llvm/lib/Target/PowerPC/README.txt
@@ -596,3 +596,32 @@ _test:
This sort of thing occurs a lot due to globalopt.
===-------------------------------------------------------------------------===
+
+We currently compile 32-bit bswap:
+
+declare i32 @llvm.bswap.i32(i32 %A)
+define i32 @test(i32 %A) {
+ %B = call i32 @llvm.bswap.i32(i32 %A)
+ ret i32 %B
+}
+
+to:
+
+_test:
+ rlwinm r2, r3, 24, 16, 23
+ slwi r4, r3, 24
+ rlwimi r2, r3, 8, 24, 31
+ rlwimi r4, r3, 8, 8, 15
+ rlwimi r4, r2, 0, 16, 31
+ mr r3, r4
+ blr
+
+it would be more efficient to produce:
+
+_foo: mr r0,r3
+ rlwinm r3,r3,8,0xffffffff
+ rlwimi r3,r0,24,0,7
+ rlwimi r3,r0,24,16,23
+ blr
+
+===-------------------------------------------------------------------------===
OpenPOWER on IntegriCloud