11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2- ; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr8 \
3- ; RUN: -verify-machineinstrs | FileCheck %s
4- ; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr7 \
5- ; RUN: -verify-machineinstrs | FileCheck %s --check-prefix=NOP8VEC
2+ ; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr8 -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,PWR8
3+ ; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr7 -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,PWR7
4+
65define <16 x i8 > @getsmaxi8 (<16 x i8 > %a , <16 x i8 > %b ) {
76; CHECK-LABEL: getsmaxi8:
87; CHECK: # %bb.0: # %entry
98; CHECK-NEXT: vmaxsb 2, 2, 3
109; CHECK-NEXT: blr
11- ;
12- ; NOP8VEC-LABEL: getsmaxi8:
13- ; NOP8VEC: # %bb.0: # %entry
14- ; NOP8VEC-NEXT: vmaxsb 2, 2, 3
15- ; NOP8VEC-NEXT: blr
1610entry:
1711 %0 = icmp sgt <16 x i8 > %a , %b
1812 %1 = select <16 x i1 > %0 , <16 x i8 > %a , <16 x i8 > %b
@@ -24,11 +18,6 @@ define <8 x i16> @getsmaxi16(<8 x i16> %a, <8 x i16> %b) {
2418; CHECK: # %bb.0: # %entry
2519; CHECK-NEXT: vmaxsh 2, 2, 3
2620; CHECK-NEXT: blr
27- ;
28- ; NOP8VEC-LABEL: getsmaxi16:
29- ; NOP8VEC: # %bb.0: # %entry
30- ; NOP8VEC-NEXT: vmaxsh 2, 2, 3
31- ; NOP8VEC-NEXT: blr
3221entry:
3322 %0 = icmp sgt <8 x i16 > %a , %b
3423 %1 = select <8 x i1 > %0 , <8 x i16 > %a , <8 x i16 > %b
@@ -40,48 +29,43 @@ define <4 x i32> @getsmaxi32(<4 x i32> %a, <4 x i32> %b) {
4029; CHECK: # %bb.0: # %entry
4130; CHECK-NEXT: vmaxsw 2, 2, 3
4231; CHECK-NEXT: blr
43- ;
44- ; NOP8VEC-LABEL: getsmaxi32:
45- ; NOP8VEC: # %bb.0: # %entry
46- ; NOP8VEC-NEXT: vmaxsw 2, 2, 3
47- ; NOP8VEC-NEXT: blr
4832entry:
4933 %0 = icmp sgt <4 x i32 > %a , %b
5034 %1 = select <4 x i1 > %0 , <4 x i32 > %a , <4 x i32 > %b
5135 ret <4 x i32 > %1
5236}
5337
5438define <2 x i64 > @getsmaxi64 (<2 x i64 > %a , <2 x i64 > %b ) {
55- ; CHECK -LABEL: getsmaxi64:
56- ; CHECK : # %bb.0: # %entry
57- ; CHECK -NEXT: vmaxsd 2, 2, 3
58- ; CHECK -NEXT: blr
39+ ; PWR8 -LABEL: getsmaxi64:
40+ ; PWR8 : # %bb.0: # %entry
41+ ; PWR8 -NEXT: vmaxsd 2, 2, 3
42+ ; PWR8 -NEXT: blr
5943;
60- ; NOP8VEC -LABEL: getsmaxi64:
61- ; NOP8VEC : # %bb.0: # %entry
62- ; NOP8VEC -NEXT: xxswapd 0, 35
63- ; NOP8VEC -NEXT: addi 3, 1, -32
64- ; NOP8VEC -NEXT: xxswapd 1, 34
65- ; NOP8VEC -NEXT: stxvd2x 0, 0, 3
66- ; NOP8VEC -NEXT: addi 3, 1, -48
67- ; NOP8VEC -NEXT: stxvd2x 1, 0, 3
68- ; NOP8VEC -NEXT: ld 3, -24(1)
69- ; NOP8VEC -NEXT: ld 4, -40(1)
70- ; NOP8VEC -NEXT: ld 6, -48(1)
71- ; NOP8VEC -NEXT: cmpd 4, 3
72- ; NOP8VEC -NEXT: li 3, 0
73- ; NOP8VEC -NEXT: li 4, -1
74- ; NOP8VEC -NEXT: iselgt 5, 4, 3
75- ; NOP8VEC -NEXT: std 5, -8(1)
76- ; NOP8VEC -NEXT: ld 5, -32(1)
77- ; NOP8VEC -NEXT: cmpd 6, 5
78- ; NOP8VEC -NEXT: iselgt 3, 4, 3
79- ; NOP8VEC -NEXT: std 3, -16(1)
80- ; NOP8VEC -NEXT: addi 3, 1, -16
81- ; NOP8VEC -NEXT: lxvd2x 0, 0, 3
82- ; NOP8VEC -NEXT: xxswapd 36, 0
83- ; NOP8VEC -NEXT: xxsel 34, 35, 34, 36
84- ; NOP8VEC -NEXT: blr
44+ ; PWR7 -LABEL: getsmaxi64:
45+ ; PWR7 : # %bb.0: # %entry
46+ ; PWR7 -NEXT: xxswapd 0, 35
47+ ; PWR7 -NEXT: addi 3, 1, -32
48+ ; PWR7 -NEXT: xxswapd 1, 34
49+ ; PWR7 -NEXT: stxvd2x 0, 0, 3
50+ ; PWR7 -NEXT: addi 3, 1, -48
51+ ; PWR7 -NEXT: stxvd2x 1, 0, 3
52+ ; PWR7 -NEXT: ld 3, -24(1)
53+ ; PWR7 -NEXT: ld 4, -40(1)
54+ ; PWR7 -NEXT: ld 6, -48(1)
55+ ; PWR7 -NEXT: cmpd 4, 3
56+ ; PWR7 -NEXT: li 3, 0
57+ ; PWR7 -NEXT: li 4, -1
58+ ; PWR7 -NEXT: iselgt 5, 4, 3
59+ ; PWR7 -NEXT: std 5, -8(1)
60+ ; PWR7 -NEXT: ld 5, -32(1)
61+ ; PWR7 -NEXT: cmpd 6, 5
62+ ; PWR7 -NEXT: iselgt 3, 4, 3
63+ ; PWR7 -NEXT: std 3, -16(1)
64+ ; PWR7 -NEXT: addi 3, 1, -16
65+ ; PWR7 -NEXT: lxvd2x 0, 0, 3
66+ ; PWR7 -NEXT: xxswapd 36, 0
67+ ; PWR7 -NEXT: xxsel 34, 35, 34, 36
68+ ; PWR7 -NEXT: blr
8569entry:
8670 %0 = icmp sgt <2 x i64 > %a , %b
8771 %1 = select <2 x i1 > %0 , <2 x i64 > %a , <2 x i64 > %b
@@ -93,11 +77,6 @@ define <4 x float> @getsmaxf32(<4 x float> %a, <4 x float> %b) {
9377; CHECK: # %bb.0: # %entry
9478; CHECK-NEXT: xvmaxsp 34, 34, 35
9579; CHECK-NEXT: blr
96- ;
97- ; NOP8VEC-LABEL: getsmaxf32:
98- ; NOP8VEC: # %bb.0: # %entry
99- ; NOP8VEC-NEXT: xvmaxsp 34, 34, 35
100- ; NOP8VEC-NEXT: blr
10180entry:
10281 %0 = fcmp nnan nsz oge <4 x float > %a , %b
10382 %1 = select <4 x i1 > %0 , <4 x float > %a , <4 x float > %b
@@ -109,11 +88,6 @@ define <2 x double> @getsmaxf64(<2 x double> %a, <2 x double> %b) {
10988; CHECK: # %bb.0: # %entry
11089; CHECK-NEXT: xvmaxdp 34, 34, 35
11190; CHECK-NEXT: blr
112- ;
113- ; NOP8VEC-LABEL: getsmaxf64:
114- ; NOP8VEC: # %bb.0: # %entry
115- ; NOP8VEC-NEXT: xvmaxdp 34, 34, 35
116- ; NOP8VEC-NEXT: blr
11791entry:
11892 %0 = fcmp nnan nsz oge <2 x double > %a , %b
11993 %1 = select <2 x i1 > %0 , <2 x double > %a , <2 x double > %b
@@ -125,11 +99,6 @@ define <16 x i8> @getsmini8(<16 x i8> %a, <16 x i8> %b) {
12599; CHECK: # %bb.0: # %entry
126100; CHECK-NEXT: vminsb 2, 2, 3
127101; CHECK-NEXT: blr
128- ;
129- ; NOP8VEC-LABEL: getsmini8:
130- ; NOP8VEC: # %bb.0: # %entry
131- ; NOP8VEC-NEXT: vminsb 2, 2, 3
132- ; NOP8VEC-NEXT: blr
133102entry:
134103 %0 = icmp slt <16 x i8 > %a , %b
135104 %1 = select <16 x i1 > %0 , <16 x i8 > %a , <16 x i8 > %b
@@ -141,11 +110,6 @@ define <8 x i16> @getsmini16(<8 x i16> %a, <8 x i16> %b) {
141110; CHECK: # %bb.0: # %entry
142111; CHECK-NEXT: vminsh 2, 2, 3
143112; CHECK-NEXT: blr
144- ;
145- ; NOP8VEC-LABEL: getsmini16:
146- ; NOP8VEC: # %bb.0: # %entry
147- ; NOP8VEC-NEXT: vminsh 2, 2, 3
148- ; NOP8VEC-NEXT: blr
149113entry:
150114 %0 = icmp slt <8 x i16 > %a , %b
151115 %1 = select <8 x i1 > %0 , <8 x i16 > %a , <8 x i16 > %b
@@ -157,48 +121,43 @@ define <4 x i32> @getsmini32(<4 x i32> %a, <4 x i32> %b) {
157121; CHECK: # %bb.0: # %entry
158122; CHECK-NEXT: vminsw 2, 2, 3
159123; CHECK-NEXT: blr
160- ;
161- ; NOP8VEC-LABEL: getsmini32:
162- ; NOP8VEC: # %bb.0: # %entry
163- ; NOP8VEC-NEXT: vminsw 2, 2, 3
164- ; NOP8VEC-NEXT: blr
165124entry:
166125 %0 = icmp slt <4 x i32 > %a , %b
167126 %1 = select <4 x i1 > %0 , <4 x i32 > %a , <4 x i32 > %b
168127 ret <4 x i32 > %1
169128}
170129
171130define <2 x i64 > @getsmini64 (<2 x i64 > %a , <2 x i64 > %b ) {
172- ; CHECK -LABEL: getsmini64:
173- ; CHECK : # %bb.0: # %entry
174- ; CHECK -NEXT: vminsd 2, 2, 3
175- ; CHECK -NEXT: blr
131+ ; PWR8 -LABEL: getsmini64:
132+ ; PWR8 : # %bb.0: # %entry
133+ ; PWR8 -NEXT: vminsd 2, 2, 3
134+ ; PWR8 -NEXT: blr
176135;
177- ; NOP8VEC -LABEL: getsmini64:
178- ; NOP8VEC : # %bb.0: # %entry
179- ; NOP8VEC -NEXT: xxswapd 0, 35
180- ; NOP8VEC -NEXT: addi 3, 1, -32
181- ; NOP8VEC -NEXT: xxswapd 1, 34
182- ; NOP8VEC -NEXT: stxvd2x 0, 0, 3
183- ; NOP8VEC -NEXT: addi 3, 1, -48
184- ; NOP8VEC -NEXT: stxvd2x 1, 0, 3
185- ; NOP8VEC -NEXT: ld 3, -24(1)
186- ; NOP8VEC -NEXT: ld 4, -40(1)
187- ; NOP8VEC -NEXT: ld 6, -48(1)
188- ; NOP8VEC -NEXT: cmpd 4, 3
189- ; NOP8VEC -NEXT: li 3, 0
190- ; NOP8VEC -NEXT: li 4, -1
191- ; NOP8VEC -NEXT: isellt 5, 4, 3
192- ; NOP8VEC -NEXT: std 5, -8(1)
193- ; NOP8VEC -NEXT: ld 5, -32(1)
194- ; NOP8VEC -NEXT: cmpd 6, 5
195- ; NOP8VEC -NEXT: isellt 3, 4, 3
196- ; NOP8VEC -NEXT: std 3, -16(1)
197- ; NOP8VEC -NEXT: addi 3, 1, -16
198- ; NOP8VEC -NEXT: lxvd2x 0, 0, 3
199- ; NOP8VEC -NEXT: xxswapd 36, 0
200- ; NOP8VEC -NEXT: xxsel 34, 35, 34, 36
201- ; NOP8VEC -NEXT: blr
136+ ; PWR7 -LABEL: getsmini64:
137+ ; PWR7 : # %bb.0: # %entry
138+ ; PWR7 -NEXT: xxswapd 0, 35
139+ ; PWR7 -NEXT: addi 3, 1, -32
140+ ; PWR7 -NEXT: xxswapd 1, 34
141+ ; PWR7 -NEXT: stxvd2x 0, 0, 3
142+ ; PWR7 -NEXT: addi 3, 1, -48
143+ ; PWR7 -NEXT: stxvd2x 1, 0, 3
144+ ; PWR7 -NEXT: ld 3, -24(1)
145+ ; PWR7 -NEXT: ld 4, -40(1)
146+ ; PWR7 -NEXT: ld 6, -48(1)
147+ ; PWR7 -NEXT: cmpd 4, 3
148+ ; PWR7 -NEXT: li 3, 0
149+ ; PWR7 -NEXT: li 4, -1
150+ ; PWR7 -NEXT: isellt 5, 4, 3
151+ ; PWR7 -NEXT: std 5, -8(1)
152+ ; PWR7 -NEXT: ld 5, -32(1)
153+ ; PWR7 -NEXT: cmpd 6, 5
154+ ; PWR7 -NEXT: isellt 3, 4, 3
155+ ; PWR7 -NEXT: std 3, -16(1)
156+ ; PWR7 -NEXT: addi 3, 1, -16
157+ ; PWR7 -NEXT: lxvd2x 0, 0, 3
158+ ; PWR7 -NEXT: xxswapd 36, 0
159+ ; PWR7 -NEXT: xxsel 34, 35, 34, 36
160+ ; PWR7 -NEXT: blr
202161entry:
203162 %0 = icmp slt <2 x i64 > %a , %b
204163 %1 = select <2 x i1 > %0 , <2 x i64 > %a , <2 x i64 > %b
@@ -210,11 +169,6 @@ define <4 x float> @getsminf32(<4 x float> %a, <4 x float> %b) {
210169; CHECK: # %bb.0: # %entry
211170; CHECK-NEXT: xvminsp 34, 34, 35
212171; CHECK-NEXT: blr
213- ;
214- ; NOP8VEC-LABEL: getsminf32:
215- ; NOP8VEC: # %bb.0: # %entry
216- ; NOP8VEC-NEXT: xvminsp 34, 34, 35
217- ; NOP8VEC-NEXT: blr
218172entry:
219173 %0 = fcmp nnan nsz ole <4 x float > %a , %b
220174 %1 = select <4 x i1 > %0 , <4 x float > %a , <4 x float > %b
@@ -226,61 +180,56 @@ define <2 x double> @getsminf64(<2 x double> %a, <2 x double> %b) {
226180; CHECK: # %bb.0: # %entry
227181; CHECK-NEXT: xvmindp 34, 34, 35
228182; CHECK-NEXT: blr
229- ;
230- ; NOP8VEC-LABEL: getsminf64:
231- ; NOP8VEC: # %bb.0: # %entry
232- ; NOP8VEC-NEXT: xvmindp 34, 34, 35
233- ; NOP8VEC-NEXT: blr
234183entry:
235184 %0 = fcmp nnan nsz ole <2 x double > %a , %b
236185 %1 = select <2 x i1 > %0 , <2 x double > %a , <2 x double > %b
237186 ret <2 x double > %1
238187}
239188
240189define i128 @invalidv1i128 (<2 x i128 > %v1 , <2 x i128 > %v2 ) {
241- ; CHECK -LABEL: invalidv1i128:
242- ; CHECK : # %bb.0:
243- ; CHECK -NEXT: mfvsrd 3, 36
244- ; CHECK -NEXT: mfvsrd 4, 34
245- ; CHECK -NEXT: cmpld 4, 3
246- ; CHECK -NEXT: xxswapd 0, 36
247- ; CHECK -NEXT: xxswapd 1, 34
248- ; CHECK -NEXT: cmpd 1, 4, 3
249- ; CHECK -NEXT: mffprd 3, 0
250- ; CHECK -NEXT: mffprd 4, 1
251- ; CHECK -NEXT: crandc 20, 4, 2
252- ; CHECK -NEXT: cmpld 1, 4, 3
253- ; CHECK -NEXT: bc 12, 20, .LBB12_3
254- ; CHECK -NEXT: # %bb.1:
255- ; CHECK -NEXT: crand 20, 2, 4
256- ; CHECK -NEXT: bc 12, 20, .LBB12_3
257- ; CHECK -NEXT: # %bb.2:
258- ; CHECK -NEXT: vmr 2, 4
259- ; CHECK -NEXT: .LBB12_3:
260- ; CHECK -NEXT: xxswapd 0, 34
261- ; CHECK -NEXT: mfvsrd 4, 34
262- ; CHECK -NEXT: mffprd 3, 0
263- ; CHECK -NEXT: blr
190+ ; PWR8 -LABEL: invalidv1i128:
191+ ; PWR8 : # %bb.0:
192+ ; PWR8 -NEXT: mfvsrd 3, 36
193+ ; PWR8 -NEXT: mfvsrd 4, 34
194+ ; PWR8 -NEXT: cmpld 4, 3
195+ ; PWR8 -NEXT: xxswapd 0, 36
196+ ; PWR8 -NEXT: xxswapd 1, 34
197+ ; PWR8 -NEXT: cmpd 1, 4, 3
198+ ; PWR8 -NEXT: mffprd 3, 0
199+ ; PWR8 -NEXT: mffprd 4, 1
200+ ; PWR8 -NEXT: crandc 20, 4, 2
201+ ; PWR8 -NEXT: cmpld 1, 4, 3
202+ ; PWR8 -NEXT: bc 12, 20, .LBB12_3
203+ ; PWR8 -NEXT: # %bb.1:
204+ ; PWR8 -NEXT: crand 20, 2, 4
205+ ; PWR8 -NEXT: bc 12, 20, .LBB12_3
206+ ; PWR8 -NEXT: # %bb.2:
207+ ; PWR8 -NEXT: vmr 2, 4
208+ ; PWR8 -NEXT: .LBB12_3:
209+ ; PWR8 -NEXT: xxswapd 0, 34
210+ ; PWR8 -NEXT: mfvsrd 4, 34
211+ ; PWR8 -NEXT: mffprd 3, 0
212+ ; PWR8 -NEXT: blr
264213;
265- ; NOP8VEC -LABEL: invalidv1i128:
266- ; NOP8VEC : # %bb.0:
267- ; NOP8VEC -NEXT: cmpld 4, 8
268- ; NOP8VEC -NEXT: cmpd 1, 4, 8
269- ; NOP8VEC -NEXT: crandc 20, 4, 2
270- ; NOP8VEC -NEXT: cmpld 1, 3, 7
271- ; NOP8VEC -NEXT: crand 21, 2, 4
272- ; NOP8VEC -NEXT: cror 20, 21, 20
273- ; NOP8VEC -NEXT: isel 3, 3, 7, 20
274- ; NOP8VEC -NEXT: isel 4, 4, 8, 20
275- ; NOP8VEC -NEXT: std 3, -32(1)
276- ; NOP8VEC -NEXT: addi 3, 1, -32
277- ; NOP8VEC -NEXT: std 4, -24(1)
278- ; NOP8VEC -NEXT: lxvd2x 0, 0, 3
279- ; NOP8VEC -NEXT: addi 3, 1, -16
280- ; NOP8VEC -NEXT: stxvd2x 0, 0, 3
281- ; NOP8VEC -NEXT: ld 3, -16(1)
282- ; NOP8VEC -NEXT: ld 4, -8(1)
283- ; NOP8VEC -NEXT: blr
214+ ; PWR7 -LABEL: invalidv1i128:
215+ ; PWR7 : # %bb.0:
216+ ; PWR7 -NEXT: cmpld 4, 8
217+ ; PWR7 -NEXT: cmpd 1, 4, 8
218+ ; PWR7 -NEXT: crandc 20, 4, 2
219+ ; PWR7 -NEXT: cmpld 1, 3, 7
220+ ; PWR7 -NEXT: crand 21, 2, 4
221+ ; PWR7 -NEXT: cror 20, 21, 20
222+ ; PWR7 -NEXT: isel 3, 3, 7, 20
223+ ; PWR7 -NEXT: isel 4, 4, 8, 20
224+ ; PWR7 -NEXT: std 3, -32(1)
225+ ; PWR7 -NEXT: addi 3, 1, -32
226+ ; PWR7 -NEXT: std 4, -24(1)
227+ ; PWR7 -NEXT: lxvd2x 0, 0, 3
228+ ; PWR7 -NEXT: addi 3, 1, -16
229+ ; PWR7 -NEXT: stxvd2x 0, 0, 3
230+ ; PWR7 -NEXT: ld 3, -16(1)
231+ ; PWR7 -NEXT: ld 4, -8(1)
232+ ; PWR7 -NEXT: blr
284233%1 = icmp slt <2 x i128 > %v1 , %v2
285234%2 = select <2 x i1 > %1 , <2 x i128 > %v1 , <2 x i128 > %v2
286235%3 = extractelement <2 x i128 > %2 , i32 0
0 commit comments