[LegalizeTypes] Remove code to create ISD::FP_TO_FP16 from SoftenFloatRes_FTRUNC.
authorCraig Topper <craig.topper@intel.com>
Tue, 26 Nov 2019 02:13:29 +0000 (18:13 -0800)
committerCraig Topper <craig.topper@intel.com>
Tue, 26 Nov 2019 02:18:40 +0000 (18:18 -0800)
commit3dc7c5f7d83c61fdbce5ad2ab5aad716dd6d1d1e
tree9270edde93b194cfa1a0cec1eb97db0403ddbc8e
parentc43b8ec735e88472593ca420a5c6a17630f94066
[LegalizeTypes] Remove code to create ISD::FP_TO_FP16 from SoftenFloatRes_FTRUNC.

There seems to have been a misunderstanding of what ISD::FTRUNC
represents. ISD::FTRUNC is equivalent to llvm.trunc which takes
a floating point value, truncates it without changing the size
of the value and returns it.

Despite its similar name, its different than the fptrunc instruction
in IR which changes a floating point value to a smaller floating
point value. fptrunc is represented by ISD::FP_ROUND in SelectionDAG.

Since the ISD::FP_TO_FP16 node takes a floating point value and
converts it to f16 its more similar to ISD::FP_ROUND. In fact there
is identical code to what is being removed here in SoftenFloatRes_FP_ROUND.

I assume this bug was never encountered because it would require
f16 to be legalized by softening rather than the default of
promoting.
llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp