mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +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 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
ConstantFoldingTest.cpp | ||
CSETest.cpp | ||
GISelMITest.cpp | ||
GISelMITest.h | ||
GISelUtilsTest.cpp | ||
KnownBitsTest.cpp | ||
KnownBitsVectorTest.cpp | ||
LegalizerHelperTest.cpp | ||
LegalizerInfoTest.cpp | ||
LegalizerTest.cpp | ||
MachineIRBuilderTest.cpp | ||
PatternMatchTest.cpp |