[AArch64] Optimize floating point materialization
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 1 Feb 2019 12:26:06 +0000 (12:26 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 1 Feb 2019 12:26:06 +0000 (12:26 +0000)
commitb3ccc5550d985395a7b43cfdd93bc400b332dcdb
treeacd37f4ea2157bbd8077e13f0627c2b6b3414e9a
parentf4b19c00b499e26859d0740dec8aecba34e85cbf
[AArch64] Optimize floating point materialization

This patch changes isFPImmLegal to return if the value can be enconded
as the immediate operand of a logical instruction besides checking if
for immediate field for fmov.

This optimizes some floating point materization, inclusive values
used on isinf lowering.

Reviewed By: rengolin, efriedma, evandro

Differential Revision: https://reviews.llvm.org/D57044

llvm-svn: 352866
llvm/lib/Target/AArch64/AArch64FastISel.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/fabs.ll
llvm/test/CodeGen/AArch64/fadd-combines.ll
llvm/test/CodeGen/AArch64/fpimm.ll
llvm/test/CodeGen/AArch64/isinf.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/known-never-nan.ll
llvm/test/CodeGen/AArch64/literal_pools_float.ll
llvm/test/CodeGen/AArch64/win_cst_pool.ll