[InstCombine] form copysign from select of FP constants (PR44153)
authorSanjay Patel <spatel@rotateright.com>
Mon, 20 Jan 2020 15:25:47 +0000 (10:25 -0500)
committerSanjay Patel <spatel@rotateright.com>
Mon, 20 Jan 2020 15:51:14 +0000 (10:51 -0500)
commit7bee94410ce265833695128dfad7fbd7a8eef6ba
tree488fc7decffffa0d4f8594f84083e8bf8ea699cf
parent9ecfaad7573bdc6725cc717cb79c9b0a32f9765a
[InstCombine] form copysign from select of FP constants (PR44153)

This should be the last step needed to solve the problem in the
description of PR44153:
https://bugs.llvm.org/show_bug.cgi?id=44153

If we're casting an FP value to int, testing its signbit, and then
choosing between a value and its negated value, that's a
complicated way of saying "copysign":

(bitcast X) <  0 ? -TC :  TC --> copysign(TC,  X)

Differential Revision: https://reviews.llvm.org/D72643
llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/test/Transforms/InstCombine/select.ll