[InstCombine] Signed saturation patterns
[llvm-core.git] / test / CodeGen / ARM / rem_crash.ll
blobbce597c030d2ee75ada4a67dc8e92f1850b4937f
1 ; RUN: llc < %s -mtriple=arm-unknown-unknown
3 define i8 @test_minsize_uu8(i8 %x) minsize optsize {
4 entry:
5   %0 = udiv i8 %x, 10
6   %1 = urem i8 %x, 10
7   %res = add i8 %0, %1
8   ret i8 %res
11 define i8 @test_minsize_ss8(i8 %x) minsize optsize {
12 entry:
13   %0 = sdiv i8 %x, 10
14   %1 = srem i8 %x, 10
15   %res = add i8 %0, %1
16   ret i8 %res
19 define i8 @test_minsize_us8(i8 %x) minsize optsize {
20 entry:
21   %0 = udiv i8 %x, 10
22   %1 = srem i8 %x, 10
23   %res = add i8 %0, %1
24   ret i8 %res
27 define i8 @test_minsize_su8(i8 %x) minsize optsize {
28 entry:
29   %0 = sdiv i8 %x, 10
30   %1 = urem i8 %x, 10
31   %res = add i8 %0, %1
32   ret i8 %res
35 define i16 @test_minsize_uu16(i16 %x) minsize optsize {
36 entry:
37   %0 = udiv i16 %x, 10
38   %1 = urem i16 %x, 10
39   %res = add i16 %0, %1
40   ret i16 %res
43 define i16 @test_minsize_ss16(i16 %x) minsize optsize {
44 entry:
45   %0 = sdiv i16 %x, 10
46   %1 = srem i16 %x, 10
47   %res = add i16 %0, %1
48   ret i16 %res
51 define i16 @test_minsize_us16(i16 %x) minsize optsize {
52 entry:
53   %0 = udiv i16 %x, 10
54   %1 = srem i16 %x, 10
55   %res = add i16 %0, %1
56   ret i16 %res
59 define i16 @test_minsize_su16(i16 %x) minsize optsize {
60 entry:
61   %0 = sdiv i16 %x, 10
62   %1 = urem i16 %x, 10
63   %res = add i16 %0, %1
64   ret i16 %res
67 define i32 @test_minsize_uu32(i32 %x) minsize optsize {
68 entry:
69   %0 = udiv i32 %x, 10
70   %1 = urem i32 %x, 10
71   %res = add i32 %0, %1
72   ret i32 %res
75 define i32 @test_minsize_ss32(i32 %x) minsize optsize {
76 entry:
77   %0 = sdiv i32 %x, 10
78   %1 = srem i32 %x, 10
79   %res = add i32 %0, %1
80   ret i32 %res
83 define i32 @test_minsize_us32(i32 %x) minsize optsize {
84 entry:
85   %0 = udiv i32 %x, 10
86   %1 = srem i32 %x, 10
87   %res = add i32 %0, %1
88   ret i32 %res
91 define i32 @test_minsize_su32(i32 %x) minsize optsize {
92 entry:
93   %0 = sdiv i32 %x, 10
94   %1 = urem i32 %x, 10
95   %res = add i32 %0, %1
96   ret i32 %res
99 define i64 @test_minsize_uu64(i64 %x) minsize optsize {
100 entry:
101   %0 = udiv i64 %x, 10
102   %1 = urem i64 %x, 10
103   %res = add i64 %0, %1
104   ret i64 %res
107 define i64 @test_minsize_ss64(i64 %x) minsize optsize {
108 entry:
109   %0 = sdiv i64 %x, 10
110   %1 = srem i64 %x, 10
111   %res = add i64 %0, %1
112   ret i64 %res
115 define i64 @test_minsize_us64(i64 %x) minsize optsize {
116 entry:
117   %0 = udiv i64 %x, 10
118   %1 = srem i64 %x, 10
119   %res = add i64 %0, %1
120   ret i64 %res
123 define i64 @test_minsize_su64(i64 %x) minsize optsize {
124 entry:
125   %0 = sdiv i64 %x, 10
126   %1 = urem i64 %x, 10
127   %res = add i64 %0, %1
128   ret i64 %res
131 define i8 @test_uu8(i8 %x) optsize {
132 entry:
133   %0 = udiv i8 %x, 10
134   %1 = urem i8 %x, 10
135   %res = add i8 %0, %1
136   ret i8 %res
139 define i8 @test_ss8(i8 %x) optsize {
140 entry:
141   %0 = sdiv i8 %x, 10
142   %1 = srem i8 %x, 10
143   %res = add i8 %0, %1
144   ret i8 %res
147 define i8 @test_us8(i8 %x) optsize {
148 entry:
149   %0 = udiv i8 %x, 10
150   %1 = srem i8 %x, 10
151   %res = add i8 %0, %1
152   ret i8 %res
155 define i8 @test_su8(i8 %x) optsize {
156 entry:
157   %0 = sdiv i8 %x, 10
158   %1 = urem i8 %x, 10
159   %res = add i8 %0, %1
160   ret i8 %res
163 define i16 @test_uu16(i16 %x) optsize {
164 entry:
165   %0 = udiv i16 %x, 10
166   %1 = urem i16 %x, 10
167   %res = add i16 %0, %1
168   ret i16 %res
171 define i16 @test_ss16(i16 %x) optsize {
172 entry:
173   %0 = sdiv i16 %x, 10
174   %1 = srem i16 %x, 10
175   %res = add i16 %0, %1
176   ret i16 %res
179 define i16 @test_us16(i16 %x) optsize {
180 entry:
181   %0 = udiv i16 %x, 10
182   %1 = srem i16 %x, 10
183   %res = add i16 %0, %1
184   ret i16 %res
187 define i16 @test_su16(i16 %x) optsize {
188 entry:
189   %0 = sdiv i16 %x, 10
190   %1 = urem i16 %x, 10
191   %res = add i16 %0, %1
192   ret i16 %res
195 define i32 @test_uu32(i32 %x) optsize {
196 entry:
197   %0 = udiv i32 %x, 10
198   %1 = urem i32 %x, 10
199   %res = add i32 %0, %1
200   ret i32 %res
203 define i32 @test_ss32(i32 %x) optsize {
204 entry:
205   %0 = sdiv i32 %x, 10
206   %1 = srem i32 %x, 10
207   %res = add i32 %0, %1
208   ret i32 %res
211 define i32 @test_us32(i32 %x) optsize {
212 entry:
213   %0 = udiv i32 %x, 10
214   %1 = srem i32 %x, 10
215   %res = add i32 %0, %1
216   ret i32 %res
219 define i32 @test_su32(i32 %x) optsize {
220 entry:
221   %0 = sdiv i32 %x, 10
222   %1 = urem i32 %x, 10
223   %res = add i32 %0, %1
224   ret i32 %res
227 define i64 @test_uu64(i64 %x) optsize {
228 entry:
229   %0 = udiv i64 %x, 10
230   %1 = urem i64 %x, 10
231   %res = add i64 %0, %1
232   ret i64 %res
235 define i64 @test_ss64(i64 %x) optsize {
236 entry:
237   %0 = sdiv i64 %x, 10
238   %1 = srem i64 %x, 10
239   %res = add i64 %0, %1
240   ret i64 %res
243 define i64 @test_us64(i64 %x) optsize {
244 entry:
245   %0 = udiv i64 %x, 10
246   %1 = srem i64 %x, 10
247   %res = add i64 %0, %1
248   ret i64 %res
251 define i64 @test_su64(i64 %x) optsize {
252 entry:
253   %0 = sdiv i64 %x, 10
254   %1 = urem i64 %x, 10
255   %res = add i64 %0, %1
256   ret i64 %res