[X86] Don't pass a scale value of 0 to scatter/gather intrinsics. This causes the...
[oota-llvm.git] / test / CodeGen / X86 / 2008-04-17-CoalescerBug.ll
1 ; RUN: llc < %s -mtriple=i386-apple-darwin | grep xorl | grep "%e"
2 ; Make sure xorl operands are 32-bit registers.
3
4         %struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8* }
5         %struct.wxDateTime = type { %struct.wxLongLong }
6         %"struct.wxDateTime::TimeZone" = type { i32 }
7         %struct.wxLongLong = type { i64 }
8         %struct.wxString = type { %struct.wxStringBase }
9         %struct.wxStringBase = type { i32* }
10 @.str = external constant [27 x i32]            ; <[27 x i32]*> [#uses=1]
11 @.str4 = external constant [14 x i32]           ; <[14 x i32]*> [#uses=1]
12 @_ZZNK10wxDateTime5GetTmERKNS_8TimeZoneEE12__FUNCTION__ = external constant [6 x i8]            ; <[6 x i8]*> [#uses=1]
13 @.str33 = external constant [29 x i32]          ; <[29 x i32]*> [#uses=1]
14 @.str89 = external constant [5 x i32]           ; <[5 x i32]*> [#uses=1]
15
16 define void @_ZNK10wxDateTime6FormatEPKwRKNS_8TimeZoneE(%struct.wxString* noalias sret  %agg.result, %struct.wxDateTime* %this, i32* %format, %"struct.wxDateTime::TimeZone"* %tz, i1 %foo) personality i32 (...)* @__gxx_personality_v0 {
17 entry:
18         br i1 %foo, label %bb116.i, label %bb115.critedge.i
19 bb115.critedge.i:               ; preds = %entry
20         ret void
21 bb116.i:                ; preds = %entry
22         br i1 %foo, label %bb52.i.i, label %bb3118
23 bb3118:         ; preds = %bb116.i
24         ret void
25 bb52.i.i:               ; preds = %bb116.i
26         br i1 %foo, label %bb142.i, label %bb115.critedge.i.i
27 bb115.critedge.i.i:             ; preds = %bb52.i.i
28         ret void
29 bb142.i:                ; preds = %bb52.i.i
30         br i1 %foo, label %bb161.i, label %bb182.i
31 bb161.i:                ; preds = %bb142.i
32         br label %bb3261
33 bb182.i:                ; preds = %bb142.i
34         ret void
35 bb3261:         ; preds = %bb7834, %bb161.i
36         %tmp3263 = load i32, i32* null, align 4         ; <i32> [#uses=1]
37         %tmp3264 = icmp eq i32 %tmp3263, 37             ; <i1> [#uses=1]
38         br i1 %tmp3264, label %bb3306, label %bb3267
39 bb3267:         ; preds = %bb3261
40         ret void
41 bb3306:         ; preds = %bb3261
42         %tmp3310 = invoke %struct.wxStringBase* @_ZN12wxStringBaseaSEPKw( %struct.wxStringBase* null, i32* getelementptr ([5 x i32], [5 x i32]* @.str89, i32 0, i32 0) )
43                         to label %bb3314 unwind label %lpad             ; <%struct.wxStringBase*> [#uses=0]
44 bb3314:         ; preds = %bb3306
45         %tmp3316 = load i32, i32* null, align 4         ; <i32> [#uses=1]
46         switch i32 %tmp3316, label %bb7595 [
47                  i32 0, label %bb7819
48                  i32 37, label %bb7806
49                  i32 66, label %bb3477
50                  i32 72, label %bb5334
51                  i32 73, label %bb5484
52                  i32 77, label %bb6118
53                  i32 83, label %bb6406
54                  i32 85, label %bb6556
55                  i32 87, label %bb6708
56                  i32 89, label %bb7308
57                  i32 98, label %bb3477
58                  i32 99, label %bb3626
59                  i32 100, label %bb5184
60                  i32 106, label %bb5657
61                  i32 108, label %bb5809
62                  i32 109, label %bb5968
63                  i32 119, label %bb6860
64                  i32 120, label %bb3626
65                  i32 121, label %bb7158
66         ]
67 bb3477:         ; preds = %bb3314, %bb3314
68         ret void
69 bb3626:         ; preds = %bb3314, %bb3314
70         ret void
71 bb5184:         ; preds = %bb3314
72         ret void
73 bb5334:         ; preds = %bb3314
74         ret void
75 bb5484:         ; preds = %bb3314
76         ret void
77 bb5657:         ; preds = %bb3314
78         %tmp5661 = invoke zeroext i16 @_ZNK10wxDateTime12GetDayOfYearERKNS_8TimeZoneE( %struct.wxDateTime* %this, %"struct.wxDateTime::TimeZone"* %tz )  
79                         to label %invcont5660 unwind label %lpad                ; <i16> [#uses=0]
80 invcont5660:            ; preds = %bb5657
81         ret void
82 bb5809:         ; preds = %bb3314
83         %tmp61.i.i8486 = icmp sgt i64 0, -1             ; <i1> [#uses=1]
84         %tmp95.i.i8490 = icmp slt i64 0, 2147483647000          ; <i1> [#uses=1]
85         %bothcond9308 = and i1 %tmp61.i.i8486, %tmp95.i.i8490           ; <i1> [#uses=1]
86         br i1 %bothcond9308, label %bb91.i8504, label %bb115.critedge.i.i8492
87 bb115.critedge.i.i8492:         ; preds = %bb5809
88         ret void
89 bb91.i8504:             ; preds = %bb5809
90         br i1 %foo, label %bb155.i8541, label %bb182.i8560
91 bb155.i8541:            ; preds = %bb91.i8504
92         %tmp156.i85398700 = invoke %struct.tm* @gmtime_r( i32* null, %struct.tm* null )
93                         to label %bb182.i8560 unwind label %lpad                ; <%struct.tm*> [#uses=1]
94 bb182.i8560:            ; preds = %bb155.i8541, %bb91.i8504
95         %tm48.0.i8558 = phi %struct.tm* [ null, %bb91.i8504 ], [ %tmp156.i85398700, %bb155.i8541 ]              ; <%struct.tm*> [#uses=0]
96         br i1 %foo, label %bb278.i8617, label %bb187.i8591
97 bb187.i8591:            ; preds = %bb182.i8560
98         %tmp245.i8588 = srem i64 0, 86400000            ; <i64> [#uses=1]
99         br i1 %foo, label %bb264.i8592, label %bb265.i8606
100 bb264.i8592:            ; preds = %bb187.i8591
101         ret void
102 bb265.i8606:            ; preds = %bb187.i8591
103         %tmp268269.i8593 = trunc i64 %tmp245.i8588 to i32               ; <i32> [#uses=1]
104         %tmp273.i8594 = srem i32 %tmp268269.i8593, 1000         ; <i32> [#uses=1]
105         %tmp273274.i8595 = trunc i32 %tmp273.i8594 to i16               ; <i16> [#uses=1]
106         br label %invcont5814
107 bb278.i8617:            ; preds = %bb182.i8560
108         %timeOnly50.0.i8622 = add i32 0, 0              ; <i32> [#uses=1]
109         br i1 %foo, label %bb440.i8663, label %bb448.i8694
110 bb440.i8663:            ; preds = %bb278.i8617
111         invoke void @_Z10wxOnAssertPKwiPKcS0_S0_( i32* getelementptr ([27 x i32], [27 x i32]* @.str, i32 0, i32 0), i32 1717, i8* getelementptr ([6 x i8], [6 x i8]* @_ZZNK10wxDateTime5GetTmERKNS_8TimeZoneEE12__FUNCTION__, i32 0, i32 0), i32* getelementptr ([29 x i32], [29 x i32]* @.str33, i32 0, i32 0), i32* getelementptr ([14 x i32], [14 x i32]* @.str4, i32 0, i32 0) )
112                         to label %bb448.i8694 unwind label %lpad
113 bb448.i8694:            ; preds = %bb440.i8663, %bb278.i8617
114         %tmp477.i8669 = srem i32 %timeOnly50.0.i8622, 1000              ; <i32> [#uses=1]
115         %tmp477478.i8670 = trunc i32 %tmp477.i8669 to i16               ; <i16> [#uses=1]
116         br label %invcont5814
117 invcont5814:            ; preds = %bb448.i8694, %bb265.i8606
118         %tmp812.0.0 = phi i16 [ %tmp477478.i8670, %bb448.i8694 ], [ %tmp273274.i8595, %bb265.i8606 ]            ; <i16> [#uses=1]
119         %tmp58165817 = zext i16 %tmp812.0.0 to i32              ; <i32> [#uses=1]
120         invoke void (%struct.wxString*, i32*, ...) @_ZN8wxString6FormatEPKwz( %struct.wxString* noalias sret  null, i32* null, i32 %tmp58165817 )
121                         to label %invcont5831 unwind label %lpad
122 invcont5831:            ; preds = %invcont5814
123         %tmp5862 = invoke zeroext  i8 @_ZN12wxStringBase10ConcatSelfEmPKwm( %struct.wxStringBase* null, i32 0, i32* null, i32 0 ) 
124                         to label %bb7834 unwind label %lpad8185         ; <i8> [#uses=0]
125 bb5968:         ; preds = %bb3314
126         invoke void (%struct.wxString*, i32*, ...) @_ZN8wxString6FormatEPKwz( %struct.wxString* noalias sret  null, i32* null, i32 0 )
127                         to label %invcont5981 unwind label %lpad
128 invcont5981:            ; preds = %bb5968
129         ret void
130 bb6118:         ; preds = %bb3314
131         ret void
132 bb6406:         ; preds = %bb3314
133         ret void
134 bb6556:         ; preds = %bb3314
135         ret void
136 bb6708:         ; preds = %bb3314
137         ret void
138 bb6860:         ; preds = %bb3314
139         ret void
140 bb7158:         ; preds = %bb3314
141         ret void
142 bb7308:         ; preds = %bb3314
143         ret void
144 bb7595:         ; preds = %bb3314
145         ret void
146 bb7806:         ; preds = %bb3314
147         %tmp7814 = invoke %struct.wxStringBase* @_ZN12wxStringBase6appendEmw( %struct.wxStringBase* null, i32 1, i32 0 )
148                         to label %bb7834 unwind label %lpad             ; <%struct.wxStringBase*> [#uses=0]
149 bb7819:         ; preds = %bb3314
150         ret void
151 bb7834:         ; preds = %bb7806, %invcont5831
152         br label %bb3261
153 lpad:           ; preds = %bb7806, %bb5968, %invcont5814, %bb440.i8663, %bb155.i8541, %bb5657, %bb3306
154         %exn = landingpad {i8*, i32}
155                  cleanup
156         ret void
157 lpad8185:               ; preds = %invcont5831
158         %exn8185 = landingpad {i8*, i32}
159                  cleanup
160         ret void
161 }
162
163 declare void @_Z10wxOnAssertPKwiPKcS0_S0_(i32*, i32, i8*, i32*, i32*)
164
165 declare zeroext  i8 @_ZN12wxStringBase10ConcatSelfEmPKwm(%struct.wxStringBase*, i32, i32*, i32) 
166
167 declare %struct.tm* @gmtime_r(i32*, %struct.tm*)
168
169 declare zeroext  i16 @_ZNK10wxDateTime12GetDayOfYearERKNS_8TimeZoneE(%struct.wxDateTime*, %"struct.wxDateTime::TimeZone"*) 
170
171 declare %struct.wxStringBase* @_ZN12wxStringBase6appendEmw(%struct.wxStringBase*, i32, i32)
172
173 declare %struct.wxStringBase* @_ZN12wxStringBaseaSEPKw(%struct.wxStringBase*, i32*)
174
175 declare void @_ZN8wxString6FormatEPKwz(%struct.wxString* noalias sret , i32*, ...)
176
177 declare i32 @__gxx_personality_v0(...)