[llvm-commits] [llvm] r48965 - /llvm/trunk/lib/Target/README.txt

Nick Lewycky nicholas at mxc.ca
Sun Mar 30 12:07:11 PDT 2008


Author: nicholas
Date: Sun Mar 30 14:07:11 2008
New Revision: 48965

URL: http://llvm.org/viewvc/llvm-project?rev=48965&view=rev
Log:
Moved from PR1570.

Modified:
    llvm/trunk/lib/Target/README.txt

Modified: llvm/trunk/lib/Target/README.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/README.txt?rev=48965&r1=48964&r2=48965&view=diff

==============================================================================
--- llvm/trunk/lib/Target/README.txt (original)
+++ llvm/trunk/lib/Target/README.txt Sun Mar 30 14:07:11 2008
@@ -780,3 +780,29 @@
 
 //===---------------------------------------------------------------------===//
 
+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.
+
+//===---------------------------------------------------------------------===//
+





More information about the llvm-commits mailing list