diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-02-17 15:14:48 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-02-17 15:14:48 +0000 |
commit | 511d788a95750ad4f534bb0cdccf7a38526803bf (patch) | |
tree | 2aca2eac9c92e71b92b76aa25aaebadc751c4a2a /llvm/test/CodeGen/X86/sse-minmax.ll | |
parent | 7b35b781603b5d7d5be866a47d84fab8d96729ab (diff) | |
download | bcm5719-llvm-511d788a95750ad4f534bb0cdccf7a38526803bf.tar.gz bcm5719-llvm-511d788a95750ad4f534bb0cdccf7a38526803bf.zip |
[DAGCombine] Recognise any_extend_vector_inreg and truncation style shuffle masks
During legalization we are often creating shuffles (via a build_vector scalarization stage) that are "any_extend_vector_inreg" style masks, and also other masks that are the equivalent of "truncate_vector_inreg" (if we had such a thing).
This patch is an attempt to match these cases to help undo the effects of just leaving shuffle lowering to handle it - which typically means we lose track of the undefined elements of the shuffles resulting in an unnecessary extension+truncation stage for widened illegal types.
The 2011-10-21-widen-cmp.ll regression will be fixed by making SIGN_EXTEND_VECTOR_IN_REG legal in SSE instead of lowering them to X86ISD::VSEXT (PR31712).
Differential Revision: https://reviews.llvm.org/D29454
llvm-svn: 295451
Diffstat (limited to 'llvm/test/CodeGen/X86/sse-minmax.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/sse-minmax.ll | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/llvm/test/CodeGen/X86/sse-minmax.ll b/llvm/test/CodeGen/X86/sse-minmax.ll index 27008f26b81..eae0b710427 100644 --- a/llvm/test/CodeGen/X86/sse-minmax.ll +++ b/llvm/test/CodeGen/X86/sse-minmax.ll @@ -1277,8 +1277,6 @@ define <2 x float> @test_maxps_illegal_v2f32(<2 x float> %x, <2 x float> %y) { ; STRICT-NEXT: movaps %xmm0, %xmm2 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: cmpleps %xmm2, %xmm0 -; STRICT-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1] -; STRICT-NEXT: pslld $31, %xmm0 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq @@ -1297,8 +1295,6 @@ define <2 x float> @test_minps_illegal_v2f32(<2 x float> %x, <2 x float> %y) { ; STRICT: # BB#0: ; STRICT-NEXT: movaps %xmm0, %xmm2 ; STRICT-NEXT: cmpleps %xmm1, %xmm0 -; STRICT-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1] -; STRICT-NEXT: pslld $31, %xmm0 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1 ; STRICT-NEXT: movaps %xmm1, %xmm0 ; STRICT-NEXT: retq |