For strict FP16 to work correctly needs some changes in lowering and legalization:
- SelectionDAGLegalize::PromoteNode was missing handling for some strict fp opcodes.
- Some of the custom lowering of strict fp operations needed to be adjusted to work with FP16.
- Custom lowering needed to be added for round-to-int operations.
With this, and the previous patches for the rest of the strict fp isel, we can set IsStrictFPEnabled = true.
clang-format: please reformat the code