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 |
||
---|---|---|
.. | ||
GlobalISel | ||
AArch64SelectionDAGTest.cpp | ||
AllocationOrderTest.cpp | ||
AsmPrinterDwarfTest.cpp | ||
CMakeLists.txt | ||
DIEHashTest.cpp | ||
DIETest.cpp | ||
LexicalScopesTest.cpp | ||
LowLevelTypeTest.cpp | ||
MachineInstrBundleIteratorTest.cpp | ||
MachineInstrTest.cpp | ||
MachineOperandTest.cpp | ||
MFCommon.inc | ||
PassManagerTest.cpp | ||
ScalableVectorMVTsTest.cpp | ||
SelectionDAGAddressAnalysisTest.cpp | ||
TargetOptionsTest.cpp | ||
TestAsmPrinter.cpp | ||
TestAsmPrinter.h | ||
TypeTraitsTest.cpp |