[PATCH] D58595: [TableGen][SelectionDAG][X86] Add specific isel matchers for immAllZerosV/immAllOnesV. Remove bitcasts from X86 patterns that are no longer necessary.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 24 11:57:29 PST 2019


craig.topper created this revision.
craig.topper added reviewers: RKSimon, spatel, arsenm.
Herald added a subscriber: wdng.
Herald added a project: LLVM.

Previously we had build_vector PatFrags that called ISD::isBuildVectorAllZeros/Ones. Internally the ISD::isBuildVectorAllZeros/Ones look through bitcasts, but we aren't able to take advantage of that in isel. Instead of we have to canonicalize the types of the all zeros/ones build_vectors and insert bitcasts. Then we have to pattern match those exact bitcasts.

By emitting specific matchers for these 2 nodes, we can make isel look through any bitcasts without needing to explicitly match them. We should also be able to remove the canonicalization to vXi32 from lowering, but I've left that for a follow up.

This removes something like 40,000 bytes from the X86 isel table.


Repository:
  rL LLVM

https://reviews.llvm.org/D58595

Files:
  include/llvm/CodeGen/SelectionDAGISel.h
  include/llvm/Target/TargetSelectionDAG.td
  lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  lib/Target/SystemZ/SystemZOperators.td
  lib/Target/X86/X86InstrAVX512.td
  lib/Target/X86/X86InstrSSE.td
  lib/Target/X86/X86InstrVecCompiler.td
  utils/TableGen/CodeGenDAGPatterns.cpp
  utils/TableGen/DAGISelMatcher.cpp
  utils/TableGen/DAGISelMatcher.h
  utils/TableGen/DAGISelMatcherEmitter.cpp
  utils/TableGen/DAGISelMatcherGen.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D58595.188089.patch
Type: text/x-patch
Size: 27601 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190224/cd979412/attachment.bin>


More information about the llvm-commits mailing list