summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/DynamicLibrary.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2015-05-21 10:05:03 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2015-05-21 10:05:03 +0000
commite0541993545643aad2a74cc4bdbe73197fe9f9f4 (patch)
treee8d097a57babaa2b1c2b92307489dc96a4e994ed /llvm/lib/Support/DynamicLibrary.cpp
parent1e0a69f22213fa223f229d908698cd36d7b54963 (diff)
downloadbcm5719-llvm-e0541993545643aad2a74cc4bdbe73197fe9f9f4.tar.gz
bcm5719-llvm-e0541993545643aad2a74cc4bdbe73197fe9f9f4.zip
[X86][SSE] Improve support for 128-bit vector sign extension
This patch improves support for sign extension of the lower lanes of vectors of integers by making use of the SSE41 pmovsx* sign extension instructions where possible, and optimizing the sign extension by shifts on pre-SSE41 targets (avoiding the use of i64 arithmetic shifts which require scalarization). It converts SIGN_EXTEND nodes to SIGN_EXTEND_VECTOR_INREG where necessary, that more closely matches the pmovsx* instruction than the default approach of using SIGN_EXTEND_INREG which splits the operation (into an ANY_EXTEND lowered to a shuffle followed by shifts) making instruction matching difficult during lowering. Necessary support for SIGN_EXTEND_VECTOR_INREG has been added to the DAGCombiner. Differential Revision: http://reviews.llvm.org/D9848 llvm-svn: 237885
Diffstat (limited to 'llvm/lib/Support/DynamicLibrary.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud