[llvm] a75bab6 - [Hexagon] Fix even/odd word shuffling
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 15 10:06:42 PST 2022
Author: Krzysztof Parzyszek
Date: 2022-11-15T10:06:19-08:00
New Revision: a75bab6e6053fcd31f247a055c1404f8d91445b9
URL: https://github.com/llvm/llvm-project/commit/a75bab6e6053fcd31f247a055c1404f8d91445b9
DIFF: https://github.com/llvm/llvm-project/commit/a75bab6e6053fcd31f247a055c1404f8d91445b9.diff
LOG: [Hexagon] Fix even/odd word shuffling
Used the wrong shuffle instruction... -_-
Added:
Modified:
llvm/lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp
llvm/test/CodeGen/Hexagon/autohvx/isel-vpackew.ll
llvm/test/CodeGen/Hexagon/autohvx/qmul.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp b/llvm/lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp
index 0b147e42768b5..95bbdb61a2e55 100644
--- a/llvm/lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp
@@ -1813,7 +1813,7 @@ OpRef HvxSelector::contracting(ShuffleMask SM, OpRef Va, OpRef Vb,
OpRef C = OpRef::res(Results.top());
MVT JoinTy = MVT::getVectorVT(ResTy.getVectorElementType(),
2 * ResTy.getVectorNumElements());
- Results.push(Hexagon::V6_vshuffvdd, JoinTy, {Vb, Va, C});
+ Results.push(Hexagon::V6_vdealvdd, JoinTy, {Vb, Va, C});
return Strip.first == 0 ? OpRef::lo(OpRef::res(Results.top()))
: OpRef::hi(OpRef::res(Results.top()));
}
diff --git a/llvm/test/CodeGen/Hexagon/autohvx/isel-vpackew.ll b/llvm/test/CodeGen/Hexagon/autohvx/isel-vpackew.ll
index 22fdf01c218db..04b925d92b2ab 100644
--- a/llvm/test/CodeGen/Hexagon/autohvx/isel-vpackew.ll
+++ b/llvm/test/CodeGen/Hexagon/autohvx/isel-vpackew.ll
@@ -18,7 +18,7 @@ define void @f0(ptr %a0, ptr %a1, ptr %a2) #0 {
; CHECK-NEXT: v1:0.w = vadd(v1:0.w,v1:0.w)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v1:0 = vshuff(v1,v0,r7)
+; CHECK-NEXT: v1:0 = vdeal(v1,v0,r7)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v0.h = vpacko(v1.w,v0.w)
diff --git a/llvm/test/CodeGen/Hexagon/autohvx/qmul.ll b/llvm/test/CodeGen/Hexagon/autohvx/qmul.ll
index d3a4e88ab9de3..3ed0a70ee6b61 100644
--- a/llvm/test/CodeGen/Hexagon/autohvx/qmul.ll
+++ b/llvm/test/CodeGen/Hexagon/autohvx/qmul.ll
@@ -87,7 +87,7 @@ define void @f2(ptr %a0, ptr %a1, ptr %a2) #0 {
; CHECK-NEXT: v1:0.w = vmpy(v0.h,v1.h)
; CHECK-NEXT: }
; CHECK-NEXT: {
-; CHECK-NEXT: v1:0 = vshuff(v1,v0,r7)
+; CHECK-NEXT: v1:0 = vdeal(v1,v0,r7)
; CHECK-NEXT: }
; CHECK-NEXT: {
; CHECK-NEXT: v0.uw = vlsr(v0.uw,r3)
More information about the llvm-commits
mailing list