@@ -58,8 +58,7 @@ define <16 x i16> @fun3(<16 x i8> %val1, <16 x i8> %val2, <16 x i16> %val3, <16
5858; CHECK: # %bb.0:
5959; CHECK-DAG: vceqb [[REG0:%v[0-9]+]], %v24, %v26
6060; 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]]
6362; CHECK-DAG: vceqh [[REG3:%v[0-9]+]], %v28, %v25
6463; CHECK-DAG: vceqh [[REG4:%v[0-9]+]], %v30, %v27
6564; 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
186185; CHECK-DAG: vceqh [[REG1:%v[0-9]+]], %v28, %v30
187186; CHECK-NEXT: vx [[REG2:%v[0-9]+]], [[REG0]], [[REG1]]
188187; 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]]
191189; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG3]]
192- ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG5 ]]
190+ ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG4 ]]
193191; CHECK-NEXT: br %r14
194192 %cmp0 = icmp eq <8 x i16 > %val1 , %val2
195193 %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
347345; CHECK-NEXT: vuphh %v1, %v1
348346; CHECK-NEXT: vn %v0, %v0, %v1
349347; 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
352349; CHECK-NEXT: vsel %v24, %v25, %v29, [[REG0]]
353- ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG2 ]]
350+ ; CHECK-NEXT: vsel %v26, %v27, %v31, [[REG1 ]]
354351; CHECK-NEXT: br %r14
355352 %cmp0 = icmp eq <4 x i32 > %val1 , %val2
356353 %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
455452; CHECK-LABEL: fun24:
456453; CHECK: # %bb.0:
457454; 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]]
460457; CHECK-DAG: vceqg [[REG3:%v[0-9]+]], %v24, %v28
461458; CHECK-DAG: vceqg [[REG4:%v[0-9]+]], %v26, %v30
462- ; CHECK-DAG: vuphf [[REG5:%v[0-9]+]], [[REG2]]
463459; CHECK-DAG: vl [[REG6:%v[0-9]+]], 176(%r15)
464460; 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 ]]
466462; CHECK-DAG: vx [[REG9:%v[0-9]+]], [[REG3]], [[REG1]]
467463; CHECK-DAG: vsel %v24, %v29, [[REG7]], [[REG9]]
468464; 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
631627; CHECK-NEXT: vfchdb %v2, %v3, %v2
632628; CHECK-NEXT: vpkg %v1, %v2, %v1
633629; 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
636631; CHECK-NEXT: vuphf %v0, %v0
637632; CHECK-NEXT: vsel %v24, %v25, %v29, %v0
638633; 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
643638; CHECK-Z14-NEXT: vfchsb %v0, %v24, %v26
644639; CHECK-Z14-NEXT: vfchsb %v1, %v28, %v30
645640; 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
648642; CHECK-Z14-NEXT: vuphf %v0, %v0
649643; CHECK-Z14-NEXT: vsel %v24, %v25, %v29, %v0
650644; 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> %
816810; CHECK-DAG: vfchdb [[REG11:%v[0-9]+]], [[REG9]], [[REG7]]
817811; CHECK-DAG: vpkg [[REG12:%v[0-9]+]], [[REG11]], [[REG4]]
818812; 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]]
824817; CHECK-NEXT: vn [[REG19:%v[0-9]+]], [[REG15]], [[REG13]]
825818; CHECK-NEXT: vsel %v24, %v29, [[REG10]], [[REG19]]
826819; 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> %
829822; CHECK-Z14-LABEL: fun34:
830823; CHECK-Z14: # %bb.0:
831824; 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
832829; 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
839831; CHECK-Z14-NEXT: vn %v3, %v3, %v4
840832; CHECK-Z14-NEXT: vn %v2, %v2, %v5
841833; CHECK-Z14-NEXT: vsel %v24, %v29, %v1, %v2
0 commit comments