@@ -189,3 +189,163 @@ entry:
189189 %cond = select i1 %cmp , double %a , double %b
190190 ret double %cond
191191}
192+
193+ define float @testfminnum (float %a , float %b ) {
194+ ; CHECK-LABEL: testfminnum:
195+ ; CHECK: # %bb.0: # %entry
196+ ; CHECK-NEXT: xsmindp f1, f1, f2
197+ ; CHECK-NEXT: blr
198+ ;
199+ ; NO-FAST-P9-LABEL: testfminnum:
200+ ; NO-FAST-P9: # %bb.0: # %entry
201+ ; NO-FAST-P9-NEXT: xsmindp f1, f1, f2
202+ ; NO-FAST-P9-NEXT: blr
203+ ;
204+ ; NO-FAST-P8-LABEL: testfminnum:
205+ ; NO-FAST-P8: # %bb.0: # %entry
206+ ; NO-FAST-P8-NEXT: xsmindp f1, f1, f2
207+ ; NO-FAST-P8-NEXT: blr
208+ entry:
209+ %0 = tail call float @llvm.minnum.f32 (float %a , float %b )
210+ ret float %0
211+ }
212+
213+ define float @testfmaxnum (float %a , float %b ) {
214+ ; CHECK-LABEL: testfmaxnum:
215+ ; CHECK: # %bb.0: # %entry
216+ ; CHECK-NEXT: xsmaxdp f1, f1, f2
217+ ; CHECK-NEXT: blr
218+ ;
219+ ; NO-FAST-P9-LABEL: testfmaxnum:
220+ ; NO-FAST-P9: # %bb.0: # %entry
221+ ; NO-FAST-P9-NEXT: xsmaxdp f1, f1, f2
222+ ; NO-FAST-P9-NEXT: blr
223+ ;
224+ ; NO-FAST-P8-LABEL: testfmaxnum:
225+ ; NO-FAST-P8: # %bb.0: # %entry
226+ ; NO-FAST-P8-NEXT: xsmaxdp f1, f1, f2
227+ ; NO-FAST-P8-NEXT: blr
228+ entry:
229+ %0 = tail call float @llvm.maxnum.f32 (float %a , float %b )
230+ ret float %0
231+ }
232+
233+ define double @testdminnum (double %a , double %b ) {
234+ ; CHECK-LABEL: testdminnum:
235+ ; CHECK: # %bb.0: # %entry
236+ ; CHECK-NEXT: xsmindp f1, f1, f2
237+ ; CHECK-NEXT: blr
238+ ;
239+ ; NO-FAST-P9-LABEL: testdminnum:
240+ ; NO-FAST-P9: # %bb.0: # %entry
241+ ; NO-FAST-P9-NEXT: xsmindp f1, f1, f2
242+ ; NO-FAST-P9-NEXT: blr
243+ ;
244+ ; NO-FAST-P8-LABEL: testdminnum:
245+ ; NO-FAST-P8: # %bb.0: # %entry
246+ ; NO-FAST-P8-NEXT: xsmindp f1, f1, f2
247+ ; NO-FAST-P8-NEXT: blr
248+ entry:
249+ %0 = tail call double @llvm.minnum.f64 (double %a , double %b )
250+ ret double %0
251+ }
252+
253+ define double @testdmaxnum (double %a , double %b ) {
254+ ; CHECK-LABEL: testdmaxnum:
255+ ; CHECK: # %bb.0: # %entry
256+ ; CHECK-NEXT: xsmaxdp f1, f1, f2
257+ ; CHECK-NEXT: blr
258+ ;
259+ ; NO-FAST-P9-LABEL: testdmaxnum:
260+ ; NO-FAST-P9: # %bb.0: # %entry
261+ ; NO-FAST-P9-NEXT: xsmaxdp f1, f1, f2
262+ ; NO-FAST-P9-NEXT: blr
263+ ;
264+ ; NO-FAST-P8-LABEL: testdmaxnum:
265+ ; NO-FAST-P8: # %bb.0: # %entry
266+ ; NO-FAST-P8-NEXT: xsmaxdp f1, f1, f2
267+ ; NO-FAST-P8-NEXT: blr
268+ entry:
269+ %0 = tail call double @llvm.maxnum.f64 (double %a , double %b )
270+ ret double %0
271+ }
272+
273+ define <4 x float > @testfminnum_v4f32 (<4 x float > %a , <4 x float > %b ) {
274+ ; CHECK-LABEL: testfminnum_v4f32:
275+ ; CHECK: # %bb.0: # %entry
276+ ; CHECK-NEXT: xvminsp vs34, vs34, vs35
277+ ; CHECK-NEXT: blr
278+ ;
279+ ; NO-FAST-P9-LABEL: testfminnum_v4f32:
280+ ; NO-FAST-P9: # %bb.0: # %entry
281+ ; NO-FAST-P9-NEXT: xvminsp vs34, vs34, vs35
282+ ; NO-FAST-P9-NEXT: blr
283+ ;
284+ ; NO-FAST-P8-LABEL: testfminnum_v4f32:
285+ ; NO-FAST-P8: # %bb.0: # %entry
286+ ; NO-FAST-P8-NEXT: xvminsp vs34, vs34, vs35
287+ ; NO-FAST-P8-NEXT: blr
288+ entry:
289+ %0 = tail call <4 x float > @llvm.minnum.v4f32 (<4 x float > %a , <4 x float > %b )
290+ ret <4 x float > %0
291+ }
292+
293+ define <4 x float > @testfmaxnum_v4f32 (<4 x float > %a , <4 x float > %b ) {
294+ ; CHECK-LABEL: testfmaxnum_v4f32:
295+ ; CHECK: # %bb.0: # %entry
296+ ; CHECK-NEXT: xvmaxsp vs34, vs34, vs35
297+ ; CHECK-NEXT: blr
298+ ;
299+ ; NO-FAST-P9-LABEL: testfmaxnum_v4f32:
300+ ; NO-FAST-P9: # %bb.0: # %entry
301+ ; NO-FAST-P9-NEXT: xvmaxsp vs34, vs34, vs35
302+ ; NO-FAST-P9-NEXT: blr
303+ ;
304+ ; NO-FAST-P8-LABEL: testfmaxnum_v4f32:
305+ ; NO-FAST-P8: # %bb.0: # %entry
306+ ; NO-FAST-P8-NEXT: xvmaxsp vs34, vs34, vs35
307+ ; NO-FAST-P8-NEXT: blr
308+ entry:
309+ %0 = tail call <4 x float > @llvm.maxnum.v4f32 (<4 x float > %a , <4 x float > %b )
310+ ret <4 x float > %0
311+ }
312+
313+ define <2 x double > @testdminnum_v2f64 (<2 x double > %a , <2 x double > %b ) {
314+ ; CHECK-LABEL: testdminnum_v2f64:
315+ ; CHECK: # %bb.0: # %entry
316+ ; CHECK-NEXT: xvmindp vs34, vs34, vs35
317+ ; CHECK-NEXT: blr
318+ ;
319+ ; NO-FAST-P9-LABEL: testdminnum_v2f64:
320+ ; NO-FAST-P9: # %bb.0: # %entry
321+ ; NO-FAST-P9-NEXT: xvmindp vs34, vs34, vs35
322+ ; NO-FAST-P9-NEXT: blr
323+ ;
324+ ; NO-FAST-P8-LABEL: testdminnum_v2f64:
325+ ; NO-FAST-P8: # %bb.0: # %entry
326+ ; NO-FAST-P8-NEXT: xvmindp vs34, vs34, vs35
327+ ; NO-FAST-P8-NEXT: blr
328+ entry:
329+ %0 = tail call <2 x double > @llvm.minnum.v2f64 (<2 x double > %a , <2 x double > %b )
330+ ret <2 x double > %0
331+ }
332+
333+ define <2 x double > @testdmaxnum_v2f64 (<2 x double > %a , <2 x double > %b ) {
334+ ; CHECK-LABEL: testdmaxnum_v2f64:
335+ ; CHECK: # %bb.0: # %entry
336+ ; CHECK-NEXT: xvmaxdp vs34, vs34, vs35
337+ ; CHECK-NEXT: blr
338+ ;
339+ ; NO-FAST-P9-LABEL: testdmaxnum_v2f64:
340+ ; NO-FAST-P9: # %bb.0: # %entry
341+ ; NO-FAST-P9-NEXT: xvmaxdp vs34, vs34, vs35
342+ ; NO-FAST-P9-NEXT: blr
343+ ;
344+ ; NO-FAST-P8-LABEL: testdmaxnum_v2f64:
345+ ; NO-FAST-P8: # %bb.0: # %entry
346+ ; NO-FAST-P8-NEXT: xvmaxdp vs34, vs34, vs35
347+ ; NO-FAST-P8-NEXT: blr
348+ entry:
349+ %0 = tail call <2 x double > @llvm.maxnum.v2f64 (<2 x double > %a , <2 x double > %b )
350+ ret <2 x double > %0
351+ }
0 commit comments