Skip to content

Commit 377045e

Browse files
committed
[X86] canCreateUndefOrPoisonForTargetNode - X86ISD::CMPP (CMPPS/D) nodes do not generate poison
1 parent 4befe65 commit 377045e

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43439,6 +43439,10 @@ bool X86TargetLowering::canCreateUndefOrPoisonForTargetNode(
4343943439
case X86ISD::UNPCKH:
4344043440
case X86ISD::UNPCKL:
4344143441
return false;
43442+
// SSE comparisons handle all fcmp cases.
43443+
// TODO: Add PCMPEQ/GT and CMPM/MM with test coverage.
43444+
case X86ISD::CMPP:
43445+
return false;
4344243446
case ISD::INTRINSIC_WO_CHAIN:
4344343447
switch (Op->getConstantOperandVal(0)) {
4344443448
case Intrinsic::x86_sse2_pmadd_wd:

llvm/test/CodeGen/X86/movmsk-cmp.ll

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4429,7 +4429,6 @@ define i32 @PR39665_c_ray_select(<2 x double> %x, <2 x double> %y) {
44294429
; SSE-LABEL: PR39665_c_ray_select:
44304430
; SSE: # %bb.0:
44314431
; SSE-NEXT: cmpltpd %xmm0, %xmm1
4432-
; SSE-NEXT: psllq $63, %xmm1
44334432
; SSE-NEXT: movmskpd %xmm1, %eax
44344433
; SSE-NEXT: cmpl $3, %eax
44354434
; SSE-NEXT: movl $42, %ecx
@@ -4440,7 +4439,6 @@ define i32 @PR39665_c_ray_select(<2 x double> %x, <2 x double> %y) {
44404439
; AVX1OR2-LABEL: PR39665_c_ray_select:
44414440
; AVX1OR2: # %bb.0:
44424441
; AVX1OR2-NEXT: vcmpltpd %xmm0, %xmm1, %xmm0
4443-
; AVX1OR2-NEXT: vpsllq $63, %xmm0, %xmm0
44444442
; AVX1OR2-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1
44454443
; AVX1OR2-NEXT: vtestpd %xmm1, %xmm0
44464444
; AVX1OR2-NEXT: movl $42, %ecx

0 commit comments

Comments
 (0)