summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2014-08-27 11:39:47 +0000
committerChandler Carruth <chandlerc@gmail.com>2014-08-27 11:39:47 +0000
commita5a8a9adc8d87199962a6486f8062a5f45dafac5 (patch)
treedafb3eda108c686ed2b437967831f90708a39f37 /llvm/lib/Target/X86
parent74ec9e19eea510ae0079ce9366cb0ee6bebdd933 (diff)
downloadbcm5719-llvm-a5a8a9adc8d87199962a6486f8062a5f45dafac5.tar.gz
bcm5719-llvm-a5a8a9adc8d87199962a6486f8062a5f45dafac5.zip
[x86] Fix a regression introduced with r213897 for 32-bit targets where
we stopped efficiently lowering sextload using the SSE41 instructions for that operation. This is a consequence of a bad predicate I used thinking of the memory access needs. The code actually handles the cases where the predicate doesn't apply, and handles them much better. =] Simple fix and a test case added. Fixes PR20767. llvm-svn: 216538
Diffstat (limited to 'llvm/lib/Target/X86')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index f63beab44fd..8abbc1d4e1c 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -1016,10 +1016,8 @@ void X86TargetLowering::resetOperationActions() {
// scalars) and extend in-register to a legal 128-bit vector type. For sext
// loads these must work with a single scalar load.
setLoadExtAction(ISD::SEXTLOAD, MVT::v4i8, Custom);
- if (Subtarget->is64Bit()) {
- setLoadExtAction(ISD::SEXTLOAD, MVT::v4i16, Custom);
- setLoadExtAction(ISD::SEXTLOAD, MVT::v8i8, Custom);
- }
+ setLoadExtAction(ISD::SEXTLOAD, MVT::v4i16, Custom);
+ setLoadExtAction(ISD::SEXTLOAD, MVT::v8i8, Custom);
setLoadExtAction(ISD::EXTLOAD, MVT::v2i8, Custom);
setLoadExtAction(ISD::EXTLOAD, MVT::v2i16, Custom);
setLoadExtAction(ISD::EXTLOAD, MVT::v2i32, Custom);
OpenPOWER on IntegriCloud