summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-08-03 00:17:42 +0000
committerChris Lattner <sabre@nondot.org>2007-08-03 00:17:42 +0000
commit99fbf13dc32398ec0e46f71b2b0f08c2daeb2440 (patch)
treea521b988e9f93e00c4feca708b8db47ed2e12364 /llvm/lib
parent73ab9b3c14673ebeaf2bf2f7bda3b0b1c2bbad7c (diff)
downloadbcm5719-llvm-99fbf13dc32398ec0e46f71b2b0f08c2daeb2440.tar.gz
bcm5719-llvm-99fbf13dc32398ec0e46f71b2b0f08c2daeb2440.zip
add an observation
llvm-svn: 40772
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/README.txt27
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/README.txt b/llvm/lib/Target/X86/README.txt
index d70e90a3ca1..4648630c974 100644
--- a/llvm/lib/Target/X86/README.txt
+++ b/llvm/lib/Target/X86/README.txt
@@ -1103,3 +1103,30 @@ These instructions should go away:
movaps %xmm1, 192(%esp)
movaps %xmm1, 224(%esp)
movaps %xmm1, 176(%esp)
+
+//===---------------------------------------------------------------------===//
+
+This is a "commutable two-address" register coallescing deficiency:
+
+define <4 x float> @test1(<4 x float> %V) {
+entry:
+ %tmp8 = shufflevector <4 x float> %V, <4 x float> undef, <4 x i32> < i32 3, i32 2, i32 1, i32 0 > ; <<4 x float>> [#uses=1]
+ %add = add <4 x float> %tmp8, %V ; <<4 x float>> [#uses=1]
+ ret <4 x float> %add
+}
+
+this codegens to:
+
+_test1:
+ pshufd $27, %xmm0, %xmm1
+ addps %xmm0, %xmm1
+ movaps %xmm1, %xmm0
+ ret
+
+instead of:
+
+_test1:
+ pshufd $27, %xmm0, %xmm1
+ addps %xmm1, %xmm0
+ ret
+
OpenPOWER on IntegriCloud