Shrink Thumb2 movcc instructions.
[llvm/avr.git] / test / CodeGen / Generic / 2007-04-14-BitTestsBadMask.ll
blob5490687e1ba81be11062db0fc7410b9de374a351
1 ; RUN: llvm-as < %s | llc -march=x86 | grep 8388635
2 ; RUN: llvm-as < %s | llc -march=x86-64 | grep 4294981120
3 ; PR 1325
5 ; ModuleID = 'bugpoint.test.bc'
6 target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
7 target triple = "powerpc-apple-darwin8.8.0"
8 ;target triple = "i686-linux-gnu"
9         %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
10         %struct.__sFILEX = type opaque
11         %struct.__sbuf = type { i8*, i32 }
12 @PL_rsfp = external global %struct.FILE*                ; <%struct.FILE**> [#uses=1]
13 @PL_bufend = external global i8*                ; <i8**> [#uses=1]
14 @PL_in_eval = external global i32               ; <i32*> [#uses=1]
16 declare fastcc void @incline(i8*)
18 define i16 @Perl_skipspace_bb60(i8* %s, i8** %s_addr.4.out) {
19 newFuncRoot:
20         %tmp138.loc = alloca i8*                ; <i8**> [#uses=2]
21         %s_addr.4.loc = alloca i8*              ; <i8**> [#uses=2]
22         %tmp274.loc = alloca i8*                ; <i8**> [#uses=2]
23         br label %bb60
25 cond_next154.UnifiedReturnBlock_crit_edge.exitStub:             ; preds = %codeRepl
26         store i8* %s_addr.4.reload, i8** %s_addr.4.out
27         ret i16 0
29 cond_next161.UnifiedReturnBlock_crit_edge.exitStub:             ; preds = %codeRepl
30         store i8* %s_addr.4.reload, i8** %s_addr.4.out
31         ret i16 1
33 cond_next167.UnifiedReturnBlock_crit_edge.exitStub:             ; preds = %codeRepl
34         store i8* %s_addr.4.reload, i8** %s_addr.4.out
35         ret i16 2
37 cond_false29.i.cond_true190_crit_edge.exitStub:         ; preds = %codeRepl
38         store i8* %s_addr.4.reload, i8** %s_addr.4.out
39         ret i16 3
41 cond_next.i.cond_true190_crit_edge.exitStub:            ; preds = %codeRepl
42         store i8* %s_addr.4.reload, i8** %s_addr.4.out
43         ret i16 4
45 cond_true19.i.cond_true190_crit_edge.exitStub:          ; preds = %codeRepl
46         store i8* %s_addr.4.reload, i8** %s_addr.4.out
47         ret i16 5
49 bb60:           ; preds = %bb60.backedge, %newFuncRoot
50         %s_addr.2 = phi i8* [ %s, %newFuncRoot ], [ %s_addr.2.be, %bb60.backedge ]              ; <i8*> [#uses=3]
51         %tmp61 = load i8** @PL_bufend           ; <i8*> [#uses=1]
52         %tmp63 = icmp ult i8* %s_addr.2, %tmp61         ; <i1> [#uses=1]
53         br i1 %tmp63, label %bb60.cond_next67_crit_edge, label %bb60.bb101_crit_edge
55 bb37:           ; preds = %cond_next67.bb37_crit_edge5, %cond_next67.bb37_crit_edge4, %cond_next67.bb37_crit_edge3, %cond_next67.bb37_crit_edge2, %cond_next67.bb37_crit_edge
56         %tmp40 = icmp eq i8 %tmp69, 10          ; <i1> [#uses=1]
57         %tmp43 = getelementptr i8* %s_addr.27.2, i32 1          ; <i8*> [#uses=5]
58         br i1 %tmp40, label %cond_true45, label %bb37.bb60_crit_edge
60 cond_true45:            ; preds = %bb37
61         %tmp46 = volatile load i32* @PL_in_eval         ; <i32> [#uses=1]
62         %tmp47 = icmp eq i32 %tmp46, 0          ; <i1> [#uses=1]
63         br i1 %tmp47, label %cond_true45.bb60_crit_edge, label %cond_true50
65 cond_true50:            ; preds = %cond_true45
66         %tmp51 = volatile load %struct.FILE** @PL_rsfp          ; <%struct.FILE*> [#uses=1]
67         %tmp52 = icmp eq %struct.FILE* %tmp51, null             ; <i1> [#uses=1]
68         br i1 %tmp52, label %cond_true55, label %cond_true50.bb60_crit_edge
70 cond_true55:            ; preds = %cond_true50
71         tail call fastcc void @incline( i8* %tmp43 )
72         br label %bb60.backedge
74 cond_next67:            ; preds = %Perl_newSV.exit.cond_next67_crit_edge, %cond_true148.cond_next67_crit_edge, %bb60.cond_next67_crit_edge
75         %s_addr.27.2 = phi i8* [ %s_addr.2, %bb60.cond_next67_crit_edge ], [ %tmp274.reload, %Perl_newSV.exit.cond_next67_crit_edge ], [ %tmp138.reload, %cond_true148.cond_next67_crit_edge ]          ; <i8*> [#uses=3]
76         %tmp69 = load i8* %s_addr.27.2          ; <i8> [#uses=2]
77         switch i8 %tmp69, label %cond_next67.bb101_crit_edge [
78                  i8 32, label %cond_next67.bb37_crit_edge
79                  i8 9, label %cond_next67.bb37_crit_edge2
80                  i8 10, label %cond_next67.bb37_crit_edge3
81                  i8 13, label %cond_next67.bb37_crit_edge4
82                  i8 12, label %cond_next67.bb37_crit_edge5
83         ]
85 codeRepl:               ; preds = %bb101.preheader
86         %targetBlock = call i16 @Perl_skipspace_bb60_bb101( i8* %s_addr.27.3.ph, i8** %tmp274.loc, i8** %s_addr.4.loc, i8** %tmp138.loc )               ; <i16> [#uses=1]
87         %tmp274.reload = load i8** %tmp274.loc          ; <i8*> [#uses=4]
88         %s_addr.4.reload = load i8** %s_addr.4.loc              ; <i8*> [#uses=6]
89         %tmp138.reload = load i8** %tmp138.loc          ; <i8*> [#uses=1]
90         switch i16 %targetBlock, label %cond_true19.i.cond_true190_crit_edge.exitStub [
91                  i16 0, label %cond_next271.bb60_crit_edge
92                  i16 1, label %cond_true290.bb60_crit_edge
93                  i16 2, label %cond_true295.bb60_crit_edge
94                  i16 3, label %Perl_newSV.exit.cond_next67_crit_edge
95                  i16 4, label %cond_true148.cond_next67_crit_edge
96                  i16 5, label %cond_next154.UnifiedReturnBlock_crit_edge.exitStub
97                  i16 6, label %cond_next161.UnifiedReturnBlock_crit_edge.exitStub
98                  i16 7, label %cond_next167.UnifiedReturnBlock_crit_edge.exitStub
99                  i16 8, label %cond_false29.i.cond_true190_crit_edge.exitStub
100                  i16 9, label %cond_next.i.cond_true190_crit_edge.exitStub
101         ]
103 bb37.bb60_crit_edge:            ; preds = %bb37
104         br label %bb60.backedge
106 cond_true45.bb60_crit_edge:             ; preds = %cond_true45
107         br label %bb60.backedge
109 cond_true50.bb60_crit_edge:             ; preds = %cond_true50
110         br label %bb60.backedge
112 bb60.cond_next67_crit_edge:             ; preds = %bb60
113         br label %cond_next67
115 bb60.bb101_crit_edge:           ; preds = %bb60
116         br label %bb101.preheader
118 cond_next67.bb101_crit_edge:            ; preds = %cond_next67
119         br label %bb101.preheader
121 cond_next67.bb37_crit_edge:             ; preds = %cond_next67
122         br label %bb37
124 cond_next67.bb37_crit_edge2:            ; preds = %cond_next67
125         br label %bb37
127 cond_next67.bb37_crit_edge3:            ; preds = %cond_next67
128         br label %bb37
130 cond_next67.bb37_crit_edge4:            ; preds = %cond_next67
131         br label %bb37
133 cond_next67.bb37_crit_edge5:            ; preds = %cond_next67
134         br label %bb37
136 cond_true148.cond_next67_crit_edge:             ; preds = %codeRepl
137         br label %cond_next67
139 cond_next271.bb60_crit_edge:            ; preds = %codeRepl
140         br label %bb60.backedge
142 cond_true290.bb60_crit_edge:            ; preds = %codeRepl
143         br label %bb60.backedge
145 cond_true295.bb60_crit_edge:            ; preds = %codeRepl
146         br label %bb60.backedge
148 Perl_newSV.exit.cond_next67_crit_edge:          ; preds = %codeRepl
149         br label %cond_next67
151 bb101.preheader:                ; preds = %cond_next67.bb101_crit_edge, %bb60.bb101_crit_edge
152         %s_addr.27.3.ph = phi i8* [ %s_addr.27.2, %cond_next67.bb101_crit_edge ], [ %s_addr.2, %bb60.bb101_crit_edge ]          ; <i8*> [#uses=1]
153         br label %codeRepl
155 bb60.backedge:          ; preds = %cond_true295.bb60_crit_edge, %cond_true290.bb60_crit_edge, %cond_next271.bb60_crit_edge, %cond_true50.bb60_crit_edge, %cond_true45.bb60_crit_edge, %bb37.bb60_crit_edge, %cond_true55
156         %s_addr.2.be = phi i8* [ %tmp43, %cond_true55 ], [ %tmp43, %bb37.bb60_crit_edge ], [ %tmp43, %cond_true45.bb60_crit_edge ], [ %tmp43, %cond_true50.bb60_crit_edge ], [ %tmp274.reload, %cond_next271.bb60_crit_edge ], [ %tmp274.reload, %cond_true290.bb60_crit_edge ], [ %tmp274.reload, %cond_true295.bb60_crit_edge ]               ; <i8*> [#uses=1]
157         br label %bb60
160 declare i16 @Perl_skipspace_bb60_bb101(i8*, i8**, i8**, i8**)