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