Improve the widening of integral binary vector operations
authorPaul Redmond <paul.redmond@intel.com>
Mon, 19 Aug 2013 20:01:35 +0000 (20:01 +0000)
committerPaul Redmond <paul.redmond@intel.com>
Mon, 19 Aug 2013 20:01:35 +0000 (20:01 +0000)
commitd345395ec97a303ffd420c3e761af7b9e3e4c338
tree51c7846b1fcf5c930ba0d5f268bfce5a670e8184
parent32bd10b1a33df2cc4d067a16901d56665f4ba085
Improve the widening of integral binary vector operations

- split WidenVecRes_Binary into WidenVecRes_Binary and WidenVecRes_BinaryCanTrap
  - WidenVecRes_BinaryCanTrap preserves the original behaviour for operations
    that can trap
  - WidenVecRes_Binary simply widens the operation and improves codegen for
    3-element vectors by allowing widening and promotion on x86 (matches the
    behaviour of unary and ternary operation widening)
- use WidenVecRes_Binary for operations on integers.

Reviewed by: nrotem

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188699 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeTypes.h
lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
test/CodeGen/X86/vsplit-and.ll
test/CodeGen/X86/widen_arith-3.ll
test/CodeGen/X86/widen_load-2.ll