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
4 ; RUN: llc -march=x86 -promote-elements < %s
5 ; RUN: llc -march=x86-64 -promote-elements < %s
7 define <1 x i8> @test_1xi8(<1 x i8> %x, <1 x i8>* %b) {
8 %bb = load <1 x i8>* %b
9 %tt = xor <1 x i8> %x, %bb
10 store <1 x i8> %tt, <1 x i8>* %b
18 define <1 x i16> @test_1xi16(<1 x i16> %x, <1 x i16>* %b) {
19 %bb = load <1 x i16>* %b
20 %tt = xor <1 x i16> %x, %bb
21 store <1 x i16> %tt, <1 x i16>* %b
29 define <1 x i32> @test_1xi32(<1 x i32> %x, <1 x i32>* %b) {
30 %bb = load <1 x i32>* %b
31 %tt = xor <1 x i32> %x, %bb
32 store <1 x i32> %tt, <1 x i32>* %b
40 define <1 x i64> @test_1xi64(<1 x i64> %x, <1 x i64>* %b) {
41 %bb = load <1 x i64>* %b
42 %tt = xor <1 x i64> %x, %bb
43 store <1 x i64> %tt, <1 x i64>* %b
51 define <1 x i128> @test_1xi128(<1 x i128> %x, <1 x i128>* %b) {
52 %bb = load <1 x i128>* %b
53 %tt = xor <1 x i128> %x, %bb
54 store <1 x i128> %tt, <1 x i128>* %b
62 define <1 x i256> @test_1xi256(<1 x i256> %x, <1 x i256>* %b) {
63 %bb = load <1 x i256>* %b
64 %tt = xor <1 x i256> %x, %bb
65 store <1 x i256> %tt, <1 x i256>* %b
73 define <1 x i512> @test_1xi512(<1 x i512> %x, <1 x i512>* %b) {
74 %bb = load <1 x i512>* %b
75 %tt = xor <1 x i512> %x, %bb
76 store <1 x i512> %tt, <1 x i512>* %b
84 define <2 x i8> @test_2xi8(<2 x i8> %x, <2 x i8>* %b) {
85 %bb = load <2 x i8>* %b
86 %tt = xor <2 x i8> %x, %bb
87 store <2 x i8> %tt, <2 x i8>* %b
95 define <2 x i16> @test_2xi16(<2 x i16> %x, <2 x i16>* %b) {
96 %bb = load <2 x i16>* %b
97 %tt = xor <2 x i16> %x, %bb
98 store <2 x i16> %tt, <2 x i16>* %b
106 define <2 x i32> @test_2xi32(<2 x i32> %x, <2 x i32>* %b) {
107 %bb = load <2 x i32>* %b
108 %tt = xor <2 x i32> %x, %bb
109 store <2 x i32> %tt, <2 x i32>* %b
117 define <2 x i64> @test_2xi64(<2 x i64> %x, <2 x i64>* %b) {
118 %bb = load <2 x i64>* %b
119 %tt = xor <2 x i64> %x, %bb
120 store <2 x i64> %tt, <2 x i64>* %b
128 define <2 x i128> @test_2xi128(<2 x i128> %x, <2 x i128>* %b) {
129 %bb = load <2 x i128>* %b
130 %tt = xor <2 x i128> %x, %bb
131 store <2 x i128> %tt, <2 x i128>* %b
139 define <2 x i256> @test_2xi256(<2 x i256> %x, <2 x i256>* %b) {
140 %bb = load <2 x i256>* %b
141 %tt = xor <2 x i256> %x, %bb
142 store <2 x i256> %tt, <2 x i256>* %b
150 define <2 x i512> @test_2xi512(<2 x i512> %x, <2 x i512>* %b) {
151 %bb = load <2 x i512>* %b
152 %tt = xor <2 x i512> %x, %bb
153 store <2 x i512> %tt, <2 x i512>* %b
161 define <3 x i8> @test_3xi8(<3 x i8> %x, <3 x i8>* %b) {
162 %bb = load <3 x i8>* %b
163 %tt = xor <3 x i8> %x, %bb
164 store <3 x i8> %tt, <3 x i8>* %b
172 define <3 x i16> @test_3xi16(<3 x i16> %x, <3 x i16>* %b) {
173 %bb = load <3 x i16>* %b
174 %tt = xor <3 x i16> %x, %bb
175 store <3 x i16> %tt, <3 x i16>* %b
183 define <3 x i32> @test_3xi32(<3 x i32> %x, <3 x i32>* %b) {
184 %bb = load <3 x i32>* %b
185 %tt = xor <3 x i32> %x, %bb
186 store <3 x i32> %tt, <3 x i32>* %b
194 define <3 x i64> @test_3xi64(<3 x i64> %x, <3 x i64>* %b) {
195 %bb = load <3 x i64>* %b
196 %tt = xor <3 x i64> %x, %bb
197 store <3 x i64> %tt, <3 x i64>* %b
205 define <3 x i128> @test_3xi128(<3 x i128> %x, <3 x i128>* %b) {
206 %bb = load <3 x i128>* %b
207 %tt = xor <3 x i128> %x, %bb
208 store <3 x i128> %tt, <3 x i128>* %b
216 define <3 x i256> @test_3xi256(<3 x i256> %x, <3 x i256>* %b) {
217 %bb = load <3 x i256>* %b
218 %tt = xor <3 x i256> %x, %bb
219 store <3 x i256> %tt, <3 x i256>* %b
227 define <3 x i512> @test_3xi512(<3 x i512> %x, <3 x i512>* %b) {
228 %bb = load <3 x i512>* %b
229 %tt = xor <3 x i512> %x, %bb
230 store <3 x i512> %tt, <3 x i512>* %b
238 define <4 x i8> @test_4xi8(<4 x i8> %x, <4 x i8>* %b) {
239 %bb = load <4 x i8>* %b
240 %tt = xor <4 x i8> %x, %bb
241 store <4 x i8> %tt, <4 x i8>* %b
249 define <4 x i16> @test_4xi16(<4 x i16> %x, <4 x i16>* %b) {
250 %bb = load <4 x i16>* %b
251 %tt = xor <4 x i16> %x, %bb
252 store <4 x i16> %tt, <4 x i16>* %b
260 define <4 x i32> @test_4xi32(<4 x i32> %x, <4 x i32>* %b) {
261 %bb = load <4 x i32>* %b
262 %tt = xor <4 x i32> %x, %bb
263 store <4 x i32> %tt, <4 x i32>* %b
271 define <4 x i64> @test_4xi64(<4 x i64> %x, <4 x i64>* %b) {
272 %bb = load <4 x i64>* %b
273 %tt = xor <4 x i64> %x, %bb
274 store <4 x i64> %tt, <4 x i64>* %b
282 define <4 x i128> @test_4xi128(<4 x i128> %x, <4 x i128>* %b) {
283 %bb = load <4 x i128>* %b
284 %tt = xor <4 x i128> %x, %bb
285 store <4 x i128> %tt, <4 x i128>* %b
293 define <4 x i256> @test_4xi256(<4 x i256> %x, <4 x i256>* %b) {
294 %bb = load <4 x i256>* %b
295 %tt = xor <4 x i256> %x, %bb
296 store <4 x i256> %tt, <4 x i256>* %b
304 define <4 x i512> @test_4xi512(<4 x i512> %x, <4 x i512>* %b) {
305 %bb = load <4 x i512>* %b
306 %tt = xor <4 x i512> %x, %bb
307 store <4 x i512> %tt, <4 x i512>* %b
315 define <5 x i8> @test_5xi8(<5 x i8> %x, <5 x i8>* %b) {
316 %bb = load <5 x i8>* %b
317 %tt = xor <5 x i8> %x, %bb
318 store <5 x i8> %tt, <5 x i8>* %b
326 define <5 x i16> @test_5xi16(<5 x i16> %x, <5 x i16>* %b) {
327 %bb = load <5 x i16>* %b
328 %tt = xor <5 x i16> %x, %bb
329 store <5 x i16> %tt, <5 x i16>* %b
337 define <5 x i32> @test_5xi32(<5 x i32> %x, <5 x i32>* %b) {
338 %bb = load <5 x i32>* %b
339 %tt = xor <5 x i32> %x, %bb
340 store <5 x i32> %tt, <5 x i32>* %b
348 define <5 x i64> @test_5xi64(<5 x i64> %x, <5 x i64>* %b) {
349 %bb = load <5 x i64>* %b
350 %tt = xor <5 x i64> %x, %bb
351 store <5 x i64> %tt, <5 x i64>* %b
359 define <5 x i128> @test_5xi128(<5 x i128> %x, <5 x i128>* %b) {
360 %bb = load <5 x i128>* %b
361 %tt = xor <5 x i128> %x, %bb
362 store <5 x i128> %tt, <5 x i128>* %b
370 define <5 x i256> @test_5xi256(<5 x i256> %x, <5 x i256>* %b) {
371 %bb = load <5 x i256>* %b
372 %tt = xor <5 x i256> %x, %bb
373 store <5 x i256> %tt, <5 x i256>* %b
381 define <5 x i512> @test_5xi512(<5 x i512> %x, <5 x i512>* %b) {
382 %bb = load <5 x i512>* %b
383 %tt = xor <5 x i512> %x, %bb
384 store <5 x i512> %tt, <5 x i512>* %b