blob: 67a750aa18763ea3b9e2b8ead1c4e443b49b8a51 [file] [log] [blame]
Roman Lebedev059f4952019-07-02 16:48:49 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=ppc32-unknown-unknown | FileCheck %s --check-prefixes=ALL,PPC32
3; RUN: llc < %s -mtriple=powerpc64-unknown-unknown | FileCheck %s --check-prefixes=ALL,PPC64,PPC64BE
4; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown | FileCheck %s --check-prefixes=ALL,PPC64,PPC64LE
5
6; These two forms are equivalent:
7; sub %y, (xor %x, -1)
8; add (add %x, 1), %y
9; Some targets may prefer one to the other.
10
11define i8 @scalar_i8(i8 %x, i8 %y) nounwind {
12; ALL-LABEL: scalar_i8:
13; ALL: # %bb.0:
14; ALL-NEXT: add 3, 3, 4
15; ALL-NEXT: addi 3, 3, 1
16; ALL-NEXT: blr
17 %t0 = add i8 %x, 1
18 %t1 = add i8 %y, %t0
19 ret i8 %t1
20}
21
22define i16 @scalar_i16(i16 %x, i16 %y) nounwind {
23; ALL-LABEL: scalar_i16:
24; ALL: # %bb.0:
25; ALL-NEXT: add 3, 3, 4
26; ALL-NEXT: addi 3, 3, 1
27; ALL-NEXT: blr
28 %t0 = add i16 %x, 1
29 %t1 = add i16 %y, %t0
30 ret i16 %t1
31}
32
33define i32 @scalar_i32(i32 %x, i32 %y) nounwind {
34; ALL-LABEL: scalar_i32:
35; ALL: # %bb.0:
36; ALL-NEXT: add 3, 3, 4
37; ALL-NEXT: addi 3, 3, 1
38; ALL-NEXT: blr
39 %t0 = add i32 %x, 1
40 %t1 = add i32 %y, %t0
41 ret i32 %t1
42}
43
44define i64 @scalar_i64(i64 %x, i64 %y) nounwind {
45; PPC32-LABEL: scalar_i64:
46; PPC32: # %bb.0:
47; PPC32-NEXT: addc 4, 4, 6
48; PPC32-NEXT: adde 3, 3, 5
49; PPC32-NEXT: addic 4, 4, 1
50; PPC32-NEXT: addze 3, 3
51; PPC32-NEXT: blr
52;
53; PPC64-LABEL: scalar_i64:
54; PPC64: # %bb.0:
55; PPC64-NEXT: add 3, 3, 4
56; PPC64-NEXT: addi 3, 3, 1
57; PPC64-NEXT: blr
58 %t0 = add i64 %x, 1
59 %t1 = add i64 %y, %t0
60 ret i64 %t1
61}
62
63define <16 x i8> @vector_i128_i8(<16 x i8> %x, <16 x i8> %y) nounwind {
64; PPC32-LABEL: vector_i128_i8:
65; PPC32: # %bb.0:
66; PPC32-NEXT: stwu 1, -64(1)
67; PPC32-NEXT: lbz 12, 175(1)
68; PPC32-NEXT: lbz 0, 111(1)
69; PPC32-NEXT: lbz 4, 171(1)
70; PPC32-NEXT: lbz 11, 107(1)
71; PPC32-NEXT: stw 21, 20(1) # 4-byte Folded Spill
72; PPC32-NEXT: stw 22, 24(1) # 4-byte Folded Spill
73; PPC32-NEXT: stw 23, 28(1) # 4-byte Folded Spill
74; PPC32-NEXT: add 12, 0, 12
75; PPC32-NEXT: lbz 22, 167(1)
76; PPC32-NEXT: lbz 21, 103(1)
77; PPC32-NEXT: lbz 23, 163(1)
78; PPC32-NEXT: lbz 0, 99(1)
79; PPC32-NEXT: stw 24, 32(1) # 4-byte Folded Spill
80; PPC32-NEXT: add 4, 11, 4
81; PPC32-NEXT: lbz 24, 159(1)
82; PPC32-NEXT: lbz 11, 95(1)
83; PPC32-NEXT: stw 25, 36(1) # 4-byte Folded Spill
84; PPC32-NEXT: add 22, 21, 22
85; PPC32-NEXT: lbz 25, 155(1)
86; PPC32-NEXT: lbz 21, 91(1)
87; PPC32-NEXT: stw 26, 40(1) # 4-byte Folded Spill
88; PPC32-NEXT: add 23, 0, 23
89; PPC32-NEXT: lbz 26, 151(1)
90; PPC32-NEXT: lbz 0, 87(1)
91; PPC32-NEXT: stw 27, 44(1) # 4-byte Folded Spill
92; PPC32-NEXT: add 11, 11, 24
93; PPC32-NEXT: lbz 27, 147(1)
94; PPC32-NEXT: lbz 24, 83(1)
95; PPC32-NEXT: addi 4, 4, 1
96; PPC32-NEXT: stw 28, 48(1) # 4-byte Folded Spill
97; PPC32-NEXT: stw 29, 52(1) # 4-byte Folded Spill
98; PPC32-NEXT: stw 30, 56(1) # 4-byte Folded Spill
99; PPC32-NEXT: add 25, 21, 25
100; PPC32-NEXT: lbz 28, 143(1)
101; PPC32-NEXT: lbz 21, 79(1)
102; PPC32-NEXT: stb 4, 14(3)
103; PPC32-NEXT: addi 4, 22, 1
104; PPC32-NEXT: lbz 29, 139(1)
105; PPC32-NEXT: add 26, 0, 26
106; PPC32-NEXT: lbz 0, 75(1)
107; PPC32-NEXT: stb 4, 13(3)
108; PPC32-NEXT: addi 4, 23, 1
109; PPC32-NEXT: add 27, 24, 27
110; PPC32-NEXT: lbz 24, 135(1)
111; PPC32-NEXT: stb 4, 12(3)
112; PPC32-NEXT: addi 4, 11, 1
113; PPC32-NEXT: stb 4, 11(3)
114; PPC32-NEXT: addi 4, 25, 1
115; PPC32-NEXT: add 28, 21, 28
116; PPC32-NEXT: lbz 21, 131(1)
117; PPC32-NEXT: stb 4, 10(3)
118; PPC32-NEXT: addi 4, 26, 1
119; PPC32-NEXT: add 29, 0, 29
120; PPC32-NEXT: lbz 0, 127(1)
121; PPC32-NEXT: stb 4, 9(3)
122; PPC32-NEXT: addi 4, 27, 1
123; PPC32-NEXT: add 10, 10, 24
124; PPC32-NEXT: lbz 24, 123(1)
125; PPC32-NEXT: stb 4, 8(3)
126; PPC32-NEXT: addi 4, 28, 1
127; PPC32-NEXT: lbz 30, 119(1)
128; PPC32-NEXT: stb 4, 7(3)
129; PPC32-NEXT: addi 4, 29, 1
130; PPC32-NEXT: add 9, 9, 21
131; PPC32-NEXT: lbz 21, 115(1)
132; PPC32-NEXT: stb 4, 6(3)
133; PPC32-NEXT: addi 4, 10, 1
134; PPC32-NEXT: add 8, 8, 0
135; PPC32-NEXT: stb 4, 5(3)
136; PPC32-NEXT: addi 4, 9, 1
137; PPC32-NEXT: add 7, 7, 24
138; PPC32-NEXT: stb 4, 4(3)
139; PPC32-NEXT: addi 4, 8, 1
140; PPC32-NEXT: add 6, 6, 30
141; PPC32-NEXT: stb 4, 3(3)
142; PPC32-NEXT: addi 4, 7, 1
143; PPC32-NEXT: add 5, 5, 21
144; PPC32-NEXT: stb 4, 2(3)
145; PPC32-NEXT: addi 4, 6, 1
146; PPC32-NEXT: addi 12, 12, 1
147; PPC32-NEXT: stb 4, 1(3)
148; PPC32-NEXT: addi 4, 5, 1
149; PPC32-NEXT: stb 12, 15(3)
150; PPC32-NEXT: stb 4, 0(3)
151; PPC32-NEXT: lwz 30, 56(1) # 4-byte Folded Reload
152; PPC32-NEXT: lwz 29, 52(1) # 4-byte Folded Reload
153; PPC32-NEXT: lwz 28, 48(1) # 4-byte Folded Reload
154; PPC32-NEXT: lwz 27, 44(1) # 4-byte Folded Reload
155; PPC32-NEXT: lwz 26, 40(1) # 4-byte Folded Reload
156; PPC32-NEXT: lwz 25, 36(1) # 4-byte Folded Reload
157; PPC32-NEXT: lwz 24, 32(1) # 4-byte Folded Reload
158; PPC32-NEXT: lwz 23, 28(1) # 4-byte Folded Reload
159; PPC32-NEXT: lwz 22, 24(1) # 4-byte Folded Reload
160; PPC32-NEXT: lwz 21, 20(1) # 4-byte Folded Reload
161; PPC32-NEXT: addi 1, 1, 64
162; PPC32-NEXT: blr
163;
164; PPC64BE-LABEL: vector_i128_i8:
165; PPC64BE: # %bb.0:
166; PPC64BE-NEXT: std 21, -88(1) # 8-byte Folded Spill
167; PPC64BE-NEXT: std 22, -80(1) # 8-byte Folded Spill
168; PPC64BE-NEXT: std 30, -16(1) # 8-byte Folded Spill
169; PPC64BE-NEXT: lbz 11, 303(1)
170; PPC64BE-NEXT: lbz 12, 175(1)
171; PPC64BE-NEXT: lbz 0, 311(1)
172; PPC64BE-NEXT: lbz 30, 183(1)
173; PPC64BE-NEXT: lbz 22, 295(1)
174; PPC64BE-NEXT: lbz 21, 167(1)
175; PPC64BE-NEXT: std 23, -72(1) # 8-byte Folded Spill
176; PPC64BE-NEXT: std 24, -64(1) # 8-byte Folded Spill
177; PPC64BE-NEXT: std 25, -56(1) # 8-byte Folded Spill
178; PPC64BE-NEXT: std 2, -96(1) # 8-byte Folded Spill
179; PPC64BE-NEXT: add 11, 12, 11
180; PPC64BE-NEXT: lbz 25, 271(1)
181; PPC64BE-NEXT: lbz 24, 279(1)
182; PPC64BE-NEXT: lbz 23, 287(1)
183; PPC64BE-NEXT: add 2, 30, 0
184; PPC64BE-NEXT: lbz 0, 159(1)
185; PPC64BE-NEXT: lbz 12, 151(1)
186; PPC64BE-NEXT: add 30, 21, 22
187; PPC64BE-NEXT: lbz 22, 143(1)
188; PPC64BE-NEXT: std 26, -48(1) # 8-byte Folded Spill
189; PPC64BE-NEXT: std 27, -40(1) # 8-byte Folded Spill
190; PPC64BE-NEXT: std 28, -32(1) # 8-byte Folded Spill
191; PPC64BE-NEXT: add 23, 0, 23
192; PPC64BE-NEXT: lbz 28, 247(1)
193; PPC64BE-NEXT: lbz 27, 255(1)
194; PPC64BE-NEXT: lbz 26, 263(1)
195; PPC64BE-NEXT: lbz 0, 135(1)
196; PPC64BE-NEXT: add 12, 12, 24
197; PPC64BE-NEXT: lbz 24, 127(1)
198; PPC64BE-NEXT: add 25, 22, 25
199; PPC64BE-NEXT: lbz 22, 119(1)
200; PPC64BE-NEXT: add 26, 0, 26
201; PPC64BE-NEXT: lbz 0, 239(1)
202; PPC64BE-NEXT: add 27, 24, 27
203; PPC64BE-NEXT: lbz 24, 231(1)
204; PPC64BE-NEXT: add 28, 22, 28
205; PPC64BE-NEXT: lbz 22, 223(1)
206; PPC64BE-NEXT: addi 11, 11, 1
207; PPC64BE-NEXT: std 29, -24(1) # 8-byte Folded Spill
208; PPC64BE-NEXT: stb 11, 14(3)
209; PPC64BE-NEXT: addi 11, 30, 1
210; PPC64BE-NEXT: lbz 29, 199(1)
211; PPC64BE-NEXT: add 10, 10, 0
212; PPC64BE-NEXT: lbz 0, 215(1)
213; PPC64BE-NEXT: add 9, 9, 24
214; PPC64BE-NEXT: lbz 24, 207(1)
215; PPC64BE-NEXT: add 8, 8, 22
216; PPC64BE-NEXT: lbz 22, 191(1)
217; PPC64BE-NEXT: stb 11, 13(3)
218; PPC64BE-NEXT: addi 11, 23, 1
219; PPC64BE-NEXT: stb 11, 12(3)
220; PPC64BE-NEXT: addi 11, 12, 1
221; PPC64BE-NEXT: stb 11, 11(3)
222; PPC64BE-NEXT: addi 11, 25, 1
223; PPC64BE-NEXT: stb 11, 10(3)
224; PPC64BE-NEXT: addi 11, 26, 1
225; PPC64BE-NEXT: add 7, 7, 0
226; PPC64BE-NEXT: add 6, 6, 24
227; PPC64BE-NEXT: add 5, 5, 29
228; PPC64BE-NEXT: add 4, 4, 22
229; PPC64BE-NEXT: stb 11, 9(3)
230; PPC64BE-NEXT: addi 11, 27, 1
231; PPC64BE-NEXT: addi 0, 2, 1
232; PPC64BE-NEXT: stb 11, 8(3)
233; PPC64BE-NEXT: addi 11, 28, 1
234; PPC64BE-NEXT: addi 10, 10, 1
235; PPC64BE-NEXT: addi 9, 9, 1
236; PPC64BE-NEXT: addi 8, 8, 1
237; PPC64BE-NEXT: addi 7, 7, 1
238; PPC64BE-NEXT: addi 6, 6, 1
239; PPC64BE-NEXT: addi 5, 5, 1
240; PPC64BE-NEXT: addi 4, 4, 1
241; PPC64BE-NEXT: stb 0, 15(3)
242; PPC64BE-NEXT: stb 11, 7(3)
243; PPC64BE-NEXT: stb 10, 6(3)
244; PPC64BE-NEXT: stb 9, 5(3)
245; PPC64BE-NEXT: stb 8, 4(3)
246; PPC64BE-NEXT: stb 7, 3(3)
247; PPC64BE-NEXT: stb 6, 2(3)
248; PPC64BE-NEXT: stb 5, 1(3)
249; PPC64BE-NEXT: stb 4, 0(3)
250; PPC64BE-NEXT: ld 2, -96(1) # 8-byte Folded Reload
251; PPC64BE-NEXT: ld 30, -16(1) # 8-byte Folded Reload
252; PPC64BE-NEXT: ld 29, -24(1) # 8-byte Folded Reload
253; PPC64BE-NEXT: ld 28, -32(1) # 8-byte Folded Reload
254; PPC64BE-NEXT: ld 27, -40(1) # 8-byte Folded Reload
255; PPC64BE-NEXT: ld 26, -48(1) # 8-byte Folded Reload
256; PPC64BE-NEXT: ld 25, -56(1) # 8-byte Folded Reload
257; PPC64BE-NEXT: ld 24, -64(1) # 8-byte Folded Reload
258; PPC64BE-NEXT: ld 23, -72(1) # 8-byte Folded Reload
259; PPC64BE-NEXT: ld 22, -80(1) # 8-byte Folded Reload
260; PPC64BE-NEXT: ld 21, -88(1) # 8-byte Folded Reload
261; PPC64BE-NEXT: blr
262;
263; PPC64LE-LABEL: vector_i128_i8:
264; PPC64LE: # %bb.0:
265; PPC64LE-NEXT: vspltisb 4, 1
266; PPC64LE-NEXT: vaddubm 2, 2, 3
267; PPC64LE-NEXT: vaddubm 2, 2, 4
268; PPC64LE-NEXT: blr
269 %t0 = add <16 x i8> %x, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
270 %t1 = add <16 x i8> %y, %t0
271 ret <16 x i8> %t1
272}
273
274define <8 x i16> @vector_i128_i16(<8 x i16> %x, <8 x i16> %y) nounwind {
275; PPC32-LABEL: vector_i128_i16:
276; PPC32: # %bb.0:
277; PPC32-NEXT: stwu 1, -32(1)
278; PPC32-NEXT: stw 26, 8(1) # 4-byte Folded Spill
279; PPC32-NEXT: stw 27, 12(1) # 4-byte Folded Spill
280; PPC32-NEXT: stw 28, 16(1) # 4-byte Folded Spill
281; PPC32-NEXT: stw 29, 20(1) # 4-byte Folded Spill
282; PPC32-NEXT: stw 30, 24(1) # 4-byte Folded Spill
283; PPC32-NEXT: lhz 11, 62(1)
284; PPC32-NEXT: lhz 12, 66(1)
285; PPC32-NEXT: lhz 0, 70(1)
286; PPC32-NEXT: lhz 30, 42(1)
287; PPC32-NEXT: lhz 29, 46(1)
288; PPC32-NEXT: lhz 28, 50(1)
289; PPC32-NEXT: lhz 27, 54(1)
290; PPC32-NEXT: lhz 26, 58(1)
291; PPC32-NEXT: add 10, 10, 0
292; PPC32-NEXT: add 9, 9, 12
293; PPC32-NEXT: add 8, 8, 11
294; PPC32-NEXT: add 7, 7, 26
295; PPC32-NEXT: add 6, 6, 27
296; PPC32-NEXT: add 5, 5, 28
297; PPC32-NEXT: add 4, 4, 29
298; PPC32-NEXT: add 3, 3, 30
299; PPC32-NEXT: addi 3, 3, 1
300; PPC32-NEXT: addi 4, 4, 1
301; PPC32-NEXT: addi 5, 5, 1
302; PPC32-NEXT: addi 6, 6, 1
303; PPC32-NEXT: addi 7, 7, 1
304; PPC32-NEXT: addi 8, 8, 1
305; PPC32-NEXT: addi 9, 9, 1
306; PPC32-NEXT: addi 10, 10, 1
307; PPC32-NEXT: lwz 30, 24(1) # 4-byte Folded Reload
308; PPC32-NEXT: lwz 29, 20(1) # 4-byte Folded Reload
309; PPC32-NEXT: lwz 28, 16(1) # 4-byte Folded Reload
310; PPC32-NEXT: lwz 27, 12(1) # 4-byte Folded Reload
311; PPC32-NEXT: lwz 26, 8(1) # 4-byte Folded Reload
312; PPC32-NEXT: addi 1, 1, 32
313; PPC32-NEXT: blr
314;
315; PPC64BE-LABEL: vector_i128_i16:
316; PPC64BE: # %bb.0:
317; PPC64BE-NEXT: std 25, -56(1) # 8-byte Folded Spill
318; PPC64BE-NEXT: std 26, -48(1) # 8-byte Folded Spill
319; PPC64BE-NEXT: std 27, -40(1) # 8-byte Folded Spill
320; PPC64BE-NEXT: std 28, -32(1) # 8-byte Folded Spill
321; PPC64BE-NEXT: std 29, -24(1) # 8-byte Folded Spill
322; PPC64BE-NEXT: std 30, -16(1) # 8-byte Folded Spill
323; PPC64BE-NEXT: lhz 11, 166(1)
324; PPC64BE-NEXT: lhz 12, 174(1)
325; PPC64BE-NEXT: lhz 0, 182(1)
326; PPC64BE-NEXT: lhz 30, 118(1)
327; PPC64BE-NEXT: lhz 29, 126(1)
328; PPC64BE-NEXT: lhz 28, 134(1)
329; PPC64BE-NEXT: lhz 27, 142(1)
330; PPC64BE-NEXT: lhz 26, 150(1)
331; PPC64BE-NEXT: lhz 25, 158(1)
332; PPC64BE-NEXT: std 2, -64(1) # 8-byte Folded Spill
333; PPC64BE-NEXT: add 2, 30, 0
334; PPC64BE-NEXT: add 10, 10, 12
335; PPC64BE-NEXT: add 9, 9, 11
336; PPC64BE-NEXT: add 8, 8, 25
337; PPC64BE-NEXT: add 7, 7, 26
338; PPC64BE-NEXT: add 6, 6, 27
339; PPC64BE-NEXT: add 5, 5, 28
340; PPC64BE-NEXT: add 4, 4, 29
341; PPC64BE-NEXT: addi 4, 4, 1
342; PPC64BE-NEXT: addi 5, 5, 1
343; PPC64BE-NEXT: addi 6, 6, 1
344; PPC64BE-NEXT: addi 7, 7, 1
345; PPC64BE-NEXT: addi 8, 8, 1
346; PPC64BE-NEXT: addi 9, 9, 1
347; PPC64BE-NEXT: addi 10, 10, 1
348; PPC64BE-NEXT: addi 11, 2, 1
349; PPC64BE-NEXT: sth 11, 14(3)
350; PPC64BE-NEXT: sth 10, 12(3)
351; PPC64BE-NEXT: sth 9, 10(3)
352; PPC64BE-NEXT: sth 8, 8(3)
353; PPC64BE-NEXT: sth 7, 6(3)
354; PPC64BE-NEXT: sth 6, 4(3)
355; PPC64BE-NEXT: sth 5, 2(3)
356; PPC64BE-NEXT: sth 4, 0(3)
357; PPC64BE-NEXT: ld 2, -64(1) # 8-byte Folded Reload
358; PPC64BE-NEXT: ld 30, -16(1) # 8-byte Folded Reload
359; PPC64BE-NEXT: ld 29, -24(1) # 8-byte Folded Reload
360; PPC64BE-NEXT: ld 28, -32(1) # 8-byte Folded Reload
361; PPC64BE-NEXT: ld 27, -40(1) # 8-byte Folded Reload
362; PPC64BE-NEXT: ld 26, -48(1) # 8-byte Folded Reload
363; PPC64BE-NEXT: ld 25, -56(1) # 8-byte Folded Reload
364; PPC64BE-NEXT: blr
365;
366; PPC64LE-LABEL: vector_i128_i16:
367; PPC64LE: # %bb.0:
368; PPC64LE-NEXT: vspltish 4, 1
369; PPC64LE-NEXT: vadduhm 2, 2, 3
370; PPC64LE-NEXT: vadduhm 2, 2, 4
371; PPC64LE-NEXT: blr
372 %t0 = add <8 x i16> %x, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
373 %t1 = add <8 x i16> %y, %t0
374 ret <8 x i16> %t1
375}
376
377define <4 x i32> @vector_i128_i32(<4 x i32> %x, <4 x i32> %y) nounwind {
378; PPC32-LABEL: vector_i128_i32:
379; PPC32: # %bb.0:
380; PPC32-NEXT: add 6, 6, 10
381; PPC32-NEXT: add 5, 5, 9
382; PPC32-NEXT: add 4, 4, 8
383; PPC32-NEXT: add 3, 3, 7
384; PPC32-NEXT: addi 3, 3, 1
385; PPC32-NEXT: addi 4, 4, 1
386; PPC32-NEXT: addi 5, 5, 1
387; PPC32-NEXT: addi 6, 6, 1
388; PPC32-NEXT: blr
389;
390; PPC64BE-LABEL: vector_i128_i32:
391; PPC64BE: # %bb.0:
392; PPC64BE-NEXT: add 3, 3, 7
393; PPC64BE-NEXT: add 4, 4, 8
394; PPC64BE-NEXT: add 5, 5, 9
395; PPC64BE-NEXT: add 6, 6, 10
396; PPC64BE-NEXT: addi 6, 6, 1
397; PPC64BE-NEXT: addi 5, 5, 1
398; PPC64BE-NEXT: addi 4, 4, 1
399; PPC64BE-NEXT: addi 3, 3, 1
400; PPC64BE-NEXT: blr
401;
402; PPC64LE-LABEL: vector_i128_i32:
403; PPC64LE: # %bb.0:
404; PPC64LE-NEXT: vspltisw 4, 1
405; PPC64LE-NEXT: vadduwm 2, 2, 3
406; PPC64LE-NEXT: vadduwm 2, 2, 4
407; PPC64LE-NEXT: blr
408 %t0 = add <4 x i32> %x, <i32 1, i32 1, i32 1, i32 1>
409 %t1 = add <4 x i32> %y, %t0
410 ret <4 x i32> %t1
411}
412
413define <2 x i64> @vector_i128_i64(<2 x i64> %x, <2 x i64> %y) nounwind {
414; PPC32-LABEL: vector_i128_i64:
415; PPC32: # %bb.0:
416; PPC32-NEXT: addc 6, 6, 10
417; PPC32-NEXT: adde 5, 5, 9
418; PPC32-NEXT: addc 4, 4, 8
419; PPC32-NEXT: adde 3, 3, 7
420; PPC32-NEXT: addic 4, 4, 1
421; PPC32-NEXT: addze 3, 3
422; PPC32-NEXT: addic 6, 6, 1
423; PPC32-NEXT: addze 5, 5
424; PPC32-NEXT: blr
425;
426; PPC64BE-LABEL: vector_i128_i64:
427; PPC64BE: # %bb.0:
428; PPC64BE-NEXT: add 4, 4, 6
429; PPC64BE-NEXT: add 3, 3, 5
430; PPC64BE-NEXT: addi 3, 3, 1
431; PPC64BE-NEXT: addi 4, 4, 1
432; PPC64BE-NEXT: blr
433;
434; PPC64LE-LABEL: vector_i128_i64:
435; PPC64LE: # %bb.0:
436; PPC64LE-NEXT: addis 3, 2, .LCPI7_0@toc@ha
437; PPC64LE-NEXT: vaddudm 2, 2, 3
438; PPC64LE-NEXT: addi 3, 3, .LCPI7_0@toc@l
439; PPC64LE-NEXT: lxvd2x 0, 0, 3
440; PPC64LE-NEXT: xxswapd 36, 0
441; PPC64LE-NEXT: vaddudm 2, 2, 4
442; PPC64LE-NEXT: blr
443 %t0 = add <2 x i64> %x, <i64 1, i64 1>
444 %t1 = add <2 x i64> %y, %t0
445 ret <2 x i64> %t1
446}