[Alignment][NFC] Use Align with TargetLowering::setMinFunctionAlignment
[llvm-core.git] / test / CodeGen / X86 / mem-promote-integers.ll
blob688173e2acc6749e6a8430c713bc262834871777
1 ; Test the basic functionality of integer element promotions of different types.
2 ; This tests checks passing of arguments, loading and storing to memory and
3 ; basic arithmetic.
4 ; RUN: llc -mtriple=i686-- < %s > /dev/null
5 ; RUN: llc -mtriple=x86_64-- < %s > /dev/null
7 define <1 x i8> @test_1xi8(<1 x i8> %x, <1 x i8>* %b) {
8   %bb = load <1 x i8>, <1 x i8>* %b
9   %tt = xor <1 x i8> %x, %bb
10   store <1 x i8> %tt, <1 x i8>* %b
11   br label %next
13 next:
14   ret <1 x i8> %tt
18 define <1 x i16> @test_1xi16(<1 x i16> %x, <1 x i16>* %b) {
19   %bb = load <1 x i16>, <1 x i16>* %b
20   %tt = xor <1 x i16> %x, %bb
21   store <1 x i16> %tt, <1 x i16>* %b
22   br label %next
24 next:
25   ret <1 x i16> %tt
29 define <1 x i32> @test_1xi32(<1 x i32> %x, <1 x i32>* %b) {
30   %bb = load <1 x i32>, <1 x i32>* %b
31   %tt = xor <1 x i32> %x, %bb
32   store <1 x i32> %tt, <1 x i32>* %b
33   br label %next
35 next:
36   ret <1 x i32> %tt
40 define <1 x i64> @test_1xi64(<1 x i64> %x, <1 x i64>* %b) {
41   %bb = load <1 x i64>, <1 x i64>* %b
42   %tt = xor <1 x i64> %x, %bb
43   store <1 x i64> %tt, <1 x i64>* %b
44   br label %next
46 next:
47   ret <1 x i64> %tt
51 define <1 x i128> @test_1xi128(<1 x i128> %x, <1 x i128>* %b) {
52   %bb = load <1 x i128>, <1 x i128>* %b
53   %tt = xor <1 x i128> %x, %bb
54   store <1 x i128> %tt, <1 x i128>* %b
55   br label %next
57 next:
58   ret <1 x i128> %tt
62 define <1 x i256> @test_1xi256(<1 x i256> %x, <1 x i256>* %b) {
63   %bb = load <1 x i256>, <1 x i256>* %b
64   %tt = xor <1 x i256> %x, %bb
65   store <1 x i256> %tt, <1 x i256>* %b
66   br label %next
68 next:
69   ret <1 x i256> %tt
73 define <1 x i512> @test_1xi512(<1 x i512> %x, <1 x i512>* %b) {
74   %bb = load <1 x i512>, <1 x i512>* %b
75   %tt = xor <1 x i512> %x, %bb
76   store <1 x i512> %tt, <1 x i512>* %b
77   br label %next
79 next:
80   ret <1 x i512> %tt
84 define <2 x i8> @test_2xi8(<2 x i8> %x, <2 x i8>* %b) {
85   %bb = load <2 x i8>, <2 x i8>* %b
86   %tt = xor <2 x i8> %x, %bb
87   store <2 x i8> %tt, <2 x i8>* %b
88   br label %next
90 next:
91   ret <2 x i8> %tt
95 define <2 x i16> @test_2xi16(<2 x i16> %x, <2 x i16>* %b) {
96   %bb = load <2 x i16>, <2 x i16>* %b
97   %tt = xor <2 x i16> %x, %bb
98   store <2 x i16> %tt, <2 x i16>* %b
99   br label %next
101 next:
102   ret <2 x i16> %tt
106 define <2 x i32> @test_2xi32(<2 x i32> %x, <2 x i32>* %b) {
107   %bb = load <2 x i32>, <2 x i32>* %b
108   %tt = xor <2 x i32> %x, %bb
109   store <2 x i32> %tt, <2 x i32>* %b
110   br label %next
112 next:
113   ret <2 x i32> %tt
117 define <2 x i64> @test_2xi64(<2 x i64> %x, <2 x i64>* %b) {
118   %bb = load <2 x i64>, <2 x i64>* %b
119   %tt = xor <2 x i64> %x, %bb
120   store <2 x i64> %tt, <2 x i64>* %b
121   br label %next
123 next:
124   ret <2 x i64> %tt
128 define <2 x i128> @test_2xi128(<2 x i128> %x, <2 x i128>* %b) {
129   %bb = load <2 x i128>, <2 x i128>* %b
130   %tt = xor <2 x i128> %x, %bb
131   store <2 x i128> %tt, <2 x i128>* %b
132   br label %next
134 next:
135   ret <2 x i128> %tt
139 define <2 x i256> @test_2xi256(<2 x i256> %x, <2 x i256>* %b) {
140   %bb = load <2 x i256>, <2 x i256>* %b
141   %tt = xor <2 x i256> %x, %bb
142   store <2 x i256> %tt, <2 x i256>* %b
143   br label %next
145 next:
146   ret <2 x i256> %tt
150 define <2 x i512> @test_2xi512(<2 x i512> %x, <2 x i512>* %b) {
151   %bb = load <2 x i512>, <2 x i512>* %b
152   %tt = xor <2 x i512> %x, %bb
153   store <2 x i512> %tt, <2 x i512>* %b
154   br label %next
156 next:
157   ret <2 x i512> %tt
161 define <3 x i8> @test_3xi8(<3 x i8> %x, <3 x i8>* %b) {
162   %bb = load <3 x i8>, <3 x i8>* %b
163   %tt = xor <3 x i8> %x, %bb
164   store <3 x i8> %tt, <3 x i8>* %b
165   br label %next
167 next:
168   ret <3 x i8> %tt
172 define <3 x i16> @test_3xi16(<3 x i16> %x, <3 x i16>* %b) {
173   %bb = load <3 x i16>, <3 x i16>* %b
174   %tt = xor <3 x i16> %x, %bb
175   store <3 x i16> %tt, <3 x i16>* %b
176   br label %next
178 next:
179   ret <3 x i16> %tt
183 define <3 x i32> @test_3xi32(<3 x i32> %x, <3 x i32>* %b) {
184   %bb = load <3 x i32>, <3 x i32>* %b
185   %tt = xor <3 x i32> %x, %bb
186   store <3 x i32> %tt, <3 x i32>* %b
187   br label %next
189 next:
190   ret <3 x i32> %tt
194 define <3 x i64> @test_3xi64(<3 x i64> %x, <3 x i64>* %b) {
195   %bb = load <3 x i64>, <3 x i64>* %b
196   %tt = xor <3 x i64> %x, %bb
197   store <3 x i64> %tt, <3 x i64>* %b
198   br label %next
200 next:
201   ret <3 x i64> %tt
205 define <3 x i128> @test_3xi128(<3 x i128> %x, <3 x i128>* %b) {
206   %bb = load <3 x i128>, <3 x i128>* %b
207   %tt = xor <3 x i128> %x, %bb
208   store <3 x i128> %tt, <3 x i128>* %b
209   br label %next
211 next:
212   ret <3 x i128> %tt
216 define <3 x i256> @test_3xi256(<3 x i256> %x, <3 x i256>* %b) {
217   %bb = load <3 x i256>, <3 x i256>* %b
218   %tt = xor <3 x i256> %x, %bb
219   store <3 x i256> %tt, <3 x i256>* %b
220   br label %next
222 next:
223   ret <3 x i256> %tt
227 define <3 x i512> @test_3xi512(<3 x i512> %x, <3 x i512>* %b) {
228   %bb = load <3 x i512>, <3 x i512>* %b
229   %tt = xor <3 x i512> %x, %bb
230   store <3 x i512> %tt, <3 x i512>* %b
231   br label %next
233 next:
234   ret <3 x i512> %tt
238 define <4 x i8> @test_4xi8(<4 x i8> %x, <4 x i8>* %b) {
239   %bb = load <4 x i8>, <4 x i8>* %b
240   %tt = xor <4 x i8> %x, %bb
241   store <4 x i8> %tt, <4 x i8>* %b
242   br label %next
244 next:
245   ret <4 x i8> %tt
249 define <4 x i16> @test_4xi16(<4 x i16> %x, <4 x i16>* %b) {
250   %bb = load <4 x i16>, <4 x i16>* %b
251   %tt = xor <4 x i16> %x, %bb
252   store <4 x i16> %tt, <4 x i16>* %b
253   br label %next
255 next:
256   ret <4 x i16> %tt
260 define <4 x i32> @test_4xi32(<4 x i32> %x, <4 x i32>* %b) {
261   %bb = load <4 x i32>, <4 x i32>* %b
262   %tt = xor <4 x i32> %x, %bb
263   store <4 x i32> %tt, <4 x i32>* %b
264   br label %next
266 next:
267   ret <4 x i32> %tt
271 define <4 x i64> @test_4xi64(<4 x i64> %x, <4 x i64>* %b) {
272   %bb = load <4 x i64>, <4 x i64>* %b
273   %tt = xor <4 x i64> %x, %bb
274   store <4 x i64> %tt, <4 x i64>* %b
275   br label %next
277 next:
278   ret <4 x i64> %tt
282 define <4 x i128> @test_4xi128(<4 x i128> %x, <4 x i128>* %b) {
283   %bb = load <4 x i128>, <4 x i128>* %b
284   %tt = xor <4 x i128> %x, %bb
285   store <4 x i128> %tt, <4 x i128>* %b
286   br label %next
288 next:
289   ret <4 x i128> %tt
293 define <4 x i256> @test_4xi256(<4 x i256> %x, <4 x i256>* %b) {
294   %bb = load <4 x i256>, <4 x i256>* %b
295   %tt = xor <4 x i256> %x, %bb
296   store <4 x i256> %tt, <4 x i256>* %b
297   br label %next
299 next:
300   ret <4 x i256> %tt
304 define <4 x i512> @test_4xi512(<4 x i512> %x, <4 x i512>* %b) {
305   %bb = load <4 x i512>, <4 x i512>* %b
306   %tt = xor <4 x i512> %x, %bb
307   store <4 x i512> %tt, <4 x i512>* %b
308   br label %next
310 next:
311   ret <4 x i512> %tt
315 define <5 x i8> @test_5xi8(<5 x i8> %x, <5 x i8>* %b) {
316   %bb = load <5 x i8>, <5 x i8>* %b
317   %tt = xor <5 x i8> %x, %bb
318   store <5 x i8> %tt, <5 x i8>* %b
319   br label %next
321 next:
322   ret <5 x i8> %tt
326 define <5 x i16> @test_5xi16(<5 x i16> %x, <5 x i16>* %b) {
327   %bb = load <5 x i16>, <5 x i16>* %b
328   %tt = xor <5 x i16> %x, %bb
329   store <5 x i16> %tt, <5 x i16>* %b
330   br label %next
332 next:
333   ret <5 x i16> %tt
337 define <5 x i32> @test_5xi32(<5 x i32> %x, <5 x i32>* %b) {
338   %bb = load <5 x i32>, <5 x i32>* %b
339   %tt = xor <5 x i32> %x, %bb
340   store <5 x i32> %tt, <5 x i32>* %b
341   br label %next
343 next:
344   ret <5 x i32> %tt
348 define <5 x i64> @test_5xi64(<5 x i64> %x, <5 x i64>* %b) {
349   %bb = load <5 x i64>, <5 x i64>* %b
350   %tt = xor <5 x i64> %x, %bb
351   store <5 x i64> %tt, <5 x i64>* %b
352   br label %next
354 next:
355   ret <5 x i64> %tt
359 define <5 x i128> @test_5xi128(<5 x i128> %x, <5 x i128>* %b) {
360   %bb = load <5 x i128>, <5 x i128>* %b
361   %tt = xor <5 x i128> %x, %bb
362   store <5 x i128> %tt, <5 x i128>* %b
363   br label %next
365 next:
366   ret <5 x i128> %tt
370 define <5 x i256> @test_5xi256(<5 x i256> %x, <5 x i256>* %b) {
371   %bb = load <5 x i256>, <5 x i256>* %b
372   %tt = xor <5 x i256> %x, %bb
373   store <5 x i256> %tt, <5 x i256>* %b
374   br label %next
376 next:
377   ret <5 x i256> %tt
381 define <5 x i512> @test_5xi512(<5 x i512> %x, <5 x i512>* %b) {
382   %bb = load <5 x i512>, <5 x i512>* %b
383   %tt = xor <5 x i512> %x, %bb
384   store <5 x i512> %tt, <5 x i512>* %b
385   br label %next
387 next:
388   ret <5 x i512> %tt