[PATCH] D25691: [DAGCombiner] Add vector demanded elements support to computeKnownBits

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 17 12:16:32 PDT 2016


RKSimon created this revision.
RKSimon added reviewers: bogner, niravd, majnemer, eli.friedman, spatel, andreadb.
RKSimon added a subscriber: llvm-commits.
RKSimon set the repository for this revision to rL LLVM.

Currently computeKnownBits returns the common known zero/one bits for all elements of vector data, when we may only be interested in one/some of the elements.

This patch adds a DemandedElts argument that allows us to specify the elements we actually care about. The original computeKnownBits implementation calls with a DemandedElts demanding all elements to match current behaviour. Scalar types set this to 1.

The approach was found to be easier than trying to add a per-element known bits solution, for a similar usefulness given the combines where computeKnownBits is typically used.

I've only added support for a few opcodes so far (the ones that have proven straightforward to test), all others will default to demanding all elements but can be updated in due course.

I could add DemandedElts support to computeKnownBitsForTargetNode in this patch if required (this could be useful for x86 target shuffles...).


Repository:
  rL LLVM

https://reviews.llvm.org/D25691

Files:
  include/llvm/CodeGen/SelectionDAG.h
  lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  test/CodeGen/X86/known-bits-vector.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25691.74885.patch
Type: text/x-patch
Size: 14667 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161017/295c16e7/attachment.bin>


More information about the llvm-commits mailing list