InstCombine: fix fold "fcmp x, undef" to account for NaN
authorMehdi Amini <mehdi.amini@apple.com>
Mon, 9 Mar 2015 03:20:25 +0000 (03:20 +0000)
committerMehdi Amini <mehdi.amini@apple.com>
Mon, 9 Mar 2015 03:20:25 +0000 (03:20 +0000)
commiteb242a504161f86f3a1e059732a0c4bf91c35735
tree5d0bbc099d952d01d41a31b9aebff8fdcd92125c
parentce90329824037c89af64a5ee852e4c86f0c62cc7
InstCombine: fix fold "fcmp x, undef" to account for NaN

Summary:
See the two test cases.

; Can fold fcmp with undef on one side by choosing NaN for the undef

; Can fold fcmp with undef on both side
;   fcmp u_pred undef, undef -> true
;   fcmp o_pred undef, undef -> false
; because whatever you choose for the first undef
; you can choose NaN for the other undef

Reviewers: hfinkel, chandlerc, majnemer

Reviewed By: majnemer

Subscribers: majnemer, llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 231626
llvm/include/llvm/IR/Instructions.h
llvm/lib/Analysis/InstructionSimplify.cpp
llvm/lib/IR/ConstantFold.cpp
llvm/test/Transforms/InstCombine/fcmp.ll