@@ -301,44 +301,26 @@ define <4 x float> @v4f32_minimum(<4 x float> %a, <4 x float> %b) {
301301; VSX-NEXT: xvcmpeqsp 1, 35, 35
302302; VSX-NEXT: xvcmpeqsp 2, 34, 34
303303; VSX-NEXT: addis 3, 2, .LCPI4_0@toc@ha
304- ; VSX-NEXT: xxleqv 36, 36, 36
305- ; VSX-NEXT: xvminsp 0, 34, 35
306- ; VSX-NEXT: vslw 4, 4, 4
307304; VSX-NEXT: addi 3, 3, .LCPI4_0@toc@l
308305; VSX-NEXT: xxlnor 1, 1, 1
309306; VSX-NEXT: xxlnor 2, 2, 2
310- ; VSX-NEXT: vcmpequw 5, 2, 4
307+ ; VSX-NEXT: xvminsp 0, 34, 35
311308; VSX-NEXT: xxlor 1, 2, 1
312309; VSX-NEXT: lxvd2x 2, 0, 3
313- ; VSX-NEXT: xxsel 0, 0, 2, 1
314- ; VSX-NEXT: xxlxor 2, 2, 2
315- ; VSX-NEXT: xvcmpeqsp 2, 0, 2
316- ; VSX-NEXT: xxsel 1, 0, 34, 37
317- ; VSX-NEXT: vcmpequw 2, 3, 4
318- ; VSX-NEXT: xxsel 1, 1, 35, 34
319- ; VSX-NEXT: xxsel 34, 0, 1, 2
310+ ; VSX-NEXT: xxsel 34, 0, 2, 1
320311; VSX-NEXT: blr
321312;
322313; AIX-LABEL: v4f32_minimum:
323314; AIX: # %bb.0: # %entry
324315; AIX-NEXT: xvcmpeqsp 1, 35, 35
325316; AIX-NEXT: xvcmpeqsp 2, 34, 34
326317; AIX-NEXT: ld 3, L..C4(2) # %const.0
327- ; AIX-NEXT: xxleqv 36, 36, 36
328318; AIX-NEXT: xvminsp 0, 34, 35
329- ; AIX-NEXT: vslw 4, 4, 4
330319; AIX-NEXT: xxlnor 1, 1, 1
331320; AIX-NEXT: xxlnor 2, 2, 2
332- ; AIX-NEXT: vcmpequw 5, 2, 4
333321; AIX-NEXT: xxlor 1, 2, 1
334322; AIX-NEXT: lxvw4x 2, 0, 3
335- ; AIX-NEXT: xxsel 0, 0, 2, 1
336- ; AIX-NEXT: xxlxor 2, 2, 2
337- ; AIX-NEXT: xvcmpeqsp 2, 0, 2
338- ; AIX-NEXT: xxsel 1, 0, 34, 37
339- ; AIX-NEXT: vcmpequw 2, 3, 4
340- ; AIX-NEXT: xxsel 1, 1, 35, 34
341- ; AIX-NEXT: xxsel 34, 0, 1, 2
323+ ; AIX-NEXT: xxsel 34, 0, 2, 1
342324; AIX-NEXT: blr
343325entry:
344326 %m = call <4 x float > @llvm.minimum.v4f32 (<4 x float > %a , <4 x float > %b )
@@ -377,16 +359,9 @@ define <4 x float> @v4f32_maximum(<4 x float> %a, <4 x float> %b) {
377359; VSX-NEXT: xxlnor 1, 1, 1
378360; VSX-NEXT: xxlnor 2, 2, 2
379361; VSX-NEXT: xvmaxsp 0, 34, 35
380- ; VSX-NEXT: xxlxor 36, 36, 36
381- ; VSX-NEXT: vcmpequw 5, 2, 4
382362; VSX-NEXT: xxlor 1, 2, 1
383363; VSX-NEXT: lxvd2x 2, 0, 3
384- ; VSX-NEXT: xxsel 0, 0, 2, 1
385- ; VSX-NEXT: xvcmpeqsp 2, 0, 36
386- ; VSX-NEXT: xxsel 1, 0, 34, 37
387- ; VSX-NEXT: vcmpequw 2, 3, 4
388- ; VSX-NEXT: xxsel 1, 1, 35, 34
389- ; VSX-NEXT: xxsel 34, 0, 1, 2
364+ ; VSX-NEXT: xxsel 34, 0, 2, 1
390365; VSX-NEXT: blr
391366;
392367; AIX-LABEL: v4f32_maximum:
@@ -395,18 +370,11 @@ define <4 x float> @v4f32_maximum(<4 x float> %a, <4 x float> %b) {
395370; AIX-NEXT: xvcmpeqsp 2, 34, 34
396371; AIX-NEXT: ld 3, L..C5(2) # %const.0
397372; AIX-NEXT: xvmaxsp 0, 34, 35
398- ; AIX-NEXT: xxlxor 36, 36, 36
399373; AIX-NEXT: xxlnor 1, 1, 1
400374; AIX-NEXT: xxlnor 2, 2, 2
401- ; AIX-NEXT: vcmpequw 5, 2, 4
402375; AIX-NEXT: xxlor 1, 2, 1
403376; AIX-NEXT: lxvw4x 2, 0, 3
404- ; AIX-NEXT: xxsel 0, 0, 2, 1
405- ; AIX-NEXT: xvcmpeqsp 2, 0, 36
406- ; AIX-NEXT: xxsel 1, 0, 34, 37
407- ; AIX-NEXT: vcmpequw 2, 3, 4
408- ; AIX-NEXT: xxsel 1, 1, 35, 34
409- ; AIX-NEXT: xxsel 34, 0, 1, 2
377+ ; AIX-NEXT: xxsel 34, 0, 2, 1
410378; AIX-NEXT: blr
411379entry:
412380 %m = call <4 x float > @llvm.maximum.v4f32 (<4 x float > %a , <4 x float > %b )
@@ -493,47 +461,28 @@ define <2 x double> @v2f64_minimum(<2 x double> %a, <2 x double> %b) {
493461; VSX-LABEL: v2f64_minimum:
494462; VSX: # %bb.0: # %entry
495463; VSX-NEXT: addis 3, 2, .LCPI6_0@toc@ha
496- ; VSX-NEXT: xvcmpeqdp 36, 35, 35
497- ; VSX-NEXT: xvcmpeqdp 37, 34, 34
498- ; VSX-NEXT: addi 3, 3, .LCPI6_0@toc@l
499- ; VSX-NEXT: xxlnor 36, 36, 36
500- ; VSX-NEXT: xxlnor 37, 37, 37
501464; VSX-NEXT: xvmindp 0, 34, 35
465+ ; VSX-NEXT: xvcmpeqdp 35, 35, 35
466+ ; VSX-NEXT: addi 3, 3, .LCPI6_0@toc@l
467+ ; VSX-NEXT: xvcmpeqdp 34, 34, 34
468+ ; VSX-NEXT: xxlnor 35, 35, 35
469+ ; VSX-NEXT: xxlnor 34, 34, 34
502470; VSX-NEXT: lxvd2x 2, 0, 3
503- ; VSX-NEXT: addis 3, 2, .LCPI6_1@toc@ha
504- ; VSX-NEXT: xxlor 1, 37, 36
505- ; VSX-NEXT: addi 3, 3, .LCPI6_1@toc@l
506- ; VSX-NEXT: lxvd2x 36, 0, 3
507- ; VSX-NEXT: vcmpequd 5, 2, 4
508- ; VSX-NEXT: xxsel 0, 0, 2, 1
509- ; VSX-NEXT: xxlxor 2, 2, 2
510- ; VSX-NEXT: xxsel 1, 0, 34, 37
511- ; VSX-NEXT: vcmpequd 2, 3, 4
512- ; VSX-NEXT: xxsel 1, 1, 35, 34
513- ; VSX-NEXT: xvcmpeqdp 34, 0, 2
514- ; VSX-NEXT: xxsel 34, 0, 1, 34
471+ ; VSX-NEXT: xxlor 1, 34, 35
472+ ; VSX-NEXT: xxsel 34, 0, 2, 1
515473; VSX-NEXT: blr
516474;
517475; AIX-LABEL: v2f64_minimum:
518476; AIX: # %bb.0: # %entry
519477; AIX-NEXT: ld 3, L..C6(2) # %const.0
520- ; AIX-NEXT: xvcmpeqdp 36, 35, 35
521- ; AIX-NEXT: xvcmpeqdp 37, 34, 34
522- ; AIX-NEXT: lxvd2x 2, 0, 3
523- ; AIX-NEXT: ld 3, L..C7(2) # %const.1
524- ; AIX-NEXT: xxlnor 36, 36, 36
525- ; AIX-NEXT: xxlnor 37, 37, 37
526478; AIX-NEXT: xvmindp 0, 34, 35
527- ; AIX-NEXT: xxlor 1, 37, 36
528- ; AIX-NEXT: lxvd2x 36, 0, 3
529- ; AIX-NEXT: vcmpequd 5, 2, 4
530- ; AIX-NEXT: xxsel 0, 0, 2, 1
531- ; AIX-NEXT: xxlxor 2, 2, 2
532- ; AIX-NEXT: xxsel 1, 0, 34, 37
533- ; AIX-NEXT: vcmpequd 2, 3, 4
534- ; AIX-NEXT: xxsel 1, 1, 35, 34
535- ; AIX-NEXT: xvcmpeqdp 34, 0, 2
536- ; AIX-NEXT: xxsel 34, 0, 1, 34
479+ ; AIX-NEXT: xvcmpeqdp 35, 35, 35
480+ ; AIX-NEXT: lxvd2x 2, 0, 3
481+ ; AIX-NEXT: xvcmpeqdp 34, 34, 34
482+ ; AIX-NEXT: xxlnor 35, 35, 35
483+ ; AIX-NEXT: xxlnor 34, 34, 34
484+ ; AIX-NEXT: xxlor 1, 34, 35
485+ ; AIX-NEXT: xxsel 34, 0, 2, 1
537486; AIX-NEXT: blr
538487entry:
539488 %m = call <2 x double > @llvm.minimum.v2f64 (<2 x double > %a , <2 x double > %b )
@@ -618,42 +567,28 @@ define <2 x double> @v2f64_maximum(<2 x double> %a, <2 x double> %b) {
618567; VSX-LABEL: v2f64_maximum:
619568; VSX: # %bb.0: # %entry
620569; VSX-NEXT: addis 3, 2, .LCPI7_0@toc@ha
621- ; VSX-NEXT: xvcmpeqdp 36, 35, 35
622- ; VSX-NEXT: xvcmpeqdp 37, 34, 34
623- ; VSX-NEXT: addi 3, 3, .LCPI7_0@toc@l
624- ; VSX-NEXT: xxlnor 36, 36, 36
625- ; VSX-NEXT: xxlnor 37, 37, 37
626570; VSX-NEXT: xvmaxdp 0, 34, 35
571+ ; VSX-NEXT: xvcmpeqdp 35, 35, 35
572+ ; VSX-NEXT: addi 3, 3, .LCPI7_0@toc@l
573+ ; VSX-NEXT: xvcmpeqdp 34, 34, 34
574+ ; VSX-NEXT: xxlnor 35, 35, 35
575+ ; VSX-NEXT: xxlnor 34, 34, 34
627576; VSX-NEXT: lxvd2x 2, 0, 3
628- ; VSX-NEXT: xxlor 1, 37, 36
629- ; VSX-NEXT: xxlxor 36, 36, 36
630- ; VSX-NEXT: vcmpequd 5, 2, 4
631- ; VSX-NEXT: xxsel 0, 0, 2, 1
632- ; VSX-NEXT: xxsel 1, 0, 34, 37
633- ; VSX-NEXT: vcmpequd 2, 3, 4
634- ; VSX-NEXT: xxsel 1, 1, 35, 34
635- ; VSX-NEXT: xvcmpeqdp 34, 0, 36
636- ; VSX-NEXT: xxsel 34, 0, 1, 34
577+ ; VSX-NEXT: xxlor 1, 34, 35
578+ ; VSX-NEXT: xxsel 34, 0, 2, 1
637579; VSX-NEXT: blr
638580;
639581; AIX-LABEL: v2f64_maximum:
640582; AIX: # %bb.0: # %entry
641- ; AIX-NEXT: ld 3, L..C8(2) # %const.0
642- ; AIX-NEXT: xvcmpeqdp 36, 35, 35
643- ; AIX-NEXT: xvcmpeqdp 37, 34, 34
644- ; AIX-NEXT: lxvd2x 2, 0, 3
645- ; AIX-NEXT: xxlnor 36, 36, 36
646- ; AIX-NEXT: xxlnor 37, 37, 37
583+ ; AIX-NEXT: ld 3, L..C7(2) # %const.0
647584; AIX-NEXT: xvmaxdp 0, 34, 35
648- ; AIX-NEXT: xxlor 1, 37, 36
649- ; AIX-NEXT: xxlxor 36, 36, 36
650- ; AIX-NEXT: vcmpequd 5, 2, 4
651- ; AIX-NEXT: xxsel 0, 0, 2, 1
652- ; AIX-NEXT: xxsel 1, 0, 34, 37
653- ; AIX-NEXT: vcmpequd 2, 3, 4
654- ; AIX-NEXT: xxsel 1, 1, 35, 34
655- ; AIX-NEXT: xvcmpeqdp 34, 0, 36
656- ; AIX-NEXT: xxsel 34, 0, 1, 34
585+ ; AIX-NEXT: xvcmpeqdp 35, 35, 35
586+ ; AIX-NEXT: lxvd2x 2, 0, 3
587+ ; AIX-NEXT: xvcmpeqdp 34, 34, 34
588+ ; AIX-NEXT: xxlnor 35, 35, 35
589+ ; AIX-NEXT: xxlnor 34, 34, 34
590+ ; AIX-NEXT: xxlor 1, 34, 35
591+ ; AIX-NEXT: xxsel 34, 0, 2, 1
657592; AIX-NEXT: blr
658593entry:
659594 %m = call <2 x double > @llvm.maximum.v2f64 (<2 x double > %a , <2 x double > %b )
0 commit comments