// 128 bit vectors are passed by pointer
CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], CCPassIndirect<i64>>,
+
+ // 256 bit vectors are passed by pointer
+ CCIfType<[v32i8, v16i16, v8i32, v4i64, v8f32, v4f64], CCPassIndirect<i64>>,
+
// The first 4 MMX vector arguments are passed in GPRs.
CCIfType<[x86mmx], CCBitConvertToType<i64>>,
--- /dev/null
+; RUN: llc < %s -mcpu=corei7-avx -mattr=+avx | FileCheck %s\r
+target triple = "x86_64-pc-win32"\r
+\r
+declare <8 x float> @foo(<8 x float>, i32)\r
+\r
+define <8 x float> @test1(<8 x float> %x, <8 x float> %y) nounwind uwtable readnone ssp {\r
+entry:\r
+; CHECK: test1\r
+; CHECK: leaq {{.*}}, %rcx\r
+; CHECK: movl {{.*}}, %edx\r
+; CHECK: call\r
+; CHECK: ret\r
+ %x1 = fadd <8 x float> %x, %y\r
+ %call = call <8 x float> @foo(<8 x float> %x1, i32 1) nounwind\r
+ %y1 = fsub <8 x float> %call, %y\r
+ ret <8 x float> %y1\r
+}\r
+\r
; CHECK: f___vyf
; CHECK: pushq %rbp
-; CHECK-NOT: vmovaps{{.*}}(%r
; CHECK: vmovmsk
; CHECK: vmovaps %ymm{{.*}}(%r
; CHECK: vmovaps %ymm{{.*}}(%r