aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorElena Demikhovsky <elena.demikhovsky@intel.com>2012-02-01 10:46:14 +0000
committerElena Demikhovsky <elena.demikhovsky@intel.com>2012-02-01 10:46:14 +0000
commit1766971769c21aa4e55671ac5be45b21ff31f8cd (patch)
treed51d384e3f0646eefc6297179aff586d324f1286 /test
parent732525758f3c486f5e570528e7fd9b35fe121ba0 (diff)
downloadexternal_llvm-1766971769c21aa4e55671ac5be45b21ff31f8cd.zip
external_llvm-1766971769c21aa4e55671ac5be45b21ff31f8cd.tar.gz
external_llvm-1766971769c21aa4e55671ac5be45b21ff31f8cd.tar.bz2
Passing AVX 256-bit structures in Win64 was wrong.
Fixed Win64 calling conventions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149494 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rwxr-xr-xtest/CodeGen/X86/avx-win64-args.ll18
-rw-r--r--test/CodeGen/X86/avx-win64.ll1
2 files changed, 18 insertions, 1 deletions
diff --git a/test/CodeGen/X86/avx-win64-args.ll b/test/CodeGen/X86/avx-win64-args.ll
new file mode 100755
index 0000000..8b52417
--- /dev/null
+++ b/test/CodeGen/X86/avx-win64-args.ll
@@ -0,0 +1,18 @@
+; RUN: llc < %s -mcpu=corei7-avx -mattr=+avx | FileCheck %s
+target triple = "x86_64-pc-win32"
+
+declare <8 x float> @foo(<8 x float>, i32)
+
+define <8 x float> @test1(<8 x float> %x, <8 x float> %y) nounwind uwtable readnone ssp {
+entry:
+; CHECK: test1
+; CHECK: leaq {{.*}}, %rcx
+; CHECK: movl {{.*}}, %edx
+; CHECK: call
+; CHECK: ret
+ %x1 = fadd <8 x float> %x, %y
+ %call = call <8 x float> @foo(<8 x float> %x1, i32 1) nounwind
+ %y1 = fsub <8 x float> %call, %y
+ ret <8 x float> %y1
+}
+
diff --git a/test/CodeGen/X86/avx-win64.ll b/test/CodeGen/X86/avx-win64.ll
index 511f949..dc6bd59 100644
--- a/test/CodeGen/X86/avx-win64.ll
+++ b/test/CodeGen/X86/avx-win64.ll
@@ -9,7 +9,6 @@ target triple = "x86_64-pc-win32"
; CHECK: f___vyf
; CHECK: pushq %rbp
-; CHECK-NOT: vmovaps{{.*}}(%r
; CHECK: vmovmsk
; CHECK: vmovaps %ymm{{.*}}(%r
; CHECK: vmovaps %ymm{{.*}}(%r