[x32] Fix FrameIndex check in SelectLEA64_32Addr
[oota-llvm.git] / test / CodeGen / X86 / gather-addresses.ll
index 4a6927f6a269ba1d266d4f93af4a187a4e96dbf7..5f48b1e32b1613eb1d7f37cb0e4ee7f86c0f863c 100644 (file)
@@ -1,21 +1,35 @@
-; RUN: llc -mtriple=x86_64-linux < %s | FileCheck %s
-; RUN: llc -mtriple=x86_64-win32 < %s | FileCheck %s
+; RUN: llc -mtriple=x86_64-linux -mcpu=nehalem < %s | FileCheck %s --check-prefix=LIN
+; RUN: llc -mtriple=x86_64-win32 -mcpu=nehalem < %s | FileCheck %s --check-prefix=WIN
 ; rdar://7398554
 
 ; When doing vector gather-scatter index calculation with 32-bit indices,
 ; bounce the vector off of cache rather than shuffling each individual
 ; element out of the index vector.
 
-; CHECK: andps    ([[H:%rdx|%r8]]), %xmm0
-; CHECK: movaps   %xmm0, {{(-24)?}}(%rsp)
-; CHECK: movslq   {{(-24)?}}(%rsp), %rax
-; CHECK: movsd    ([[P:%rdi|%rcx]],%rax,8), %xmm0
-; CHECK: movslq   {{-20|4}}(%rsp), %rax
-; CHECK: movhpd   ([[P]],%rax,8), %xmm0
-; CHECK: movslq   {{-16|8}}(%rsp), %rax
-; CHECK: movsd    ([[P]],%rax,8), %xmm1
-; CHECK: movslq   {{-12|12}}(%rsp), %rax
-; CHECK: movhpd   ([[P]],%rax,8), %xmm1
+; CHECK: foo:
+; LIN: movaps  (%rsi), %xmm0
+; LIN: andps   (%rdx), %xmm0
+; LIN: movaps  %xmm0, -24(%rsp)
+; LIN: movslq  -24(%rsp), %[[REG1:r.+]]
+; LIN: movslq  -20(%rsp), %[[REG2:r.+]]
+; LIN: movslq  -16(%rsp), %[[REG3:r.+]]
+; LIN: movslq  -12(%rsp), %[[REG4:r.+]]
+; LIN: movsd   (%rdi,%[[REG1]],8), %xmm0
+; LIN: movhpd  (%rdi,%[[REG2]],8), %xmm0
+; LIN: movsd   (%rdi,%[[REG3]],8), %xmm1
+; LIN: movhpd  (%rdi,%[[REG4]],8), %xmm1
+
+; WIN: movaps  (%rdx), %xmm0
+; WIN: andps   (%r8), %xmm0
+; WIN: movaps  %xmm0, (%rsp)
+; WIN: movslq  (%rsp), %[[REG1:r.+]]
+; WIN: movslq  4(%rsp), %[[REG2:r.+]]
+; WIN: movslq  8(%rsp), %[[REG3:r.+]]
+; WIN: movslq  12(%rsp), %[[REG4:r.+]]
+; WIN: movsd   (%rcx,%[[REG1]],8), %xmm0
+; WIN: movhpd  (%rcx,%[[REG2]],8), %xmm0
+; WIN: movsd   (%rcx,%[[REG3]],8), %xmm1
+; WIN: movhpd  (%rcx,%[[REG4]],8), %xmm1
 
 define <4 x double> @foo(double* %p, <4 x i32>* %i, <4 x i32>* %h) nounwind {
   %a = load <4 x i32>* %i