[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