@@ -301,44 +301,26 @@ define <4 x float> @v4f32_minimum(<4 x float> %a, <4 x float> %b) {
301
301
; VSX-NEXT: xvcmpeqsp 1, 35, 35
302
302
; VSX-NEXT: xvcmpeqsp 2, 34, 34
303
303
; 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
307
304
; VSX-NEXT: addi 3, 3, .LCPI4_0@toc@l
308
305
; VSX-NEXT: xxlnor 1, 1, 1
309
306
; VSX-NEXT: xxlnor 2, 2, 2
310
- ; VSX-NEXT: vcmpequw 5, 2, 4
307
+ ; VSX-NEXT: xvminsp 0, 34, 35
311
308
; VSX-NEXT: xxlor 1, 2, 1
312
309
; 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
320
311
; VSX-NEXT: blr
321
312
;
322
313
; AIX-LABEL: v4f32_minimum:
323
314
; AIX: # %bb.0: # %entry
324
315
; AIX-NEXT: xvcmpeqsp 1, 35, 35
325
316
; AIX-NEXT: xvcmpeqsp 2, 34, 34
326
317
; AIX-NEXT: ld 3, L..C4(2) # %const.0
327
- ; AIX-NEXT: xxleqv 36, 36, 36
328
318
; AIX-NEXT: xvminsp 0, 34, 35
329
- ; AIX-NEXT: vslw 4, 4, 4
330
319
; AIX-NEXT: xxlnor 1, 1, 1
331
320
; AIX-NEXT: xxlnor 2, 2, 2
332
- ; AIX-NEXT: vcmpequw 5, 2, 4
333
321
; AIX-NEXT: xxlor 1, 2, 1
334
322
; 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
342
324
; AIX-NEXT: blr
343
325
entry:
344
326
%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) {
377
359
; VSX-NEXT: xxlnor 1, 1, 1
378
360
; VSX-NEXT: xxlnor 2, 2, 2
379
361
; VSX-NEXT: xvmaxsp 0, 34, 35
380
- ; VSX-NEXT: xxlxor 36, 36, 36
381
- ; VSX-NEXT: vcmpequw 5, 2, 4
382
362
; VSX-NEXT: xxlor 1, 2, 1
383
363
; 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
390
365
; VSX-NEXT: blr
391
366
;
392
367
; AIX-LABEL: v4f32_maximum:
@@ -395,18 +370,11 @@ define <4 x float> @v4f32_maximum(<4 x float> %a, <4 x float> %b) {
395
370
; AIX-NEXT: xvcmpeqsp 2, 34, 34
396
371
; AIX-NEXT: ld 3, L..C5(2) # %const.0
397
372
; AIX-NEXT: xvmaxsp 0, 34, 35
398
- ; AIX-NEXT: xxlxor 36, 36, 36
399
373
; AIX-NEXT: xxlnor 1, 1, 1
400
374
; AIX-NEXT: xxlnor 2, 2, 2
401
- ; AIX-NEXT: vcmpequw 5, 2, 4
402
375
; AIX-NEXT: xxlor 1, 2, 1
403
376
; 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
410
378
; AIX-NEXT: blr
411
379
entry:
412
380
%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) {
493
461
; VSX-LABEL: v2f64_minimum:
494
462
; VSX: # %bb.0: # %entry
495
463
; 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
501
464
; 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
502
470
; 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
515
473
; VSX-NEXT: blr
516
474
;
517
475
; AIX-LABEL: v2f64_minimum:
518
476
; AIX: # %bb.0: # %entry
519
477
; 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
526
478
; 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
537
486
; AIX-NEXT: blr
538
487
entry:
539
488
%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) {
618
567
; VSX-LABEL: v2f64_maximum:
619
568
; VSX: # %bb.0: # %entry
620
569
; 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
626
570
; 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
627
576
; 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
637
579
; VSX-NEXT: blr
638
580
;
639
581
; AIX-LABEL: v2f64_maximum:
640
582
; 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
647
584
; 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
657
592
; AIX-NEXT: blr
658
593
entry:
659
594
%m = call <2 x double > @llvm.maximum.v2f64 (<2 x double > %a , <2 x double > %b )
0 commit comments