xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/byval5.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 { i8, i8, i8, i8, i8, i8, i8, i8,
28*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
29*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
30*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
31*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
32*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
33*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
34*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
35*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
36*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
37*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
38*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
39*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
40*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
41*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
42*9880d681SAndroid Build Coastguard Worker                   i8, i8, i8, i8, i8, i8, i8, i8,
43*9880d681SAndroid Build Coastguard Worker                   i8 }
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Workerdefine void @g(i8 signext  %a1, i8 signext  %a2, i8 signext  %a3,
47*9880d681SAndroid Build Coastguard Worker	 i8 signext  %a4, i8 signext  %a5, i8 signext  %a6) {
48*9880d681SAndroid Build Coastguard Workerentry:
49*9880d681SAndroid Build Coastguard Worker        %a = alloca %struct.s
50*9880d681SAndroid Build Coastguard Worker        %tmp = getelementptr %struct.s, %struct.s* %a, i32 0, i32 0
51*9880d681SAndroid Build Coastguard Worker        store i8 %a1, i8* %tmp, align 8
52*9880d681SAndroid Build Coastguard Worker        %tmp2 = getelementptr %struct.s, %struct.s* %a, i32 0, i32 1
53*9880d681SAndroid Build Coastguard Worker        store i8 %a2, i8* %tmp2, align 8
54*9880d681SAndroid Build Coastguard Worker        %tmp4 = getelementptr %struct.s, %struct.s* %a, i32 0, i32 2
55*9880d681SAndroid Build Coastguard Worker        store i8 %a3, i8* %tmp4, align 8
56*9880d681SAndroid Build Coastguard Worker        %tmp6 = getelementptr %struct.s, %struct.s* %a, i32 0, i32 3
57*9880d681SAndroid Build Coastguard Worker        store i8 %a4, i8* %tmp6, align 8
58*9880d681SAndroid Build Coastguard Worker        %tmp8 = getelementptr %struct.s, %struct.s* %a, i32 0, i32 4
59*9880d681SAndroid Build Coastguard Worker        store i8 %a5, i8* %tmp8, align 8
60*9880d681SAndroid Build Coastguard Worker        %tmp10 = getelementptr %struct.s, %struct.s* %a, i32 0, i32 5
61*9880d681SAndroid Build Coastguard Worker        store i8 %a6, i8* %tmp10, align 8
62*9880d681SAndroid Build Coastguard Worker        call void @f( %struct.s* byval %a )
63*9880d681SAndroid Build Coastguard Worker        call void @f( %struct.s* byval %a )
64*9880d681SAndroid Build Coastguard Worker        ret void
65*9880d681SAndroid Build Coastguard Worker}
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Workerdeclare void @f(%struct.s* byval)
68