Go to file
Sanjay Patel 7129c10cae merge consecutive loads that are offset from a base address
SelectionDAG::isConsecutiveLoad() was not detecting consecutive loads
when the first load was offset from a base address. 

This patch recognizes that pattern and subtracts the offset before comparing
the second load to see if it is consecutive.

The codegen change in the new test case improves from:

vmovsd	32(%rdi), %xmm0
vmovsd	48(%rdi), %xmm1 
vmovhpd	56(%rdi), %xmm1, %xmm1
vmovhpd	40(%rdi), %xmm0, %xmm0
vinsertf128	$1, %xmm1, %ymm0, %ymm0

To:

vmovups	32(%rdi), %ymm0

An existing test case is also improved from:

vmovsd	(%rdi), %xmm0
vmovsd	16(%rdi), %xmm1
vmovsd	24(%rdi), %xmm2
vunpcklpd	%xmm2, %xmm0, %xmm0 ## xmm0 = xmm0[0],xmm2[0]
vmovhpd	8(%rdi), %xmm1, %xmm3

To:

vmovsd	(%rdi), %xmm0
vmovsd	16(%rdi), %xmm1
vmovhpd	24(%rdi), %xmm0, %xmm0
vmovhpd	8(%rdi), %xmm1, %xmm1

This patch fixes PR21771 ( http://llvm.org/bugs/show_bug.cgi?id=21771 ).

Differential Revision: http://reviews.llvm.org/D6642

llvm-svn: 224379
2014-12-16 21:57:18 +00:00
clang Fix handling of invalid -O options. 2014-12-16 21:57:03 +00:00
clang-tools-extra Update to match clang r223913. 2014-12-10 03:10:06 +00:00
compiler-rt [asan] trying to fix Mac build 2014-12-16 21:06:07 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Don't include <stddef.h> 2014-11-18 14:19:27 +00:00
libcxx Re-commit the test for regex that I busted last night - now passes under ASAN 2014-12-16 16:22:43 +00:00
libcxxabi Use the newer python syntax for exceptions 2014-12-13 02:49:27 +00:00
lld Replace ReaderError with DynamicError. 2014-12-15 12:20:13 +00:00
lldb Improve the performance of the libc++ std::map formatter. This is not the full solution to the slowness of this formatter, but it's a 5% improvement in our testcase performance, which I am not going to complain too hard about. 2014-12-16 21:28:16 +00:00
llgo Use the object's package to mangle method names, rather than the receiver's package 2014-12-16 20:04:55 +00:00
llvm merge consecutive loads that are offset from a base address 2014-12-16 21:57:18 +00:00
openmp I apologise in advance for the size of this check-in. At Intel we do 2014-10-07 16:25:50 +00:00
polly Hand-modify a testcase (still PR21532) 2014-12-15 21:43:20 +00:00