comparison test/CodeGen/PowerPC/structsinmem.ll @ 95:afa8332a0e37 LLVM3.8

LLVM 3.8
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Tue, 13 Oct 2015 17:48:58 +0900
parents e4204d083e25
children 1172e4bd9c6f
comparison
equal deleted inserted replaced
84:f3e34b893a5f 95:afa8332a0e37
41 %p4 = alloca %struct.s4, align 4 41 %p4 = alloca %struct.s4, align 4
42 %p5 = alloca %struct.s5, align 4 42 %p5 = alloca %struct.s5, align 4
43 %p6 = alloca %struct.s6, align 4 43 %p6 = alloca %struct.s6, align 4
44 %p7 = alloca %struct.s7, align 4 44 %p7 = alloca %struct.s7, align 4
45 %0 = bitcast %struct.s1* %p1 to i8* 45 %0 = bitcast %struct.s1* %p1 to i8*
46 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* getelementptr inbounds (%struct.s1* @caller1.p1, i32 0, i32 0), i64 1, i32 1, i1 false) 46 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* getelementptr inbounds (%struct.s1, %struct.s1* @caller1.p1, i32 0, i32 0), i64 1, i32 1, i1 false)
47 %1 = bitcast %struct.s2* %p2 to i8* 47 %1 = bitcast %struct.s2* %p2 to i8*
48 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* bitcast (%struct.s2* @caller1.p2 to i8*), i64 2, i32 2, i1 false) 48 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* bitcast (%struct.s2* @caller1.p2 to i8*), i64 2, i32 2, i1 false)
49 %2 = bitcast %struct.s3* %p3 to i8* 49 %2 = bitcast %struct.s3* %p3 to i8*
50 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* bitcast ({ i16, i8, i8 }* @caller1.p3 to i8*), i64 4, i32 2, i1 false) 50 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* bitcast ({ i16, i8, i8 }* @caller1.p3 to i8*), i64 4, i32 2, i1 false)
51 %3 = bitcast %struct.s4* %p4 to i8* 51 %3 = bitcast %struct.s4* %p4 to i8*
86 store i32 %z4, i32* %z4.addr, align 4 86 store i32 %z4, i32* %z4.addr, align 4
87 store i32 %z5, i32* %z5.addr, align 4 87 store i32 %z5, i32* %z5.addr, align 4
88 store i32 %z6, i32* %z6.addr, align 4 88 store i32 %z6, i32* %z6.addr, align 4
89 store i32 %z7, i32* %z7.addr, align 4 89 store i32 %z7, i32* %z7.addr, align 4
90 store i32 %z8, i32* %z8.addr, align 4 90 store i32 %z8, i32* %z8.addr, align 4
91 %a = getelementptr inbounds %struct.s1* %v1, i32 0, i32 0 91 %a = getelementptr inbounds %struct.s1, %struct.s1* %v1, i32 0, i32 0
92 %0 = load i8* %a, align 1 92 %0 = load i8, i8* %a, align 1
93 %conv = zext i8 %0 to i32 93 %conv = zext i8 %0 to i32
94 %a1 = getelementptr inbounds %struct.s2* %v2, i32 0, i32 0 94 %a1 = getelementptr inbounds %struct.s2, %struct.s2* %v2, i32 0, i32 0
95 %1 = load i16* %a1, align 2 95 %1 = load i16, i16* %a1, align 2
96 %conv2 = sext i16 %1 to i32 96 %conv2 = sext i16 %1 to i32
97 %add = add nsw i32 %conv, %conv2 97 %add = add nsw i32 %conv, %conv2
98 %a3 = getelementptr inbounds %struct.s3* %v3, i32 0, i32 0 98 %a3 = getelementptr inbounds %struct.s3, %struct.s3* %v3, i32 0, i32 0
99 %2 = load i16* %a3, align 2 99 %2 = load i16, i16* %a3, align 2
100 %conv4 = sext i16 %2 to i32 100 %conv4 = sext i16 %2 to i32
101 %add5 = add nsw i32 %add, %conv4 101 %add5 = add nsw i32 %add, %conv4
102 %a6 = getelementptr inbounds %struct.s4* %v4, i32 0, i32 0 102 %a6 = getelementptr inbounds %struct.s4, %struct.s4* %v4, i32 0, i32 0
103 %3 = load i32* %a6, align 4 103 %3 = load i32, i32* %a6, align 4
104 %add7 = add nsw i32 %add5, %3 104 %add7 = add nsw i32 %add5, %3
105 %a8 = getelementptr inbounds %struct.s5* %v5, i32 0, i32 0 105 %a8 = getelementptr inbounds %struct.s5, %struct.s5* %v5, i32 0, i32 0
106 %4 = load i32* %a8, align 4 106 %4 = load i32, i32* %a8, align 4
107 %add9 = add nsw i32 %add7, %4 107 %add9 = add nsw i32 %add7, %4
108 %a10 = getelementptr inbounds %struct.s6* %v6, i32 0, i32 0 108 %a10 = getelementptr inbounds %struct.s6, %struct.s6* %v6, i32 0, i32 0
109 %5 = load i32* %a10, align 4 109 %5 = load i32, i32* %a10, align 4
110 %add11 = add nsw i32 %add9, %5 110 %add11 = add nsw i32 %add9, %5
111 %a12 = getelementptr inbounds %struct.s7* %v7, i32 0, i32 0 111 %a12 = getelementptr inbounds %struct.s7, %struct.s7* %v7, i32 0, i32 0
112 %6 = load i32* %a12, align 4 112 %6 = load i32, i32* %a12, align 4
113 %add13 = add nsw i32 %add11, %6 113 %add13 = add nsw i32 %add11, %6
114 ret i32 %add13 114 ret i32 %add13
115 115
116 ; CHECK: lha {{[0-9]+}}, 126(1) 116 ; CHECK: lha {{[0-9]+}}, 126(1)
117 ; CHECK: lha {{[0-9]+}}, 132(1) 117 ; CHECK: lha {{[0-9]+}}, 132(1)
130 %p4 = alloca %struct.t4, align 1 130 %p4 = alloca %struct.t4, align 1
131 %p5 = alloca %struct.t5, align 1 131 %p5 = alloca %struct.t5, align 1
132 %p6 = alloca %struct.t6, align 1 132 %p6 = alloca %struct.t6, align 1
133 %p7 = alloca %struct.t7, align 1 133 %p7 = alloca %struct.t7, align 1
134 %0 = bitcast %struct.t1* %p1 to i8* 134 %0 = bitcast %struct.t1* %p1 to i8*
135 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* getelementptr inbounds (%struct.t1* @caller2.p1, i32 0, i32 0), i64 1, i32 1, i1 false) 135 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %0, i8* getelementptr inbounds (%struct.t1, %struct.t1* @caller2.p1, i32 0, i32 0), i64 1, i32 1, i1 false)
136 %1 = bitcast %struct.t2* %p2 to i8* 136 %1 = bitcast %struct.t2* %p2 to i8*
137 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* bitcast ({ i16 }* @caller2.p2 to i8*), i64 2, i32 1, i1 false) 137 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %1, i8* bitcast ({ i16 }* @caller2.p2 to i8*), i64 2, i32 1, i1 false)
138 %2 = bitcast %struct.t3* %p3 to i8* 138 %2 = bitcast %struct.t3* %p3 to i8*
139 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* bitcast (%struct.t3* @caller2.p3 to i8*), i64 3, i32 1, i1 false) 139 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* bitcast (%struct.t3* @caller2.p3 to i8*), i64 3, i32 1, i1 false)
140 %3 = bitcast %struct.t4* %p4 to i8* 140 %3 = bitcast %struct.t4* %p4 to i8*
178 store i32 %z4, i32* %z4.addr, align 4 178 store i32 %z4, i32* %z4.addr, align 4
179 store i32 %z5, i32* %z5.addr, align 4 179 store i32 %z5, i32* %z5.addr, align 4
180 store i32 %z6, i32* %z6.addr, align 4 180 store i32 %z6, i32* %z6.addr, align 4
181 store i32 %z7, i32* %z7.addr, align 4 181 store i32 %z7, i32* %z7.addr, align 4
182 store i32 %z8, i32* %z8.addr, align 4 182 store i32 %z8, i32* %z8.addr, align 4
183 %a = getelementptr inbounds %struct.t1* %v1, i32 0, i32 0 183 %a = getelementptr inbounds %struct.t1, %struct.t1* %v1, i32 0, i32 0
184 %0 = load i8* %a, align 1 184 %0 = load i8, i8* %a, align 1
185 %conv = zext i8 %0 to i32 185 %conv = zext i8 %0 to i32
186 %a1 = getelementptr inbounds %struct.t2* %v2, i32 0, i32 0 186 %a1 = getelementptr inbounds %struct.t2, %struct.t2* %v2, i32 0, i32 0
187 %1 = load i16* %a1, align 1 187 %1 = load i16, i16* %a1, align 1
188 %conv2 = sext i16 %1 to i32 188 %conv2 = sext i16 %1 to i32
189 %add = add nsw i32 %conv, %conv2 189 %add = add nsw i32 %conv, %conv2
190 %a3 = getelementptr inbounds %struct.t3* %v3, i32 0, i32 0 190 %a3 = getelementptr inbounds %struct.t3, %struct.t3* %v3, i32 0, i32 0
191 %2 = load i16* %a3, align 1 191 %2 = load i16, i16* %a3, align 1
192 %conv4 = sext i16 %2 to i32 192 %conv4 = sext i16 %2 to i32
193 %add5 = add nsw i32 %add, %conv4 193 %add5 = add nsw i32 %add, %conv4
194 %a6 = getelementptr inbounds %struct.t4* %v4, i32 0, i32 0 194 %a6 = getelementptr inbounds %struct.t4, %struct.t4* %v4, i32 0, i32 0
195 %3 = load i32* %a6, align 1 195 %3 = load i32, i32* %a6, align 1
196 %add7 = add nsw i32 %add5, %3 196 %add7 = add nsw i32 %add5, %3
197 %a8 = getelementptr inbounds %struct.t5* %v5, i32 0, i32 0 197 %a8 = getelementptr inbounds %struct.t5, %struct.t5* %v5, i32 0, i32 0
198 %4 = load i32* %a8, align 1 198 %4 = load i32, i32* %a8, align 1
199 %add9 = add nsw i32 %add7, %4 199 %add9 = add nsw i32 %add7, %4
200 %a10 = getelementptr inbounds %struct.t6* %v6, i32 0, i32 0 200 %a10 = getelementptr inbounds %struct.t6, %struct.t6* %v6, i32 0, i32 0
201 %5 = load i32* %a10, align 1 201 %5 = load i32, i32* %a10, align 1
202 %add11 = add nsw i32 %add9, %5 202 %add11 = add nsw i32 %add9, %5
203 %a12 = getelementptr inbounds %struct.t7* %v7, i32 0, i32 0 203 %a12 = getelementptr inbounds %struct.t7, %struct.t7* %v7, i32 0, i32 0
204 %6 = load i32* %a12, align 1 204 %6 = load i32, i32* %a12, align 1
205 %add13 = add nsw i32 %add11, %6 205 %add13 = add nsw i32 %add11, %6
206 ret i32 %add13 206 ret i32 %add13
207 207
208 ; CHECK: lha {{[0-9]+}}, 126(1) 208 ; CHECK: lha {{[0-9]+}}, 126(1)
209 ; CHECK: lha {{[0-9]+}}, 133(1) 209 ; CHECK: lha {{[0-9]+}}, 133(1)