summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/bitcast-setcc-128.ll
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-03-16 17:13:42 +0000
committerCraig Topper <craig.topper@intel.com>2018-03-16 17:13:42 +0000
commite6913ec3400b3e23fc134097ebebb05be5330b66 (patch)
treea7f7089d631624290408c07341fb4d8809be489b /llvm/test/CodeGen/X86/bitcast-setcc-128.ll
parent4c8f4234b664fb49c4b518bc19f0073c0c112868 (diff)
downloadbcm5719-llvm-e6913ec3400b3e23fc134097ebebb05be5330b66.tar.gz
bcm5719-llvm-e6913ec3400b3e23fc134097ebebb05be5330b66.zip
[X86] Post process the DAG after isel to remove vector moves that were added to zero upper bits.
We previously avoided inserting these moves during isel in a few cases which is implemented using a whitelist of opcodes. But it's too difficult to generate a perfect list of opcodes to whitelist. Especially with AVX512F without AVX512VL using 512 bit vectors to implement some 128/256 bit operations. Since isel is done bottoms up, we'd have to check the VT and opcode and subtarget in order to determine whether an EXTRACT_SUBREG would be generated for some operations. So instead of doing that, this patch adds a post processing step that detects when the moves are unnecesssary after isel. At that point any EXTRACT_SUBREGs would have already been created and appear in the DAG. So then we just need to ensure the input to the move isn't one. Differential Revision: https://reviews.llvm.org/D44289 llvm-svn: 327724
Diffstat (limited to 'llvm/test/CodeGen/X86/bitcast-setcc-128.ll')
-rw-r--r--llvm/test/CodeGen/X86/bitcast-setcc-128.ll1
1 files changed, 0 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/X86/bitcast-setcc-128.ll b/llvm/test/CodeGen/X86/bitcast-setcc-128.ll
index 5164d4f4a26..599e907251b 100644
--- a/llvm/test/CodeGen/X86/bitcast-setcc-128.ll
+++ b/llvm/test/CodeGen/X86/bitcast-setcc-128.ll
@@ -658,7 +658,6 @@ define i64 @v16i8_widened_with_zeroes(<16 x i8> %a, <16 x i8> %b) {
; AVX2-LABEL: v16i8_widened_with_zeroes:
; AVX2: # %bb.0: # %entry
; AVX2-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
-; AVX2-NEXT: vmovdqa %xmm0, %xmm0
; AVX2-NEXT: vpmovmskb %ymm0, %eax
; AVX2-NEXT: vzeroupper
; AVX2-NEXT: retq
OpenPOWER on IntegriCloud