Lines Matching full:to
9 ; "TO" - Optimizations and targetdata. This tests target-dependent
11 ; RUN: opt -S -o - -passes='function(instcombine),globalopt' -data-layout="e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" < %s | FileCheck --check-prefix=TO %s
21 ; PLAIN: @G8 = global ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -1)
22 ; PLAIN: @G1 = global ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -1)
23 ; PLAIN: @F8 = global ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -2)
24 ; PLAIN: @F1 = global ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -2)
29 ; OPT: @F8 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
30 ; OPT: @F1 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
31 ; OPT: @H8 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
32 ; OPT: @H1 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
33 ; TO: @G8 = local_unnamed_addr global ptr null
34 ; TO: @G1 = local_unnamed_addr global ptr null
35 ; TO: @F8 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
36 ; TO: @F1 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
37 ; TO: @H8 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
38 ; TO: @H1 = local_unnamed_addr global ptr inttoptr (i64 -1 to ptr)
40 @G8 = global ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -1)
41 @G1 = global ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -1)
42 @F8 = global ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -2)
43 @F1 = global ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -2)
44 @H8 = global ptr getelementptr (i8, ptr inttoptr (i32 0 to ptr), i32 -1)
45 @H1 = global ptr getelementptr (i1, ptr inttoptr (i32 0 to ptr), i32 -1)
47 ; The target-independent folder should be able to do some clever
49 ; target-dependent folder should fold these down to constants.
51 ; PLAIN: @a = constant i64 mul (i64 ptrtoint (ptr getelementptr ({ [7 x double], [7 x double] }, ptr null, i64 11) to i64), i64 15)
52 ; PLAIN: @b = constant i64 ptrtoint (ptr getelementptr ({ i1, [13 x double] }, ptr null, i64 0, i32 1) to i64)
53 ; PLAIN: @c = constant i64 ptrtoint (ptr getelementptr ({ double, double, double, double }, ptr null, i64 0, i32 2) to i64)
54 ; PLAIN: @d = constant i64 ptrtoint (ptr getelementptr ([13 x double], ptr null, i64 0, i32 11) to i64)
55 ; PLAIN: @e = constant i64 ptrtoint (ptr getelementptr ({ double, float, double, double }, ptr null, i64 0, i32 2) to i64)
56 ; PLAIN: @f = constant i64 ptrtoint (ptr getelementptr ({ i1, <{ i16, i128 }> }, ptr null, i64 0, i32 1) to i64)
57 ; PLAIN: @g = constant i64 ptrtoint (ptr getelementptr ({ i1, { double, double } }, ptr null, i64 0, i32 1) to i64)
58 ; PLAIN: @h = constant i64 ptrtoint (ptr getelementptr (ptr, ptr null, i64 1) to i64)
59 ; PLAIN: @i = constant i64 ptrtoint (ptr getelementptr ({ i1, ptr }, ptr null, i64 0, i32 1) to i64)
69 ; TO: @a = local_unnamed_addr constant i64 18480
70 ; TO: @b = local_unnamed_addr constant i64 8
71 ; TO: @c = local_unnamed_addr constant i64 16
72 ; TO: @d = local_unnamed_addr constant i64 88
73 ; TO: @e = local_unnamed_addr constant i64 16
74 ; TO: @f = local_unnamed_addr constant i64 1
75 ; TO: @g = local_unnamed_addr constant i64 8
76 ; TO: @h = local_unnamed_addr constant i64 8
77 ; TO: @i = local_unnamed_addr constant i64 8
79 @a = constant i64 mul (i64 3, i64 mul (i64 ptrtoint (ptr getelementptr ({[7 x double], [7 x double]}, ptr null, i64 11) to i64), i64 5))
80 @b = constant i64 ptrtoint (ptr getelementptr ({i1, [13 x double]}, ptr null, i64 0, i32 1) to i64)
81 @c = constant i64 ptrtoint (ptr getelementptr ({double, double, double, double}, ptr null, i64 0, i32 2) to i64)
82 @d = constant i64 ptrtoint (ptr getelementptr ([13 x double], ptr null, i64 0, i32 11) to i64)
83 @e = constant i64 ptrtoint (ptr getelementptr ({double, float, double, double}, ptr null, i64 0, i32 2) to i64)
84 @f = constant i64 ptrtoint (ptr getelementptr ({i1, <{ i16, i128 }>}, ptr null, i64 0, i32 1) to i64)
85 @g = constant i64 ptrtoint (ptr getelementptr ({i1, {double, double}}, ptr null, i64 0, i32 1) to i64)
86 @h = constant i64 ptrtoint (ptr getelementptr (ptr, ptr null, i64 1) to i64)
87 @i = constant i64 ptrtoint (ptr getelementptr ({i1, ptr}, ptr null, i64 0, i32 1) to i64)
89 ; The target-dependent folder should cast GEP indices to integer-sized pointers.
94 ; OPT: @M = local_unnamed_addr constant ptr inttoptr (i64 8 to ptr)
95 ; OPT: @N = local_unnamed_addr constant ptr inttoptr (i64 8 to ptr)
96 ; OPT: @O = local_unnamed_addr constant ptr inttoptr (i64 8 to ptr)
97 ; TO: @M = local_unnamed_addr constant ptr inttoptr (i64 8 to ptr)
98 ; TO: @N = local_unnamed_addr constant ptr inttoptr (i64 8 to ptr)
99 ; TO: @O = local_unnamed_addr constant ptr inttoptr (i64 8 to ptr)
111 ; TO: @Y = local_unnamed_addr global ptr getelementptr inbounds nuw (i8, ptr @ext, i64 48)
112 ; TO: @Z = local_unnamed_addr global ptr getelementptr inbounds nuw (i8, ptr @ext, i64 12)
122 ; PLAIN: %t = bitcast ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -1) to ptr
126 ; PLAIN: %t = bitcast ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -1) to ptr
130 ; PLAIN: %t = bitcast ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -2) to ptr
134 ; PLAIN: %t = bitcast ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -2) to ptr
138 ; PLAIN: %t = bitcast ptr getelementptr (i8, ptr null, i32 -1) to ptr
142 ; PLAIN: %t = bitcast ptr getelementptr (i1, ptr null, i32 -1) to ptr
152 ; OPT: ret ptr inttoptr (i64 -1 to ptr)
155 ; OPT: ret ptr inttoptr (i64 -1 to ptr)
158 ; OPT: ret ptr inttoptr (i64 -1 to ptr)
161 ; OPT: ret ptr inttoptr (i64 -1 to ptr)
163 ; TO: define ptr @goo8() local_unnamed_addr #0 {
164 ; TO: ret ptr null
165 ; TO: }
166 ; TO: define ptr @goo1() local_unnamed_addr #0 {
167 ; TO: ret ptr null
168 ; TO: }
169 ; TO: define ptr @foo8() local_unnamed_addr #0 {
170 ; TO: ret ptr inttoptr (i64 -1 to ptr)
171 ; TO: }
172 ; TO: define ptr @foo1() local_unnamed_addr #0 {
173 ; TO: ret ptr inttoptr (i64 -1 to ptr)
174 ; TO: }
175 ; TO: define ptr @hoo8() local_unnamed_addr #0 {
176 ; TO: ret ptr inttoptr (i64 -1 to ptr)
177 ; TO: }
178 ; TO: define ptr @hoo1() local_unnamed_addr #0 {
179 ; TO: ret ptr inttoptr (i64 -1 to ptr)
180 ; TO: }
182 ; SCEV: %t = bitcast ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -1) to ptr
183 ; SCEV: --> (-1 + inttoptr (i32 1 to ptr))
185 ; SCEV: %t = bitcast ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -1) to ptr
186 ; SCEV: --> (-1 + inttoptr (i32 1 to ptr))
188 ; SCEV: %t = bitcast ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -2) to ptr
189 ; SCEV: --> (-2 + inttoptr (i32 1 to ptr))
191 ; SCEV: %t = bitcast ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -2) to ptr
192 ; SCEV: --> (-2 + inttoptr (i32 1 to ptr))
199 %t = bitcast ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -1) to ptr
203 %t = bitcast ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -1) to ptr
207 %t = bitcast ptr getelementptr (i8, ptr inttoptr (i32 1 to ptr), i32 -2) to ptr
211 %t = bitcast ptr getelementptr (i1, ptr inttoptr (i32 1 to ptr), i32 -2) to ptr
215 %t = bitcast ptr getelementptr (i8, ptr inttoptr (i32 0 to ptr), i32 -1) to ptr
219 %t = bitcast ptr getelementptr (i1, ptr inttoptr (i32 0 to ptr), i32 -1) to ptr
224 ; PLAIN: %t = bitcast i64 mul (i64 ptrtoint (ptr getelementptr ({ [7 x double], [7 x double] }, ptr null, i64 11) to i64), i64 15) to i64
228 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, [13 x double] }, ptr null, i64 0, i32 1) to i64) to i64
232 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr ({ double, double, double, double }, ptr null, i64 0, i32 2) to i64) to i64
236 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr ([13 x double], ptr null, i64 0, i32 11) to i64) to i64
240 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr ({ double, float, double, double }, ptr null, i64 0, i32 2) to i64) to i64
244 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, <{ i16, i128 }> }, ptr null, i64 0, i32 1) to i64) to i64
248 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, { double, double } }, ptr null, i64 0, i32 1) to i64) to i64
252 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr (ptr, ptr null, i32 1) to i64) to i64
256 ; PLAIN: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, ptr }, ptr null, i64 0, i32 1) to i64) to i64
286 ; TO: define i64 @fa() local_unnamed_addr #0 {
287 ; TO: ret i64 18480
288 ; TO: }
289 ; TO: define i64 @fb() local_unnamed_addr #0 {
290 ; TO: ret i64 8
291 ; TO: }
292 ; TO: define i64 @fc() local_unnamed_addr #0 {
293 ; TO: ret i64 16
294 ; TO: }
295 ; TO: define i64 @fd() local_unnamed_addr #0 {
296 ; TO: ret i64 88
297 ; TO: }
298 ; TO: define i64 @fe() local_unnamed_addr #0 {
299 ; TO: ret i64 16
300 ; TO: }
301 ; TO: define i64 @ff() local_unnamed_addr #0 {
302 ; TO: ret i64 1
303 ; TO: }
304 ; TO: define i64 @fg() local_unnamed_addr #0 {
305 ; TO: ret i64 8
306 ; TO: }
307 ; TO: define i64 @fh() local_unnamed_addr #0 {
308 ; TO: ret i64 8
309 ; TO: }
310 ; TO: define i64 @fi() local_unnamed_addr #0 {
311 ; TO: ret i64 8
312 ; TO: }
314 ; SCEV: %t = bitcast i64 mul (i64 ptrtoint (ptr getelementptr ({ [7 x double], [7 x double] }, ptr null, i64 11) to i64), i64 15) to i64
317 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, [13 x double] }, ptr null, i64 0, i32 1) to i64) to i64
320 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr ({ double, double, double, double }, ptr null, i64 0, i32 2) to i64) to i64
323 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr ([13 x double], ptr null, i64 0, i32 11) to i64) to i64
326 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr ({ double, float, double, double }, ptr null, i64 0, i32 2) to i64) to i64
329 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, <{ i16, i128 }> }, ptr null, i64 0, i32 1) to i64) to i64
332 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, { double, double } }, ptr null, i64 0, i32 1) to i64) to i64
335 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr (ptr, ptr null, i32 1) to i64) to i64
338 ; SCEV: %t = bitcast i64 ptrtoint (ptr getelementptr ({ i1, ptr }, ptr null, i64 0, i32 1) to i64) to i64
342 %t = bitcast i64 mul (i64 3, i64 mul (i64 ptrtoint (ptr getelementptr ({[7 x double], [7 x double]}, ptr null, i64 11) to i64), i64 5)) to i64
346 %t = bitcast i64 ptrtoint (ptr getelementptr ({i1, [13 x double]}, ptr null, i64 0, i32 1) to i64) to i64
350 %t = bitcast i64 ptrtoint (ptr getelementptr ({double, double, double, double}, ptr null, i64 0, i32 2) to i64) to i64
354 %t = bitcast i64 ptrtoint (ptr getelementptr ([13 x double], ptr null, i64 0, i32 11) to i64) to i64
358 %t = bitcast i64 ptrtoint (ptr getelementptr ({double, float, double, double}, ptr null, i64 0, i32 2) to i64) to i64
362 %t = bitcast i64 ptrtoint (ptr getelementptr ({i1, <{ i16, i128 }>}, ptr null, i64 0, i32 1) to i64) to i64
366 %t = bitcast i64 ptrtoint (ptr getelementptr ({i1, {double, double}}, ptr null, i64 0, i32 1) to i64) to i64
370 %t = bitcast i64 ptrtoint (ptr getelementptr (ptr, ptr null, i32 1) to i64) to i64
374 %t = bitcast i64 ptrtoint (ptr getelementptr ({i1, ptr}, ptr null, i64 0, i32 1) to i64) to i64
379 ; PLAIN: %t = bitcast ptr getelementptr (i64, ptr null, i32 1) to ptr
383 ; PLAIN: %t = bitcast ptr getelementptr ({ i64, i64 }, ptr null, i32 0, i32 1) to ptr
387 ; PLAIN: %t = bitcast ptr getelementptr ([2 x i64], ptr null, i32 0, i32 1) to ptr
391 ; OPT: ret ptr inttoptr (i64 8 to ptr)
394 ; OPT: ret ptr inttoptr (i64 8 to ptr)
397 ; OPT: ret ptr inttoptr (i64 8 to ptr)
399 ; TO: define ptr @fM() local_unnamed_addr #0 {
400 ; TO: ret ptr inttoptr (i64 8 to ptr)
401 ; TO: }
402 ; TO: define ptr @fN() local_unnamed_addr #0 {
403 ; TO: ret ptr inttoptr (i64 8 to ptr)
404 ; TO: }
405 ; TO: define ptr @fO() local_unnamed_addr #0 {
406 ; TO: ret ptr inttoptr (i64 8 to ptr)
407 ; TO: }
409 ; SCEV: %t = bitcast ptr getelementptr (i64, ptr null, i32 1) to ptr
412 ; SCEV: %t = bitcast ptr getelementptr ({ i64, i64 }, ptr null, i32 0, i32 1) to ptr
415 ; SCEV: %t = bitcast ptr getelementptr ([2 x i64], ptr null, i32 0, i32 1) to ptr
419 %t = bitcast ptr getelementptr (i64, ptr null, i32 1) to ptr
423 %t = bitcast ptr getelementptr ({ i64, i64 }, ptr null, i32 0, i32 1) to ptr
427 %t = bitcast ptr getelementptr ([2 x i64], ptr null, i32 0, i32 1) to ptr
432 ; PLAIN: %t = bitcast ptr getelementptr inbounds (i32, ptr getelementptr inbounds ([3 x { i32, i32 }], ptr @ext, i64 0, i64 1, i32 0), i64 1) to ptr
438 ; TO: define ptr @fZ() local_unnamed_addr #0 {
439 ; TO: ret ptr getelementptr inbounds nuw (i8, ptr @ext, i64 12)
440 ; TO: }
442 ; SCEV: %t = bitcast ptr getelementptr inbounds (i32, ptr getelementptr inbounds ([3 x { i32, i32 }], ptr @ext, i64 0, i64 1, i32 0), i64 1) to ptr
446 %t = bitcast ptr getelementptr inbounds (i32, ptr getelementptr inbounds ([3 x { i32, i32 }], ptr @ext, i64 0, i64 1, i32 0), i64 1) to ptr
457 %p = getelementptr inbounds i8, ptr addrspacecast (ptr addrspace(12) @p12 to ptr),
460 ; OPT: ret ptr getelementptr inbounds nuw (i8, ptr addrspacecast (ptr addrspace(12) @p12 to ptr), i64 2)