Handle sqrt() shrinking in SimplifyLibCalls like any other call
authorSanjay Patel <spatel@rotateright.com>
Thu, 23 Oct 2014 21:52:45 +0000 (21:52 +0000)
committerSanjay Patel <spatel@rotateright.com>
Thu, 23 Oct 2014 21:52:45 +0000 (21:52 +0000)
commit848309da7c1861b328d775b28b03d8f687ebeb5c
tree8706329fab0f2e6c19524bb82d49a520ac635af6
parentecbe7c03a03bcb04b0a2fb185d331b6b6f404322
Handle sqrt() shrinking in SimplifyLibCalls like any other call

This patch removes a chunk of special case logic for folding
(float)sqrt((double)x) -> sqrtf(x)
in InstCombineCasts and handles it in the mainstream path of SimplifyLibCalls.

No functional change intended, but I loosened the restriction on the existing
sqrt testcases to allow for this optimization even without unsafe-fp-math because
that's the existing behavior.

I also added a missing test case for not shrinking the llvm.sqrt.f64 intrinsic
in case the result is used as a double.

Differential Revision: http://reviews.llvm.org/D5919

llvm-svn: 220514
llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
llvm/test/Transforms/InstCombine/double-float-shrink-1.ll