[llvm] eba5092 - [X86] X86DAGToDAGISel - fix typo in #73126
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 28 02:18:13 PST 2023
Author: Simon Pilgrim
Date: 2023-11-28T10:17:57Z
New Revision: eba50929b863c6270fce6b24538dd871aa1f2fd6
URL: https://github.com/llvm/llvm-project/commit/eba50929b863c6270fce6b24538dd871aa1f2fd6
DIFF: https://github.com/llvm/llvm-project/commit/eba50929b863c6270fce6b24538dd871aa1f2fd6.diff
LOG: [X86] X86DAGToDAGISel - fix typo in #73126
We were casting the LoadSDNode from the wrong node in the base pointer uses list, meaning the ptr/chain comparison were comparing against themselves.
Added:
Modified:
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
llvm/test/CodeGen/X86/pr57340.ll
llvm/test/CodeGen/X86/vselect-avx.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index 1a989a3bccfdb45..545039b79f16163 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -1054,7 +1054,7 @@ void X86DAGToDAGISel::PreprocessISelDAG() {
SDValue Ptr = Ld->getBasePtr();
SDValue Chain = Ld->getChain();
for (SDNode *User : Ptr->uses()) {
- auto *UserLd = dyn_cast<LoadSDNode>(N);
+ auto *UserLd = dyn_cast<LoadSDNode>(User);
MVT UserVT = User->getSimpleValueType(0);
if (User != N && UserLd && ISD::isNormalLoad(User) &&
UserLd->getBasePtr() == Ptr && UserLd->getChain() == Chain &&
diff --git a/llvm/test/CodeGen/X86/pr57340.ll b/llvm/test/CodeGen/X86/pr57340.ll
index f0bb0c7339f279e..a6ae7ce5ccd15dd 100644
--- a/llvm/test/CodeGen/X86/pr57340.ll
+++ b/llvm/test/CodeGen/X86/pr57340.ll
@@ -5,15 +5,16 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-LABEL: main.41:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: vpbroadcastw (%rax), %xmm0
-; CHECK-NEXT: vmovdqu (%rax), %ymm1
-; CHECK-NEXT: vmovdqa {{.*#+}} ymm4 = [31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
-; CHECK-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2
-; CHECK-NEXT: vpermt2w %ymm2, %ymm4, %ymm1
+; CHECK-NEXT: vmovdqu (%rax), %ymm2
+; CHECK-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm3
+; CHECK-NEXT: vmovdqa {{.*#+}} ymm1 = [31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
+; CHECK-NEXT: vpermi2w %ymm3, %ymm2, %ymm1
; CHECK-NEXT: vpextrw $0, %xmm0, %eax
; CHECK-NEXT: movzwl %ax, %eax
; CHECK-NEXT: vmovd %eax, %xmm0
; CHECK-NEXT: vcvtph2ps %xmm0, %xmm0
-; CHECK-NEXT: vpextrw $0, %xmm4, %eax
+; CHECK-NEXT: vmovdqu (%rax), %xmm5
+; CHECK-NEXT: vpextrw $0, %xmm5, %eax
; CHECK-NEXT: movzwl %ax, %eax
; CHECK-NEXT: vmovd %eax, %xmm2
; CHECK-NEXT: vcvtph2ps %xmm2, %xmm2
@@ -25,14 +26,14 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-NEXT: vpextrw $0, %xmm3, %eax
; CHECK-NEXT: movzwl %ax, %eax
; CHECK-NEXT: vmovd %eax, %xmm3
-; CHECK-NEXT: vpsrld $16, %xmm4, %xmm5
-; CHECK-NEXT: vpextrw $0, %xmm5, %eax
+; CHECK-NEXT: vpsrld $16, %xmm5, %xmm4
+; CHECK-NEXT: vpextrw $0, %xmm4, %eax
; CHECK-NEXT: movzwl %ax, %eax
-; CHECK-NEXT: vmovd %eax, %xmm5
+; CHECK-NEXT: vmovd %eax, %xmm4
; CHECK-NEXT: setne %al
; CHECK-NEXT: andl $1, %eax
; CHECK-NEXT: vcvtph2ps %xmm3, %xmm6
-; CHECK-NEXT: vcvtph2ps %xmm5, %xmm3
+; CHECK-NEXT: vcvtph2ps %xmm4, %xmm3
; CHECK-NEXT: kmovw %eax, %k0
; CHECK-NEXT: vucomiss %xmm6, %xmm3
; CHECK-NEXT: setnp %al
@@ -46,12 +47,12 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-NEXT: movw $-5, %ax
; CHECK-NEXT: kmovd %eax, %k1
; CHECK-NEXT: kandw %k1, %k0, %k0
-; CHECK-NEXT: vprolq $32, %xmm1, %xmm5
-; CHECK-NEXT: vpextrw $0, %xmm5, %eax
+; CHECK-NEXT: vprolq $32, %xmm1, %xmm4
+; CHECK-NEXT: vpextrw $0, %xmm4, %eax
; CHECK-NEXT: movzwl %ax, %eax
-; CHECK-NEXT: vmovd %eax, %xmm5
-; CHECK-NEXT: vcvtph2ps %xmm5, %xmm5
-; CHECK-NEXT: vucomiss %xmm5, %xmm0
+; CHECK-NEXT: vmovd %eax, %xmm4
+; CHECK-NEXT: vcvtph2ps %xmm4, %xmm4
+; CHECK-NEXT: vucomiss %xmm4, %xmm0
; CHECK-NEXT: setnp %al
; CHECK-NEXT: sete %cl
; CHECK-NEXT: testb %al, %cl
@@ -62,18 +63,18 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-NEXT: korw %k1, %k0, %k0
; CHECK-NEXT: movw $-9, %ax
; CHECK-NEXT: kmovd %eax, %k1
-; CHECK-NEXT: vpsrlq $48, %xmm1, %xmm5
-; CHECK-NEXT: vpextrw $0, %xmm5, %eax
+; CHECK-NEXT: vpsrlq $48, %xmm1, %xmm4
+; CHECK-NEXT: vpextrw $0, %xmm4, %eax
; CHECK-NEXT: kandw %k1, %k0, %k0
; CHECK-NEXT: movzwl %ax, %eax
-; CHECK-NEXT: vmovd %eax, %xmm5
-; CHECK-NEXT: vcvtph2ps %xmm5, %xmm6
-; CHECK-NEXT: vpsrlq $48, %xmm4, %xmm5
-; CHECK-NEXT: vpextrw $0, %xmm5, %eax
+; CHECK-NEXT: vmovd %eax, %xmm4
+; CHECK-NEXT: vcvtph2ps %xmm4, %xmm6
+; CHECK-NEXT: vpsrlq $48, %xmm5, %xmm4
+; CHECK-NEXT: vpextrw $0, %xmm4, %eax
; CHECK-NEXT: movzwl %ax, %eax
-; CHECK-NEXT: vmovd %eax, %xmm5
-; CHECK-NEXT: vcvtph2ps %xmm5, %xmm5
-; CHECK-NEXT: vucomiss %xmm6, %xmm5
+; CHECK-NEXT: vmovd %eax, %xmm4
+; CHECK-NEXT: vcvtph2ps %xmm4, %xmm4
+; CHECK-NEXT: vucomiss %xmm6, %xmm4
; CHECK-NEXT: setnp %al
; CHECK-NEXT: sete %cl
; CHECK-NEXT: testb %al, %cl
@@ -106,7 +107,7 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-NEXT: movzwl %ax, %eax
; CHECK-NEXT: vmovd %eax, %xmm6
; CHECK-NEXT: vcvtph2ps %xmm6, %xmm7
-; CHECK-NEXT: vpsrldq {{.*#+}} xmm6 = xmm4[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
+; CHECK-NEXT: vpsrldq {{.*#+}} xmm6 = xmm5[10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
; CHECK-NEXT: vpextrw $0, %xmm6, %eax
; CHECK-NEXT: kandw %k1, %k0, %k0
; CHECK-NEXT: movzwl %ax, %eax
@@ -146,12 +147,12 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-NEXT: movzwl %ax, %eax
; CHECK-NEXT: vmovd %eax, %xmm7
; CHECK-NEXT: vcvtph2ps %xmm7, %xmm7
-; CHECK-NEXT: vpsrldq {{.*#+}} xmm4 = xmm4[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
-; CHECK-NEXT: vpextrw $0, %xmm4, %eax
+; CHECK-NEXT: vpsrldq {{.*#+}} xmm5 = xmm5[14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
+; CHECK-NEXT: vpextrw $0, %xmm5, %eax
; CHECK-NEXT: movzwl %ax, %eax
-; CHECK-NEXT: vmovd %eax, %xmm4
-; CHECK-NEXT: vcvtph2ps %xmm4, %xmm4
-; CHECK-NEXT: vucomiss %xmm7, %xmm4
+; CHECK-NEXT: vmovd %eax, %xmm5
+; CHECK-NEXT: vcvtph2ps %xmm5, %xmm5
+; CHECK-NEXT: vucomiss %xmm7, %xmm5
; CHECK-NEXT: setnp %al
; CHECK-NEXT: sete %cl
; CHECK-NEXT: testb %al, %cl
@@ -219,7 +220,7 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-NEXT: movzwl %ax, %eax
; CHECK-NEXT: vmovd %eax, %xmm2
; CHECK-NEXT: vcvtph2ps %xmm2, %xmm2
-; CHECK-NEXT: vucomiss %xmm2, %xmm5
+; CHECK-NEXT: vucomiss %xmm2, %xmm4
; CHECK-NEXT: setnp %al
; CHECK-NEXT: sete %cl
; CHECK-NEXT: testb %al, %cl
@@ -285,7 +286,7 @@ define void @main.41() local_unnamed_addr #1 {
; CHECK-NEXT: vmovd %eax, %xmm0
; CHECK-NEXT: vcvtph2ps %xmm0, %xmm0
; CHECK-NEXT: kshiftrw $1, %k0, %k0
-; CHECK-NEXT: vucomiss %xmm0, %xmm4
+; CHECK-NEXT: vucomiss %xmm0, %xmm5
; CHECK-NEXT: setnp %al
; CHECK-NEXT: sete %cl
; CHECK-NEXT: testb %al, %cl
diff --git a/llvm/test/CodeGen/X86/vselect-avx.ll b/llvm/test/CodeGen/X86/vselect-avx.ll
index bfcf3aa31052859..7b6a69475a9c432 100644
--- a/llvm/test/CodeGen/X86/vselect-avx.ll
+++ b/llvm/test/CodeGen/X86/vselect-avx.ll
@@ -328,18 +328,19 @@ define void @vselect_concat_splat() {
; AVX512-LABEL: vselect_concat_splat:
; AVX512: ## %bb.0: ## %entry
; AVX512-NEXT: vmovups (%rax), %ymm0
-; AVX512-NEXT: vmovaps {{.*#+}} ymm1 = [0,3,6,9,1,4,7,10]
-; AVX512-NEXT: vmovaps {{.*#+}} xmm2 = [0,3,6,9]
-; AVX512-NEXT: vpermi2ps %ymm1, %ymm0, %ymm2
-; AVX512-NEXT: vmovups 32, %xmm3
-; AVX512-NEXT: vmovups 0, %ymm4
-; AVX512-NEXT: vxorps %xmm5, %xmm5, %xmm5
-; AVX512-NEXT: vcmpneqps %xmm5, %xmm2, %k0
+; AVX512-NEXT: vmovups (%rax), %xmm1
+; AVX512-NEXT: vmovaps {{.*#+}} ymm2 = [0,3,6,9,1,4,7,10]
+; AVX512-NEXT: vmovaps %ymm2, %ymm3
+; AVX512-NEXT: vpermi2ps %ymm1, %ymm0, %ymm3
+; AVX512-NEXT: vmovups 32, %xmm4
+; AVX512-NEXT: vmovups 0, %ymm5
+; AVX512-NEXT: vxorps %xmm6, %xmm6, %xmm6
+; AVX512-NEXT: vcmpneqps %xmm6, %xmm3, %k0
; AVX512-NEXT: kshiftlw $4, %k0, %k1
; AVX512-NEXT: korw %k1, %k0, %k1
-; AVX512-NEXT: vpermt2ps %ymm3, %ymm1, %ymm4
-; AVX512-NEXT: vpermt2ps %ymm1, %ymm1, %ymm0
-; AVX512-NEXT: vmovaps %ymm4, %ymm0 {%k1}
+; AVX512-NEXT: vpermt2ps %ymm4, %ymm2, %ymm5
+; AVX512-NEXT: vpermt2ps %ymm1, %ymm2, %ymm0
+; AVX512-NEXT: vmovaps %ymm5, %ymm0 {%k1}
; AVX512-NEXT: vmovups %ymm0, (%rax)
; AVX512-NEXT: vzeroupper
; AVX512-NEXT: retq
More information about the llvm-commits
mailing list