mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
Moved from PR1570.
llvm-svn: 48965
This commit is contained in:
parent
b529e3f1d8
commit
7d33dc0878
@ -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.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user