SuccessChanges

Summary

  1. [X86] Add test cases for v2i32->v2f32 (details)
  2. [X86] Add custom legalization for strict_uint_to_fp v2i32->v2f32. (details)
  3. [X86] Add tests for constrained float intrinsics on (details)
  4. [X86][FPEnv] Promote some float strictfp operations to double on (details)
Commit bc202547d522407a55f7a0bb246c9cd46d793faf by craig.topper
[X86] Add test cases for v2i32->v2f32
strict_sint_to_fp/strict_uint_to_fp. NFC
The file was modifiedllvm/test/CodeGen/X86/vec-strict-inttofp-128.ll
Commit a5d266b9cfc6b5cda1925636a14de13cf46a4743 by craig.topper
[X86] Add custom legalization for strict_uint_to_fp v2i32->v2f32.
I believe the algorithm we use for non-strict is exception safe for
strict. The fsub won't generate any exceptions. After it we will have an
exact version of the i32 integer in a double. Then we just round it to
f32. That rounding will generate a precision exception if it can't be
represented exactly.
The file was modifiedllvm/test/CodeGen/X86/vec-strict-inttofp-128.ll
The file was modifiedllvm/test/CodeGen/X86/vector-constrained-fp-intrinsics.ll
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp
Commit e647ff0d7d734d8e07d39670302b86f3c69bb0d5 by craig.topper
[X86] Add tests for constrained float intrinsics on
i686-pc-windows-msvc. NFC
We need to promote these to double due to missing libcalls on Windows.
The file was addedllvm/test/CodeGen/X86/fp-strict-libcalls-msvc32.ll
Commit 53ee806d93e8d2371726ec5ce59b0e68b309c258 by craig.topper
[X86][FPEnv] Promote some float strictfp operations to double on
i686-pc-windows-msvc to match what we do for non-strict.
The float libcalls are inlined in MSVC's math header where they just
cast to double and use the double libcall. Do the same when we emit
libcalls.
The file was modifiedllvm/test/CodeGen/X86/fp-strict-libcalls-msvc32.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
The file was modifiedllvm/lib/Target/X86/X86ISelLowering.cpp