[x86] Fold extract_vector_elt of a load into the Load's address computation.
[oota-llvm.git] / test / CodeGen / X86 / discontiguous-loops.ll
1 ; RUN: llc -verify-loop-info -verify-dom-info -march=x86-64 < %s
2 ; PR5243
3
4 @.str96 = external constant [37 x i8], align 8    ; <[37 x i8]*> [#uses=1]
5
6 define void @foo() nounwind {
7 bb:
8   br label %ybb1
9
10 ybb1:                                              ; preds = %yybb13, %xbb6, %bb
11   switch i32 undef, label %bb18 [
12     i32 150, label %ybb2
13     i32 151, label %bb17
14     i32 152, label %bb19
15     i32 157, label %ybb8
16   ]
17
18 ybb2:                                              ; preds = %ybb1
19   %tmp = icmp eq i8** undef, null                 ; <i1> [#uses=1]
20   br i1 %tmp, label %bb3, label %xbb6
21
22 bb3:                                              ; preds = %ybb2
23   unreachable
24
25 xbb4:                                              ; preds = %xbb6
26   store i32 0, i32* undef, align 8
27   br i1 undef, label %xbb6, label %bb5
28
29 bb5:                                              ; preds = %xbb4
30   call fastcc void @decl_mode_check_failed() nounwind
31   unreachable
32
33 xbb6:                                              ; preds = %xbb4, %ybb2
34   %tmp7 = icmp slt i32 undef, 0                   ; <i1> [#uses=1]
35   br i1 %tmp7, label %xbb4, label %ybb1
36
37 ybb8:                                              ; preds = %ybb1
38   %tmp9 = icmp eq i8** undef, null                ; <i1> [#uses=1]
39   br i1 %tmp9, label %bb10, label %ybb12
40
41 bb10:                                             ; preds = %ybb8
42   %tmp11 = load i8** undef, align 8               ; <i8*> [#uses=1]
43   call void (i8*, ...)* @fatal(i8* getelementptr inbounds ([37 x i8]* @.str96, i64 0, i64 0), i8* %tmp11) nounwind
44   unreachable
45
46 ybb12:                                             ; preds = %ybb8
47   br i1 undef, label %bb15, label %ybb13
48
49 ybb13:                                             ; preds = %ybb12
50   %tmp14 = icmp sgt i32 undef, 0                  ; <i1> [#uses=1]
51   br i1 %tmp14, label %bb16, label %ybb1
52
53 bb15:                                             ; preds = %ybb12
54   call void (i8*, ...)* @fatal(i8* getelementptr inbounds ([37 x i8]* @.str96, i64 0, i64 0), i8* undef) nounwind
55   unreachable
56
57 bb16:                                             ; preds = %ybb13
58   unreachable
59
60 bb17:                                             ; preds = %ybb1
61   unreachable
62
63 bb18:                                             ; preds = %ybb1
64   unreachable
65
66 bb19:                                             ; preds = %ybb1
67   unreachable
68 }
69
70 declare void @fatal(i8*, ...)
71
72 declare fastcc void @decl_mode_check_failed() nounwind