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