forked from OSchip/llvm-project
b8bf94df25
This patch reduces the time taken for clang to compile the generated disassembler for an out-of-tree target with InsnType bigger than 64 bits from 4m30s to 48s. D67686 did a similar thing for CodeEmitterGen. The idea is to tweak the API of the APInt-like InsnType class so that we don't need so many temporary InsnTypes. This takes advantage of the rule stated in D52100 that currently "no string of bits extracted from the encoding may exceeed 64-bits", so we can use uint64_t for some temporaries. D52100 goes on to say that "fields are still permitted to exceed 64-bits so long as they aren't one contiguous string of bits". This patch breaks that by always using a "uint64_t tmp" in the generated decodeToMCInst, but it should be easy to fix in FilterChooser::emitBinaryParser by choosing to use a different type of tmp based on the known total field width. Differential Revision: https://reviews.llvm.org/D98046 |
||
---|---|---|
.. | ||
InitValue.td | ||
conflict.td |