[llvm] 68a0a37 - [AggressiveAntiDepBreaker] Tweak the fix for renaming a subregister of a live register
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 7 07:41:50 PDT 2023
Author: Jay Foad
Date: 2023-08-07T15:41:40+01:00
New Revision: 68a0a3737163d5ee4cb5e8bb10128dc589e40d9a
URL: https://github.com/llvm/llvm-project/commit/68a0a3737163d5ee4cb5e8bb10128dc589e40d9a
DIFF: https://github.com/llvm/llvm-project/commit/68a0a3737163d5ee4cb5e8bb10128dc589e40d9a.diff
LOG: [AggressiveAntiDepBreaker] Tweak the fix for renaming a subregister of a live register
This patch tweaks the fix in D20627 "Do not rename registers that do not
start an independent live range" to only consider Data dependencies, not
Output or Anti dependencies. An Output or Anti dependency to a superreg
does not imply that that superreg is live at the current instruction.
This enables breaking anti-dependencies in a few more cases as shown by
the lit test updates.
Differential Revision: https://reviews.llvm.org/D156879
Added:
Modified:
llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp
llvm/test/CodeGen/Hexagon/autohvx/fp-to-int.ll
llvm/test/CodeGen/Hexagon/autohvx/mulh.ll
llvm/test/CodeGen/Hexagon/autohvx/vmpy-parts.ll
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp b/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp
index 9875c6ba6043eb..d06c4327bda6ac 100644
--- a/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp
+++ b/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp
@@ -904,7 +904,7 @@ unsigned AggressiveAntiDepBreaker::BreakAntiDependencies(
RegAliases.set(*AI);
for (SDep S : PathSU->Succs) {
SDep::Kind K = S.getKind();
- if (K != SDep::Data && K != SDep::Output && K != SDep::Anti)
+ if (K != SDep::Data)
continue;
unsigned R = S.getReg();
if (!RegAliases[R])
diff --git a/llvm/test/CodeGen/Hexagon/autohvx/fp-to-int.ll b/llvm/test/CodeGen/Hexagon/autohvx/fp-to-int.ll
index 595568bd9e0555..800f89005e3104 100644
--- a/llvm/test/CodeGen/Hexagon/autohvx/fp-to-int.ll
+++ b/llvm/test/CodeGen/Hexagon/autohvx/fp-to-int.ll
@@ -301,23 +301,23 @@ define void @f16s32_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: {
; CHECK-NEXT: r2 = #15360
; CHECK-NEXT: r7 = #-4
+; CHECK-NEXT: r6 = #1
; CHECK-NEXT: v1 = vmem(r0+#0)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v0.h = vsplat(r2)
-; CHECK-NEXT: r6 = ##-2147483648
-; CHECK-NEXT: r2 = #1
-; CHECK-NEXT: }
-; CHECK-NEXT: {
-; CHECK-NEXT: v2 = vsplat(r6)
; CHECK-NEXT: r4 = #32
; CHECK-NEXT: r5 = #8
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v7 = vsplat(r4)
+; CHECK-NEXT: r2 = ##2147483647
; CHECK-NEXT: v24 = vxor(v24,v24)
; CHECK-NEXT: }
; CHECK-NEXT: {
+; CHECK-NEXT: v25 = vsplat(r2)
+; CHECK-NEXT: }
+; CHECK-NEXT: {
; CHECK-NEXT: v1:0.qf32 = vmpy(v1.hf,v0.hf)
; CHECK-NEXT: }
; CHECK-NEXT: {
@@ -327,31 +327,31 @@ define void @f16s32_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: v1.sf = v1.qf32
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r7:6 = combine(#30,#24)
+; CHECK-NEXT: r7 = ##-2147483648
; CHECK-NEXT: v1:0 = vshuff(v1,v0,r7)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v6 = vsplat(r7)
+; CHECK-NEXT: v2 = vsplat(r7)
; CHECK-NEXT: q0 = vcmp.gt(v24.w,v1.w)
; CHECK-NEXT: q1 = vcmp.gt(v24.w,v0.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v3.w = vasl(v0.w,r2)
+; CHECK-NEXT: v3.w = vasl(v0.w,r6)
+; CHECK-NEXT: v28 = vmux(q0,v2,v25)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: r2 = ##2147483647
-; CHECK-NEXT: v4.w = vasl(v1.w,r2)
+; CHECK-NEXT: r7:6 = combine(#30,#24)
+; CHECK-NEXT: v4.w = vasl(v1.w,r6)
; CHECK-NEXT: v3.w = vsub(v3.w,v2.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v25 = vsplat(r2)
+; CHECK-NEXT: v6 = vsplat(r7)
; CHECK-NEXT: v5.w = vasl(v0.w,r5)
; CHECK-NEXT: v4.w = vsub(v4.w,v2.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v3.w = vasr(v3.w,r6)
; CHECK-NEXT: v5 = vor(v5,v2)
-; CHECK-NEXT: v28 = vmux(q0,v2,v25)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v4.w = vasr(v4.w,r6)
@@ -530,28 +530,28 @@ define void @f32s8_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: v8.w = vasr(v8.w,r6)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v23 = vsplat(r3)
+; CHECK-NEXT: v21 = vsplat(r3)
; CHECK-NEXT: v7.w = vasr(v7.w,r6)
-; CHECK-NEXT: v20.w = vsub(v9.w,v1.w)
+; CHECK-NEXT: v18.w = vsub(v9.w,v1.w)
; CHECK-NEXT: v8.w = vsub(v10.w,v8.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v21.w = vasl(v6.w,r2)
-; CHECK-NEXT: v28 = vmux(q1,v1,v23)
-; CHECK-NEXT: v26 = vmux(q0,v1,v23)
+; CHECK-NEXT: v19.w = vasl(v6.w,r2)
+; CHECK-NEXT: v26 = vmux(q1,v1,v21)
+; CHECK-NEXT: v24 = vmux(q0,v1,v21)
; CHECK-NEXT: v7.w = vsub(v10.w,v7.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v5.w = vasl(v4.w,r2)
; CHECK-NEXT: v8.w = vmin(v8.w,v13.w)
-; CHECK-NEXT: v9 = vor(v21,v1)
-; CHECK-NEXT: v22.w = vmin(v7.w,v13.w)
+; CHECK-NEXT: v9 = vor(v19,v1)
+; CHECK-NEXT: v20.w = vmin(v7.w,v13.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v4.w = vasr(v20.w,r6)
+; CHECK-NEXT: v4.w = vasr(v18.w,r6)
; CHECK-NEXT: q3 = vcmp.gt(v8.w,v12.w)
; CHECK-NEXT: v5 = vor(v5,v1)
-; CHECK-NEXT: q2 = vcmp.gt(v22.w,v12.w)
+; CHECK-NEXT: q2 = vcmp.gt(v20.w,v12.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v11.w = vasr(v11.w,r6)
@@ -563,49 +563,49 @@ define void @f32s8_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: v4.w = vmin(v4.w,v13.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v24.w = vasl(v0.w,r2)
+; CHECK-NEXT: v22.w = vasl(v0.w,r2)
; CHECK-NEXT: v3 = vor(v3,v1)
; CHECK-NEXT: v10.w = vmin(v10.w,v13.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v8.w = vlsr(v9.w,v8.w)
-; CHECK-NEXT: v6 = vor(v24,v1)
+; CHECK-NEXT: v6 = vor(v22,v1)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v5.w = vlsr(v5.w,v22.w)
-; CHECK-NEXT: v27.w = vsub(v12.w,v8.w)
+; CHECK-NEXT: v5.w = vlsr(v5.w,v20.w)
+; CHECK-NEXT: v25.w = vsub(v12.w,v8.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v3.w = vlsr(v3.w,v4.w)
-; CHECK-NEXT: v25.w = vsub(v12.w,v5.w)
-; CHECK-NEXT: v8 = vmux(q1,v27,v8)
+; CHECK-NEXT: v23.w = vsub(v12.w,v5.w)
+; CHECK-NEXT: v8 = vmux(q1,v25,v8)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v6.w = vlsr(v6.w,v10.w)
-; CHECK-NEXT: v5 = vmux(q0,v25,v5)
+; CHECK-NEXT: v5 = vmux(q0,v23,v5)
; CHECK-NEXT: q0 = vcmp.gt(v12.w,v2.w)
-; CHECK-NEXT: v29.w = vsub(v12.w,v3.w)
+; CHECK-NEXT: v27.w = vsub(v12.w,v3.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v2 = vmux(q3,v8,v28)
+; CHECK-NEXT: v2 = vmux(q3,v8,v26)
+; CHECK-NEXT: v28.w = vsub(v12.w,v6.w)
; CHECK-NEXT: q3 = vcmp.gt(v12.w,v0.w)
-; CHECK-NEXT: v30.w = vsub(v12.w,v6.w)
-; CHECK-NEXT: v5 = vmux(q2,v5,v26)
+; CHECK-NEXT: v5 = vmux(q2,v5,v24)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v0 = vmux(q0,v1,v23)
-; CHECK-NEXT: v3 = vmux(q0,v29,v3)
+; CHECK-NEXT: v29 = vmux(q0,v1,v21)
+; CHECK-NEXT: v3 = vmux(q0,v27,v3)
; CHECK-NEXT: q2 = vcmp.gt(v4.w,v12.w)
-; CHECK-NEXT: v31 = vmux(q3,v30,v6)
+; CHECK-NEXT: v30 = vmux(q3,v28,v6)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v2.h = vpack(v2.w,v5.w):sat
-; CHECK-NEXT: v1 = vmux(q3,v1,v23)
+; CHECK-NEXT: v1 = vmux(q3,v1,v21)
; CHECK-NEXT: q3 = vcmp.gt(v10.w,v12.w)
-; CHECK-NEXT: v0 = vmux(q2,v3,v0)
+; CHECK-NEXT: v0 = vmux(q2,v3,v29)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v1 = vmux(q3,v31,v1)
+; CHECK-NEXT: v1 = vmux(q3,v30,v1)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v3.h = vpack(v1.w,v0.w):sat
@@ -614,13 +614,13 @@ define void @f32s8_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: v0.h = vpack(v1.w,v0.w):sat
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v1.b = vpack(v3.h,v2.h):sat
+; CHECK-NEXT: v31.b = vpack(v3.h,v2.h):sat
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v0.b = vpack(v3.h,v0.h):sat
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v1:0 = vshuff(v0,v1,r7)
+; CHECK-NEXT: v1:0 = vshuff(v0,v31,r7)
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: vmem(r1+#0) = v0.new
; CHECK-NEXT: }
@@ -1581,7 +1581,7 @@ define void @f32u8_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: v12.w = vsub(v12.w,v3.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v23 = vsplat(r4)
+; CHECK-NEXT: v20 = vsplat(r4)
; CHECK-NEXT: v8.w = vasr(v8.w,r6)
; CHECK-NEXT: v11.w = vsub(v11.w,v3.w)
; CHECK-NEXT: }
@@ -1592,27 +1592,27 @@ define void @f32u8_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: {
; CHECK-NEXT: v6.w = vasl(v5.w,r2)
; CHECK-NEXT: v9.w = vsub(v14.w,v9.w)
-; CHECK-NEXT: v8.w = vmin(v8.w,v23.w)
+; CHECK-NEXT: v8.w = vmin(v8.w,v20.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v7.w = vasl(v2.w,r2)
; CHECK-NEXT: v6 = vor(v6,v3)
-; CHECK-NEXT: v9.w = vmin(v9.w,v23.w)
+; CHECK-NEXT: v9.w = vmin(v9.w,v20.w)
; CHECK-NEXT: q1 = vcmp.gt(v13.w,v8.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v22.w = vasr(v11.w,r6)
+; CHECK-NEXT: v19.w = vasr(v11.w,r6)
; CHECK-NEXT: v7 = vor(v7,v3)
; CHECK-NEXT: q2 = vcmp.gt(v13.w,v9.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v12.w = vasr(v12.w,r6)
-; CHECK-NEXT: v5.w = vsub(v14.w,v22.w)
+; CHECK-NEXT: v5.w = vsub(v14.w,v19.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v4.w = vasl(v1.w,r2)
-; CHECK-NEXT: v24.w = vsub(v14.w,v12.w)
-; CHECK-NEXT: v5.w = vmin(v5.w,v23.w)
+; CHECK-NEXT: v21.w = vsub(v14.w,v12.w)
+; CHECK-NEXT: v5.w = vmin(v5.w,v20.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: r2 = ##2147483647
@@ -1620,51 +1620,51 @@ define void @f32u8_0(ptr %a0, ptr %a1) #0 {
; CHECK-NEXT: v4 = vor(v4,v3)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v25 = vsplat(r2)
+; CHECK-NEXT: v22 = vsplat(r2)
; CHECK-NEXT: v6.w = vlsr(v6.w,v8.w)
; CHECK-NEXT: v3 = vor(v10,v3)
-; CHECK-NEXT: v10.w = vmin(v24.w,v23.w)
+; CHECK-NEXT: v10.w = vmin(v21.w,v20.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v7.w = vlsr(v7.w,v9.w)
-; CHECK-NEXT: v27 = vmux(q1,v25,v6)
+; CHECK-NEXT: v24 = vmux(q1,v22,v6)
; CHECK-NEXT: q1 = vcmp.gt(v13.w,v5.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v26.w = vlsr(v4.w,v5.w)
-; CHECK-NEXT: v28 = vmux(q2,v25,v7)
+; CHECK-NEXT: v23.w = vlsr(v4.w,v5.w)
+; CHECK-NEXT: v25 = vmux(q2,v22,v7)
; CHECK-NEXT: q2 = vcmp.gt(v13.w,v10.w)
-; CHECK-NEXT: v4 = vmux(q0,v13,v27)
+; CHECK-NEXT: v4 = vmux(q0,v13,v24)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v3.w = vlsr(v3.w,v10.w)
-; CHECK-NEXT: v29 = vmux(q3,v13,v28)
-; CHECK-NEXT: v2 = vmux(q1,v25,v26)
+; CHECK-NEXT: v26 = vmux(q3,v13,v25)
+; CHECK-NEXT: v2 = vmux(q1,v22,v23)
; CHECK-NEXT: q1 = vcmp.gt(v13.w,v1.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
+; CHECK-NEXT: v27 = vmux(q2,v22,v3)
; CHECK-NEXT: q3 = vcmp.gt(v13.w,v0.w)
-; CHECK-NEXT: v1 = vmux(q2,v25,v3)
-; CHECK-NEXT: v0 = vmux(q1,v13,v2)
+; CHECK-NEXT: v28 = vmux(q1,v13,v2)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v30.uh = vpack(v29.w,v4.w):sat
-; CHECK-NEXT: v1 = vmux(q3,v13,v1)
+; CHECK-NEXT: v29.uh = vpack(v26.w,v4.w):sat
+; CHECK-NEXT: v1 = vmux(q3,v13,v27)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v31.uh = vpack(v1.w,v0.w):sat
+; CHECK-NEXT: v30.uh = vpack(v1.w,v28.w):sat
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v0.uh = vpack(v1.w,v0.w):sat
+; CHECK-NEXT: v0.uh = vpack(v1.w,v28.w):sat
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v1.ub = vpack(v31.h,v30.h):sat
+; CHECK-NEXT: v31.ub = vpack(v30.h,v29.h):sat
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v0.ub = vpack(v31.h,v0.h):sat
+; CHECK-NEXT: v0.ub = vpack(v30.h,v0.h):sat
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v1:0 = vshuff(v0,v1,r7)
+; CHECK-NEXT: v1:0 = vshuff(v0,v31,r7)
; CHECK-NEXT: jumpr r31
; CHECK-NEXT: vmem(r1+#0) = v0.new
; CHECK-NEXT: }
diff --git a/llvm/test/CodeGen/Hexagon/autohvx/mulh.ll b/llvm/test/CodeGen/Hexagon/autohvx/mulh.ll
index b3044653eb20a7..e6e9a06291baad 100644
--- a/llvm/test/CodeGen/Hexagon/autohvx/mulh.ll
+++ b/llvm/test/CodeGen/Hexagon/autohvx/mulh.ll
@@ -128,16 +128,16 @@ define <32 x i32> @mulhs32(<32 x i32> %a0, <32 x i32> %a1) #0 {
; V60-NEXT: v2.w = vmpye(v1.w,v0.uh)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v0.w = vasr(v0.w,r0)
+; V60-NEXT: v31.w = vasr(v0.w,r0)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v3.w = vasr(v1.w,r0)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v5:4.w = vmpy(v0.h,v1.uh)
+; V60-NEXT: v5:4.w = vmpy(v31.h,v1.uh)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v31:30.w = vmpy(v0.h,v3.h)
+; V60-NEXT: v31:30.w = vmpy(v31.h,v3.h)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v7:6.w = vadd(v2.uh,v4.uh)
@@ -211,10 +211,10 @@ define <32 x i32> @mulhu32(<32 x i32> %a0, <32 x i32> %a1) #0 {
; V60-NEXT: v2.uw = vlsr(v2.uw,r2)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v1 = vdelta(v1,v4)
+; V60-NEXT: v31 = vdelta(v1,v4)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v1:0.uw = vmpy(v0.uh,v1.uh)
+; V60-NEXT: v1:0.uw = vmpy(v0.uh,v31.uh)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v1:0.w = vadd(v1.uh,v0.uh)
diff --git a/llvm/test/CodeGen/Hexagon/autohvx/vmpy-parts.ll b/llvm/test/CodeGen/Hexagon/autohvx/vmpy-parts.ll
index e03bf942e44b39..7a79c7f981ae93 100644
--- a/llvm/test/CodeGen/Hexagon/autohvx/vmpy-parts.ll
+++ b/llvm/test/CodeGen/Hexagon/autohvx/vmpy-parts.ll
@@ -12,16 +12,16 @@ define <32 x i32> @f0(<32 x i32> %a0, <32 x i32> %a1) #0 {
; V60-NEXT: v2.w = vmpye(v1.w,v0.uh)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v0.w = vasr(v0.w,r0)
+; V60-NEXT: v31.w = vasr(v0.w,r0)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v3.w = vasr(v1.w,r0)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v5:4.w = vmpy(v0.h,v1.uh)
+; V60-NEXT: v5:4.w = vmpy(v31.h,v1.uh)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v31:30.w = vmpy(v0.h,v3.h)
+; V60-NEXT: v31:30.w = vmpy(v31.h,v3.h)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v7:6.w = vadd(v2.uh,v4.uh)
@@ -224,10 +224,10 @@ define <32 x i32> @f4(<32 x i32> %a0, <32 x i32> %a1) #0 {
; V60-NEXT: v2.uw = vlsr(v2.uw,r2)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v1 = vdelta(v1,v4)
+; V60-NEXT: v31 = vdelta(v1,v4)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v1:0.uw = vmpy(v0.uh,v1.uh)
+; V60-NEXT: v1:0.uw = vmpy(v0.uh,v31.uh)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v1:0.w = vadd(v1.uh,v0.uh)
@@ -342,13 +342,13 @@ define <64 x i32> @f10(<32 x i32> %a0, <32 x i32> %a1) #0 {
; V60-NEXT: v6.uw = vlsr(v2.uw,r2)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v5 = vdelta(v1,v5)
+; V60-NEXT: v30 = vmux(q1,v1,v4)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v1 = vmux(q1,v1,v4)
+; V60-NEXT: v5 = vdelta(v1,v5)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: if (q0) v1.w += v0.w
+; V60-NEXT: if (q0) v30.w += v0.w
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v9:8.uw = vmpy(v0.uh,v5.uh)
@@ -357,19 +357,19 @@ define <64 x i32> @f10(<32 x i32> %a0, <32 x i32> %a1) #0 {
; V60-NEXT: v9:8.w = vadd(v9.uh,v8.uh)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v31.w = vadd(v8.w,v6.w)
+; V60-NEXT: v29.w = vadd(v8.w,v6.w)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v2.w += vasl(v8.w,r2)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v9.w += vasr(v31.w,r2)
+; V60-NEXT: v9.w += vasr(v29.w,r2)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v0.w = vadd(v3.w,v9.w)
+; V60-NEXT: v31.w = vadd(v3.w,v9.w)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v3.w = vsub(v0.w,v1.w)
+; V60-NEXT: v3.w = vsub(v31.w,v30.w)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v1:0 = vcombine(v3,v2)
@@ -497,10 +497,10 @@ define <64 x i32> @f12(<32 x i32> %a0, <32 x i32> %a1) #0 {
; V60-NEXT: v5.uw = vlsr(v2.uw,r1)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v1 = vdelta(v1,v4)
+; V60-NEXT: v30 = vdelta(v1,v4)
; V60-NEXT: }
; V60-NEXT: {
-; V60-NEXT: v1:0.uw = vmpy(v0.uh,v1.uh)
+; V60-NEXT: v1:0.uw = vmpy(v0.uh,v30.uh)
; V60-NEXT: }
; V60-NEXT: {
; V60-NEXT: v1:0.w = vadd(v1.uh,v0.uh)
More information about the llvm-commits
mailing list