[X86][SSE] Add lowering to cvttpd2dq/cvttps2dq for sitofp v2f64/2f32 to 2i32
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 18 Oct 2016 07:42:15 +0000 (07:42 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 18 Oct 2016 07:42:15 +0000 (07:42 +0000)
commit4ddc92b6cdcb1a15b8973fad366cd70a06446439
tree99a511ec1c2c48daeb7c1d068c79f38ea52e9656
parent391fb8662a75b7cc45cad8926888ff6c5685b4ab
[X86][SSE] Add lowering to cvttpd2dq/cvttps2dq for sitofp v2f64/2f32 to 2i32

As discussed on PR28461 we currently miss the chance to lower "fptosi <2 x double> %arg to <2 x i32>" to cvttpd2dq due to its use of illegal types.

This patch adds support for fptosi to 2i32 from both 2f64 and 2f32.

It also recognises that cvttpd2dq zeroes the upper 64-bits of the xmm result (similar to D23797) - we still don't do this for the cvttpd2dq/cvttps2dq intrinsics - this can be done in a future patch.

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

llvm-svn: 284459
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86ISelLowering.h
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
llvm/lib/Target/X86/X86InstrSSE.td
llvm/lib/Target/X86/X86TargetTransformInfo.cpp
llvm/test/Analysis/CostModel/X86/fptosi.ll
llvm/test/CodeGen/X86/vec_fp_to_int.ll
llvm/test/Transforms/SLPVectorizer/X86/fptosi.ll