diff options
author | Craig Topper <craig.topper@intel.com> | 2019-07-02 17:51:02 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-07-02 17:51:02 +0000 |
commit | cffbaa93b72b307904935c380f90d49d00c7ecdc (patch) | |
tree | a31e28a995d70ea4c8c32a9287f21210880fe0eb /llvm/test/CodeGen/X86/gather-addresses.ll | |
parent | 36face4c1df75c1e4e82c3f26b0b98495af9359e (diff) | |
download | bcm5719-llvm-cffbaa93b72b307904935c380f90d49d00c7ecdc.tar.gz bcm5719-llvm-cffbaa93b72b307904935c380f90d49d00c7ecdc.zip |
[X86] Add patterns to select (scalar_to_vector (loadf32)) as (V)MOVSSrm instead of COPY_TO_REGCLASS + (V)MOVSSrm_alt.
Similar for (V)MOVSD. Ultimately, I'd like to see about folding
scalar_to_vector+load to vzload. Which would select as (V)MOVSSrm
so this is closer to that.
llvm-svn: 364948
Diffstat (limited to 'llvm/test/CodeGen/X86/gather-addresses.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/gather-addresses.ll | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/llvm/test/CodeGen/X86/gather-addresses.ll b/llvm/test/CodeGen/X86/gather-addresses.ll index 6468523b3c4..d76027d402e 100644 --- a/llvm/test/CodeGen/X86/gather-addresses.ll +++ b/llvm/test/CodeGen/X86/gather-addresses.ll @@ -26,8 +26,8 @@ define <4 x double> @foo(double* %p, <4 x i32>* %i, <4 x i32>* %h) nounwind { ; LIN-SSE2-NEXT: movslq %edx, %rdx ; LIN-SSE2-NEXT: movslq %esi, %rsi ; LIN-SSE2-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero -; LIN-SSE2-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; LIN-SSE2-NEXT: movhpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; LIN-SSE2-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; LIN-SSE2-NEXT: movhpd {{.*#+}} xmm1 = xmm1[0],mem[0] ; LIN-SSE2-NEXT: retq ; @@ -42,10 +42,10 @@ define <4 x double> @foo(double* %p, <4 x i32>* %i, <4 x i32>* %h) nounwind { ; LIN-SSE4-NEXT: cltq ; LIN-SSE4-NEXT: movslq %ecx, %rcx ; LIN-SSE4-NEXT: movslq %edx, %rdx -; LIN-SSE4-NEXT: movslq %esi, %rsi ; LIN-SSE4-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero -; LIN-SSE4-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; LIN-SSE4-NEXT: movhpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; LIN-SSE4-NEXT: movslq %esi, %rax +; LIN-SSE4-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; LIN-SSE4-NEXT: movhpd {{.*#+}} xmm1 = xmm1[0],mem[0] ; LIN-SSE4-NEXT: retq ; @@ -60,13 +60,13 @@ define <4 x double> @foo(double* %p, <4 x i32>* %i, <4 x i32>* %h) nounwind { ; WIN-SSE2-NEXT: movd %xmm1, %r10d ; WIN-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[3,1,2,3] ; WIN-SSE2-NEXT: movd %xmm0, %edx -; WIN-SSE2-NEXT: movslq %r8d, %r11 +; WIN-SSE2-NEXT: movslq %r8d, %rax ; WIN-SSE2-NEXT: movslq %r9d, %r8 -; WIN-SSE2-NEXT: movslq %r10d, %rax +; WIN-SSE2-NEXT: movslq %r10d, %r9 ; WIN-SSE2-NEXT: movslq %edx, %rdx ; WIN-SSE2-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero -; WIN-SSE2-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; WIN-SSE2-NEXT: movhpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; WIN-SSE2-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; WIN-SSE2-NEXT: movhpd {{.*#+}} xmm1 = xmm1[0],mem[0] ; WIN-SSE2-NEXT: retq ; @@ -79,12 +79,12 @@ define <4 x double> @foo(double* %p, <4 x i32>* %i, <4 x i32>* %h) nounwind { ; WIN-SSE4-NEXT: pextrd $2, %xmm0, %r8d ; WIN-SSE4-NEXT: pextrd $3, %xmm0, %r9d ; WIN-SSE4-NEXT: cltq -; WIN-SSE4-NEXT: movslq %edx, %r10 -; WIN-SSE4-NEXT: movslq %r8d, %rdx -; WIN-SSE4-NEXT: movslq %r9d, %r8 +; WIN-SSE4-NEXT: movslq %edx, %rdx +; WIN-SSE4-NEXT: movslq %r8d, %r8 ; WIN-SSE4-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero -; WIN-SSE4-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; WIN-SSE4-NEXT: movhpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; WIN-SSE4-NEXT: movslq %r9d, %rax +; WIN-SSE4-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; WIN-SSE4-NEXT: movhpd {{.*#+}} xmm1 = xmm1[0],mem[0] ; WIN-SSE4-NEXT: retq ; @@ -97,13 +97,13 @@ define <4 x double> @foo(double* %p, <4 x i32>* %i, <4 x i32>* %h) nounwind { ; LIN32-NEXT: movl {{[0-9]+}}(%esp), %edx ; LIN32-NEXT: movdqa (%edx), %xmm0 ; LIN32-NEXT: pand (%ecx), %xmm0 -; LIN32-NEXT: movd %xmm0, %ecx -; LIN32-NEXT: pextrd $1, %xmm0, %edx -; LIN32-NEXT: pextrd $2, %xmm0, %esi -; LIN32-NEXT: pextrd $3, %xmm0, %edi +; LIN32-NEXT: pextrd $1, %xmm0, %ecx +; LIN32-NEXT: pextrd $2, %xmm0, %edx +; LIN32-NEXT: pextrd $3, %xmm0, %esi +; LIN32-NEXT: movd %xmm0, %edi ; LIN32-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero -; LIN32-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; LIN32-NEXT: movhpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; LIN32-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero ; LIN32-NEXT: movhpd {{.*#+}} xmm1 = xmm1[0],mem[0] ; LIN32-NEXT: popl %esi ; LIN32-NEXT: popl %edi |