[llvm] r344452 - [X86][SSE] combineIncDecVector - use isConstantSplat
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 13 07:45:44 PDT 2018
Author: rksimon
Date: Sat Oct 13 07:45:44 2018
New Revision: 344452
URL: http://llvm.org/viewvc/llvm-project?rev=344452&view=rev
Log:
[X86][SSE] combineIncDecVector - use isConstantSplat
Use isConstantSplat instead of ISD::isConstantSplatVector to let us us peek through to illegal types (in this case for i686 targets to recognise i64 constants)
Modified:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
llvm/trunk/test/CodeGen/X86/vector-tzcnt-128.ll
llvm/trunk/test/CodeGen/X86/vector-tzcnt-256.ll
Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=344452&r1=344451&r2=344452&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sat Oct 13 07:45:44 2018
@@ -39603,10 +39603,8 @@ static SDValue combineIncDecVector(SDNod
if (!VT.is128BitVector() && !VT.is256BitVector() && !VT.is512BitVector())
return SDValue();
- SDNode *N1 = N->getOperand(1).getNode();
APInt SplatVal;
- if (!ISD::isConstantSplatVector(N1, SplatVal) ||
- !SplatVal.isOneValue())
+ if (!isConstantSplat(N->getOperand(1), SplatVal) || !SplatVal.isOneValue())
return SDValue();
SDValue AllOnesVec = getOnesVector(VT, DAG, SDLoc(N));
Modified: llvm/trunk/test/CodeGen/X86/vector-tzcnt-128.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vector-tzcnt-128.ll?rev=344452&r1=344451&r2=344452&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/vector-tzcnt-128.ll (original)
+++ llvm/trunk/test/CodeGen/X86/vector-tzcnt-128.ll Sat Oct 13 07:45:44 2018
@@ -198,8 +198,8 @@ define <2 x i64> @testv2i64(<2 x i64> %i
;
; X32-SSE-LABEL: testv2i64:
; X32-SSE: # %bb.0:
-; X32-SSE-NEXT: movdqa %xmm0, %xmm1
-; X32-SSE-NEXT: psubq {{\.LCPI.*}}, %xmm1
+; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
+; X32-SSE-NEXT: paddq %xmm0, %xmm1
; X32-SSE-NEXT: pandn %xmm1, %xmm0
; X32-SSE-NEXT: movdqa {{.*#+}} xmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; X32-SSE-NEXT: movdqa %xmm0, %xmm2
@@ -401,8 +401,8 @@ define <2 x i64> @testv2i64u(<2 x i64> %
;
; X32-SSE-LABEL: testv2i64u:
; X32-SSE: # %bb.0:
-; X32-SSE-NEXT: movdqa %xmm0, %xmm1
-; X32-SSE-NEXT: psubq {{\.LCPI.*}}, %xmm1
+; X32-SSE-NEXT: pcmpeqd %xmm1, %xmm1
+; X32-SSE-NEXT: paddq %xmm0, %xmm1
; X32-SSE-NEXT: pandn %xmm1, %xmm0
; X32-SSE-NEXT: movdqa {{.*#+}} xmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; X32-SSE-NEXT: movdqa %xmm0, %xmm2
Modified: llvm/trunk/test/CodeGen/X86/vector-tzcnt-256.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vector-tzcnt-256.ll?rev=344452&r1=344451&r2=344452&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/vector-tzcnt-256.ll (original)
+++ llvm/trunk/test/CodeGen/X86/vector-tzcnt-256.ll Sat Oct 13 07:45:44 2018
@@ -116,7 +116,8 @@ define <4 x i64> @testv4i64(<4 x i64> %i
;
; X32-AVX-LABEL: testv4i64:
; X32-AVX: # %bb.0:
-; X32-AVX-NEXT: vpsubq {{\.LCPI.*}}, %ymm0, %ymm1
+; X32-AVX-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
+; X32-AVX-NEXT: vpaddq %ymm1, %ymm0, %ymm1
; X32-AVX-NEXT: vpandn %ymm1, %ymm0, %ymm0
; X32-AVX-NEXT: vmovdqa {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; X32-AVX-NEXT: vpand %ymm1, %ymm0, %ymm2
@@ -238,7 +239,8 @@ define <4 x i64> @testv4i64u(<4 x i64> %
;
; X32-AVX-LABEL: testv4i64u:
; X32-AVX: # %bb.0:
-; X32-AVX-NEXT: vpsubq {{\.LCPI.*}}, %ymm0, %ymm1
+; X32-AVX-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1
+; X32-AVX-NEXT: vpaddq %ymm1, %ymm0, %ymm1
; X32-AVX-NEXT: vpandn %ymm1, %ymm0, %ymm0
; X32-AVX-NEXT: vmovdqa {{.*#+}} ymm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; X32-AVX-NEXT: vpand %ymm1, %ymm0, %ymm2
More information about the llvm-commits
mailing list