[AVX512] add PSLLD and PSLLQ Intrinsic
[oota-llvm.git] / test / CodeGen / X86 / byval2.ll
1 ; RUN: llc < %s -mtriple=x86_64-linux -mattr=-avx | FileCheck %s -check-prefix=X64
2 ; X64-NOT:     movsq
3 ; X64:     rep
4 ; X64-NOT:     rep
5 ; X64:     movsq
6 ; X64-NOT:     movsq
7 ; X64:     rep
8 ; X64-NOT:     rep
9 ; X64:     movsq
10 ; X64-NOT:     rep
11 ; X64-NOT:     movsq
12
13 ; Win64 has not supported byval yet.
14
15 ; RUN: llc < %s -march=x86 -mattr=-avx | FileCheck %s -check-prefix=X32
16 ; X32-NOT:     movsl
17 ; X32:     rep
18 ; X32-NOT:     rep
19 ; X32:     movsl
20 ; X32-NOT:     movsl
21 ; X32:     rep
22 ; X32-NOT:     rep
23 ; X32:     movsl
24 ; X32-NOT:     rep
25 ; X32-NOT:     movsl
26
27 %struct.s = type { i64, i64, i64, i64, i64, i64, i64, i64,
28                    i64, i64, i64, i64, i64, i64, i64, i64,
29                    i64 }
30
31 define void @g(i64 %a, i64 %b, i64 %c) {
32 entry:
33         %d = alloca %struct.s, align 16
34         %tmp = getelementptr %struct.s, %struct.s* %d, i32 0, i32 0
35         store i64 %a, i64* %tmp, align 16
36         %tmp2 = getelementptr %struct.s, %struct.s* %d, i32 0, i32 1
37         store i64 %b, i64* %tmp2, align 16
38         %tmp4 = getelementptr %struct.s, %struct.s* %d, i32 0, i32 2
39         store i64 %c, i64* %tmp4, align 16
40         call void @f( %struct.s*byval %d )
41         call void @f( %struct.s*byval %d )
42         ret void
43 }
44
45 declare void @f(%struct.s* byval)