xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/jaggedstructs.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=ppc64 -O0 -fast-isel=false < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; This tests receiving and re-passing parameters consisting of structures
4*9880d681SAndroid Build Coastguard Worker; of size 3, 5, 6, and 7.  They are to be found/placed right-adjusted in
5*9880d681SAndroid Build Coastguard Worker; the parameter registers.
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
8*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu"
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker%struct.S3 = type { [3 x i8] }
11*9880d681SAndroid Build Coastguard Worker%struct.S5 = type { [5 x i8] }
12*9880d681SAndroid Build Coastguard Worker%struct.S6 = type { [6 x i8] }
13*9880d681SAndroid Build Coastguard Worker%struct.S7 = type { [7 x i8] }
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine void @test(%struct.S3* byval %s3, %struct.S5* byval %s5, %struct.S6* byval %s6, %struct.S7* byval %s7) nounwind {
16*9880d681SAndroid Build Coastguard Workerentry:
17*9880d681SAndroid Build Coastguard Worker  call void @check(%struct.S3* byval %s3, %struct.S5* byval %s5, %struct.S6* byval %s6, %struct.S7* byval %s7)
18*9880d681SAndroid Build Coastguard Worker  ret void
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker; CHECK: std 6, 184(1)
22*9880d681SAndroid Build Coastguard Worker; CHECK: std 5, 176(1)
23*9880d681SAndroid Build Coastguard Worker; CHECK: std 4, 168(1)
24*9880d681SAndroid Build Coastguard Worker; CHECK: std 3, 160(1)
25*9880d681SAndroid Build Coastguard Worker; CHECK: lbz {{[0-9]+}}, 167(1)
26*9880d681SAndroid Build Coastguard Worker; CHECK: lhz {{[0-9]+}}, 165(1)
27*9880d681SAndroid Build Coastguard Worker; CHECK: stb {{[0-9]+}}, 55(1)
28*9880d681SAndroid Build Coastguard Worker; CHECK: sth {{[0-9]+}}, 53(1)
29*9880d681SAndroid Build Coastguard Worker; CHECK: lbz {{[0-9]+}}, 175(1)
30*9880d681SAndroid Build Coastguard Worker; CHECK: lwz {{[0-9]+}}, 171(1)
31*9880d681SAndroid Build Coastguard Worker; CHECK: stb {{[0-9]+}}, 63(1)
32*9880d681SAndroid Build Coastguard Worker; CHECK: stw {{[0-9]+}}, 59(1)
33*9880d681SAndroid Build Coastguard Worker; CHECK: lhz {{[0-9]+}}, 182(1)
34*9880d681SAndroid Build Coastguard Worker; CHECK: lwz {{[0-9]+}}, 178(1)
35*9880d681SAndroid Build Coastguard Worker; CHECK: sth {{[0-9]+}}, 70(1)
36*9880d681SAndroid Build Coastguard Worker; CHECK: stw {{[0-9]+}}, 66(1)
37*9880d681SAndroid Build Coastguard Worker; CHECK: lbz {{[0-9]+}}, 191(1)
38*9880d681SAndroid Build Coastguard Worker; CHECK: lhz {{[0-9]+}}, 189(1)
39*9880d681SAndroid Build Coastguard Worker; CHECK: lwz {{[0-9]+}}, 185(1)
40*9880d681SAndroid Build Coastguard Worker; CHECK: stb {{[0-9]+}}, 79(1)
41*9880d681SAndroid Build Coastguard Worker; CHECK: sth {{[0-9]+}}, 77(1)
42*9880d681SAndroid Build Coastguard Worker; CHECK: stw {{[0-9]+}}, 73(1)
43*9880d681SAndroid Build Coastguard Worker; CHECK: ld 6, 72(1)
44*9880d681SAndroid Build Coastguard Worker; CHECK: ld 5, 64(1)
45*9880d681SAndroid Build Coastguard Worker; CHECK: ld 4, 56(1)
46*9880d681SAndroid Build Coastguard Worker; CHECK: ld 3, 48(1)
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdeclare void @check(%struct.S3* byval, %struct.S5* byval, %struct.S6* byval, %struct.S7* byval)
49