aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2008-03-30 19:07:11 +0000
committerNick Lewycky <nicholas@mxc.ca>2008-03-30 19:07:11 +0000
commit8dd65058681c3b8c9c7cb1a0885ec452f5e14cd9 (patch)
treea9164a2cdda7cf45bab658a40fc36f4fecb7d722 /lib
parent8c2ec51a7f74e9f830105ac3682c68c3f7ccdf4e (diff)
downloadexternal_llvm-8dd65058681c3b8c9c7cb1a0885ec452f5e14cd9.zip
external_llvm-8dd65058681c3b8c9c7cb1a0885ec452f5e14cd9.tar.gz
external_llvm-8dd65058681c3b8c9c7cb1a0885ec452f5e14cd9.tar.bz2
Moved from PR1570.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48965 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/README.txt26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/Target/README.txt b/lib/Target/README.txt
index c64d7e0..2c12089 100644
--- a/lib/Target/README.txt
+++ b/lib/Target/README.txt
@@ -780,3 +780,29 @@ be done safely if "b" isn't modified between the strlen and memcpy of course.
//===---------------------------------------------------------------------===//
+define i32 @test2(float %X, float %Y) {
+entry:
+ %tmp3 = fcmp uno float %X, %Y ; <i1> [#uses=1]
+ %tmp34 = zext i1 %tmp3 to i8 ; <i8> [#uses=1]
+ %tmp = xor i8 %tmp34, 1 ; <i8> [#uses=1]
+ %toBoolnot5 = zext i8 %tmp to i32 ; <i32> [#uses=1]
+ ret i32 %toBoolnot5
+}
+
+could be optimized further. Instcombine should use its bitwise analysis to
+collapse the zext/xor/zext structure to an xor/zext and then remove the
+xor by reversing the fcmp.
+
+Desired output:
+
+define i32 @test2(float %X, float %Y) {
+entry:
+ %tmp3 = fcmp ord float %X, %Y ; <i1> [#uses=1]
+ %tmp34 = zext i1 %tmp3 to i32 ; <i32> [#uses=1]
+ ret i32 %tmp34
+}
+
+To fix this, we need to make CanEvaluateInDifferentType smarter.
+
+//===---------------------------------------------------------------------===//
+