Add alternative support for FP_ROUND from v2f32 to v2f64
authorMichael Liao <michael.liao@intel.com>
Wed, 10 Oct 2012 16:32:15 +0000 (16:32 +0000)
committerMichael Liao <michael.liao@intel.com>
Wed, 10 Oct 2012 16:32:15 +0000 (16:32 +0000)
commiteffae0c8e16010bf93eeca32e28dd9bd45d36959
treeeadf4868b8bb4c0bff6f9c254ccb61047dd19e03
parent8e50297652a012845daa7d9ea7726fe5b760de77
Add alternative support for FP_ROUND from v2f32 to v2f64

- Due to the current matching vector elements constraints in ISD::FP_EXTEND,
  rounding from v2f32 to v2f64 is scalarized. Add a customized v2f32 widening
  to convert it into a target-specific X86ISD::VFPEXT to work around this
  constraints. This patch also reverts a previous attempt to fix this issue by
  recovering the scalarized ISD::FP_EXTEND pattern and thus significantly
  reduces the overhead of supporting non-power-2 vector FP extend.

llvm-svn: 165625
llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86ISelLowering.h