@@ -58,8 +58,7 @@ define <16 x i16> @fun3(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16
58
58
; CHECK: # %bb.0:
59
59
; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26
60
60
; CHECK-DAG: vuphb [[REG2:%v[0-9]+]], [[REG0]]
61
- ; CHECK-DAG: vmrlg [[REG1:%v[0-9]+]], [[REG0]], [[REG0]]
62
- ; CHECK-DAG: vuphb [[REG1]], [[REG1]]
61
+ ; CHECK-DAG: vuplb [[REG1:%v[0-9]+]], [[REG0]]
63
62
; CHECK-DAG: vceqh [[REG3:%v[0-9]+]], %v28, %v25
64
63
; CHECK-DAG: vceqh [[REG4:%v[0-9]+]], %v30, %v27
65
64
; CHECK-DAG: vl [[REG5:%v[0-9]+]], 176(%r15)
@@ -186,10 +185,9 @@ define <8 x i32> @fun10(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3, <8 x
186
185
; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30
187
186
; CHECK-NEXT: vx [[REG2:%v[0-9]+]], [[REG0]], [[REG1]]
188
187
; CHECK-DAG: vuphh [[REG3:%v[0-9]+]], [[REG2]]
189
- ; CHECK-DAG: vmrlg [[REG4:%v[0-9]+]], [[REG2]], [[REG2]]
190
- ; CHECK-DAG: vuphh [[REG5:%v[0-9]+]], [[REG4]]
188
+ ; CHECK-DAG: vuplhw [[REG4:%v[0-9]+]], [[REG2]]
191
189
; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG3]]
192
- ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG5 ]]
190
+ ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG4 ]]
193
191
; CHECK-NEXT: br %r14
194
192
%cmp0 = icmp eq <8 x i16 > %val1 , %val2
195
193
%cmp1 = icmp eq <8 x i16 > %val3 , %val4
@@ -347,10 +345,9 @@ define <4 x i64> @fun18(<4 x i32> %val1, <4 x i32> %val2, <4 x i16> %val3, <4 x
347
345
; CHECK-NEXT: vuphh %v1, %v1
348
346
; CHECK-NEXT: vn %v0, %v0, %v1
349
347
; CHECK-DAG: vuphf [[REG0:%v[0-9]+]], %v0
350
- ; CHECK-DAG: vmrlg [[REG1:%v[0-9]+]], %v0, %v0
351
- ; CHECK-DAG: vuphf [[REG2:%v[0-9]+]], [[REG1]]
348
+ ; CHECK-DAG: vuplf [[REG1:%v[0-9]+]], %v0
352
349
; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG0]]
353
- ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG2 ]]
350
+ ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG1 ]]
354
351
; CHECK-NEXT: br %r14
355
352
%cmp0 = icmp eq <4 x i32 > %val1 , %val2
356
353
%cmp1 = icmp eq <4 x i16 > %val3 , %val4
@@ -455,14 +452,13 @@ define <4 x i64> @fun24(<4 x i64> %val1, <4 x i64> %val2, <4 x i32> %val3, <4 x
455
452
; CHECK-LABEL: fun24:
456
453
; CHECK: # %bb.0:
457
454
; CHECK-NEXT: vceqf [[REG0:%v[0-9]+]], %v25, %v27
458
- ; CHECK-NEXT: vuphf [[REG1:%v[0-9]+]], [[REG0]]
459
- ; CHECK-NEXT : vmrlg [[REG2:%v[0-9]+]], [[REG0 ]], [[REG0]]
455
+ ; CHECK-DAG: vuphf [[REG1:%v[0-9]+]], [[REG0]]
456
+ ; CHECK-DAG : vuplf [[REG2:%v[0-9]+]], [[REG0]]
460
457
; CHECK-DAG: vceqg [[REG3:%v[0-9]+]], %v24, %v28
461
458
; CHECK-DAG: vceqg [[REG4:%v[0-9]+]], %v26, %v30
462
- ; CHECK-DAG: vuphf [[REG5:%v[0-9]+]], [[REG2]]
463
459
; CHECK-DAG: vl [[REG6:%v[0-9]+]], 176(%r15)
464
460
; CHECK-DAG: vl [[REG7:%v[0-9]+]], 160(%r15)
465
- ; CHECK-DAG: vx [[REG8:%v[0-9]+]], [[REG4]], [[REG5 ]]
461
+ ; CHECK-DAG: vx [[REG8:%v[0-9]+]], [[REG4]], [[REG2 ]]
466
462
; CHECK-DAG: vx [[REG9:%v[0-9]+]], [[REG3]], [[REG1]]
467
463
; CHECK-DAG: vsel %v24, %v29, [[REG7]], [[REG9]]
468
464
; CHECK-DAG: vsel %v26, %v31, [[REG6]], [[REG8]]
@@ -631,8 +627,7 @@ define <4 x double> @fun29(<4 x float> %val1, <4 x float> %val2, <4 x float> %va
631
627
; CHECK-NEXT: vfchdb %v2, %v3, %v2
632
628
; CHECK-NEXT: vpkg %v1, %v2, %v1
633
629
; CHECK-NEXT: vx %v0, %v0, %v1
634
- ; CHECK-NEXT: vmrlg %v1, %v0, %v0
635
- ; CHECK-NEXT: vuphf %v1, %v1
630
+ ; CHECK-NEXT: vuplf %v1, %v0
636
631
; CHECK-NEXT: vuphf %v0, %v0
637
632
; CHECK-NEXT: vsel %v24, %v25, %v29, %v0
638
633
; CHECK-NEXT: vsel %v26, %v27, %v31, %v1
@@ -643,8 +638,7 @@ define <4 x double> @fun29(<4 x float> %val1, <4 x float> %val2, <4 x float> %va
643
638
; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26
644
639
; CHECK-Z14-NEXT: vfchsb %v1, %v28, %v30
645
640
; CHECK-Z14-NEXT: vx %v0, %v0, %v1
646
- ; CHECK-Z14-NEXT: vmrlg %v1, %v0, %v0
647
- ; CHECK-Z14-NEXT: vuphf %v1, %v1
641
+ ; CHECK-Z14-NEXT: vuplf %v1, %v0
648
642
; CHECK-Z14-NEXT: vuphf %v0, %v0
649
643
; CHECK-Z14-NEXT: vsel %v24, %v25, %v29, %v0
650
644
; CHECK-Z14-NEXT: vsel %v26, %v27, %v31, %v1
@@ -816,11 +810,10 @@ define <4 x double> @fun34(<4 x double> %val1, <4 x double> %val2, <4 x float> %
816
810
; CHECK-DAG: vfchdb [[REG11:%v[0-9]+]], [[REG9]], [[REG7]]
817
811
; CHECK-DAG: vpkg [[REG12:%v[0-9]+]], [[REG11]], [[REG4]]
818
812
; CHECK-DAG: vuphf [[REG13:%v[0-9]+]], [[REG12]]
819
- ; CHECK-DAG: vmrlg [[REG14:%v[0-9]+]], [[REG12]], [[REG12]]
820
- ; CHECK-NEXT: vfchdb [[REG15:%v[0-9]+]], %v24, %v28
821
- ; CHECK-NEXT: vfchdb [[REG16:%v[0-9]+]], %v26, %v30
822
- ; CHECK-NEXT: vuphf [[REG17:%v[0-9]+]], [[REG14]]
823
- ; CHECK-NEXT: vn [[REG18:%v[0-9]+]], [[REG16]], [[REG17]]
813
+ ; CHECK-DAG: vuplf [[REG14:%v[0-9]+]], [[REG12]]
814
+ ; CHECK-DAG: vfchdb [[REG15:%v[0-9]+]], %v24, %v28
815
+ ; CHECK-DAG: vfchdb [[REG16:%v[0-9]+]], %v26, %v30
816
+ ; CHECK-NEXT: vn [[REG18:%v[0-9]+]], [[REG16]], [[REG14]]
824
817
; CHECK-NEXT: vn [[REG19:%v[0-9]+]], [[REG15]], [[REG13]]
825
818
; CHECK-NEXT: vsel %v24, %v29, [[REG10]], [[REG19]]
826
819
; CHECK-NEXT: vsel %v26, %v31, [[REG8]], [[REG18]]
@@ -829,13 +822,12 @@ define <4 x double> @fun34(<4 x double> %val1, <4 x double> %val2, <4 x float> %
829
822
; CHECK-Z14-LABEL: fun34:
830
823
; CHECK-Z14: # %bb.0:
831
824
; CHECK-Z14-NEXT: vfchsb %v4, %v25, %v27
825
+ ; CHECK-Z14-NEXT: vl %v0, 176(%r15)
826
+ ; CHECK-Z14-NEXT: vl %v1, 160(%r15)
827
+ ; CHECK-Z14-NEXT: vfchdb %v2, %v24, %v28
828
+ ; CHECK-Z14-NEXT: vfchdb %v3, %v26, %v30
832
829
; CHECK-Z14-NEXT: vuphf %v5, %v4
833
- ; CHECK-Z14-NEXT: vmrlg %v4, %v4, %v4
834
- ; CHECK-Z14-DAG: vfchdb %v2, %v24, %v28
835
- ; CHECK-Z14-DAG: vfchdb %v3, %v26, %v30
836
- ; CHECK-Z14-DAG: vuphf %v4, %v4
837
- ; CHECK-Z14-DAG: vl %v0, 176(%r15)
838
- ; CHECK-Z14-DAG: vl %v1, 160(%r15)
830
+ ; CHECK-Z14-NEXT: vuplf %v4, %v4
839
831
; CHECK-Z14-NEXT: vn %v3, %v3, %v4
840
832
; CHECK-Z14-NEXT: vn %v2, %v2, %v5
841
833
; CHECK-Z14-NEXT: vsel %v24, %v29, %v1, %v2
0 commit comments