Fold FP comparisons where one operand is converted from an integer
authorChris Lattner <sabre@nondot.org>
Mon, 19 May 2008 20:18:56 +0000 (20:18 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 19 May 2008 20:18:56 +0000 (20:18 +0000)
commita540623ab1186d5045f40dc8659bf2330523d34c
treea9a256bdc984e3bf77700d6e3f64c3cbc4d649b0
parent13d57320bd212483463d4f8992d5787b29eda5df
Fold FP comparisons where one operand is converted from an integer
type and the other operand is a constant into integer comparisons.
This happens surprisingly frequently (e.g. 10 times in 471.omnetpp),
which are things like this:

%tmp8283 = sitofp i32 %tmp82 to double
%tmp1013 = fcmp ult double %tmp8283, 0.0

Clearly comparing tmp82 against i32 0 is cheaper here.

this also triggers 8 times in gobmk, including this one:

%tmp375376 = sitofp i32 %tmp375 to double
%tmp377 = fcmp ogt double %tmp375376, 8.150000e+01

which is comparing an integer against 81.5 :).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51268 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/InstructionCombining.cpp
test/Transforms/InstCombine/sitofp.ll [new file with mode: 0644]