mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
ae291b6dfb
There is a bunch of similar bitfield extraction code throughout *ISelDAGToDAG. E.g, ARMISelDAGToDAG, AArch64ISelDAGToDAG, and AMDGPUISelDAGToDAG all contain code that matches a bitfield extract from an and + right shift. Rather than duplicating code in the same way, this adds two opcodes: - G_UBFX (unsigned bitfield extract) - G_SBFX (signed bitfield extract) They work like this ``` %x = G_UBFX %y, %lsb, %width ``` Where `lsb` and `width` are - The least-significant bit of the extraction - The width of the extraction This will extract `width` bits from `%y`, starting at `lsb`. G_UBFX zero-extends the result, while G_SBFX sign-extends the result. This should allow us to use the combiner to match the bitfield extraction patterns rather than duplicating pattern-matching code in each target. Differential Revision: https://reviews.llvm.org/D98464 |
||
---|---|---|
.. | ||
block-extract.png | ||
GenericOpcode.rst | ||
GMIR.rst | ||
index.rst | ||
InstructionSelect.rst | ||
IRTranslator.rst | ||
KnownBits.rst | ||
Legalizer.rst | ||
pipeline-overview-customized.png | ||
pipeline-overview-with-combiners.png | ||
pipeline-overview.png | ||
Pipeline.rst | ||
Porting.rst | ||
RegBankSelect.rst | ||
Resources.rst | ||
testing-pass-level.png | ||
testing-unit-level.png |