[llvm] 377045e - [X86] canCreateUndefOrPoisonForTargetNode - X86ISD::CMPP (CMPPS/D) nodes do not generate poison
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 3 02:33:26 PDT 2024
Author: Simon Pilgrim
Date: 2024-09-03T10:33:04+01:00
New Revision: 377045ece6471a1e59bb5239707aad54ba035ff2
URL: https://github.com/llvm/llvm-project/commit/377045ece6471a1e59bb5239707aad54ba035ff2
DIFF: https://github.com/llvm/llvm-project/commit/377045ece6471a1e59bb5239707aad54ba035ff2.diff
LOG: [X86] canCreateUndefOrPoisonForTargetNode - X86ISD::CMPP (CMPPS/D) nodes do not generate poison
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/movmsk-cmp.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index f011249d295040..f7878c78a5231c 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -43439,6 +43439,10 @@ bool X86TargetLowering::canCreateUndefOrPoisonForTargetNode(
case X86ISD::UNPCKH:
case X86ISD::UNPCKL:
return false;
+ // SSE comparisons handle all fcmp cases.
+ // TODO: Add PCMPEQ/GT and CMPM/MM with test coverage.
+ case X86ISD::CMPP:
+ return false;
case ISD::INTRINSIC_WO_CHAIN:
switch (Op->getConstantOperandVal(0)) {
case Intrinsic::x86_sse2_pmadd_wd:
diff --git a/llvm/test/CodeGen/X86/movmsk-cmp.ll b/llvm/test/CodeGen/X86/movmsk-cmp.ll
index 5bc2e12d502dc4..9b624a935bada8 100644
--- a/llvm/test/CodeGen/X86/movmsk-cmp.ll
+++ b/llvm/test/CodeGen/X86/movmsk-cmp.ll
@@ -4429,7 +4429,6 @@ define i32 @PR39665_c_ray_select(<2 x double> %x, <2 x double> %y) {
; SSE-LABEL: PR39665_c_ray_select:
; SSE: # %bb.0:
; SSE-NEXT: cmpltpd %xmm0, %xmm1
-; SSE-NEXT: psllq $63, %xmm1
; SSE-NEXT: movmskpd %xmm1, %eax
; SSE-NEXT: cmpl $3, %eax
; SSE-NEXT: movl $42, %ecx
@@ -4440,7 +4439,6 @@ define i32 @PR39665_c_ray_select(<2 x double> %x, <2 x double> %y) {
; AVX1OR2-LABEL: PR39665_c_ray_select:
; AVX1OR2: # %bb.0:
; AVX1OR2-NEXT: vcmpltpd %xmm0, %xmm1, %xmm0
-; AVX1OR2-NEXT: vpsllq $63, %xmm0, %xmm0
; AVX1OR2-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
; AVX1OR2-NEXT: vtestpd %xmm1, %xmm0
; AVX1OR2-NEXT: movl $42, %ecx
More information about the llvm-commits
mailing list