| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
Teach the target independent code how to take advantage of type
information to get the mapping of an instruction.
llvm-svn: 265739
|
|
|
|
|
|
|
|
|
|
|
|
| |
specific type.
This will be used to find the default mapping of the instruction.
Also, this information is recorded, instead of computed, because it is
expensive from a type to know which register bank maps it.
Indeed, we need to iterate through all the register classes of all the
register banks to find the one that maps the given type.
llvm-svn: 265736
|
|
|
|
|
|
|
|
|
|
|
| |
method.
NFC.
The refactoring intends to make the code more readable and expose
more features to potential derived classes.
llvm-svn: 265735
|
|
|
|
| |
llvm-svn: 265733
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the mapping of an instruction on register bank.
For most instructions, it is possible to guess the mapping of the
instruciton by using the encoding constraints.
It remains instructions without encoding constraints.
For copy-like instructions, we try to propagate the information we get
from the other operands. Otherwise, the target has to give this
information.
llvm-svn: 265703
|
|
|
|
|
|
| |
the access to MRI and TRI.
llvm-svn: 265701
|
|
|
|
|
|
|
|
|
| |
helper class.
The default constructor creates invalid (isValid() == false) instances
and may be used to communicate that a mapping was not found.
llvm-svn: 265699
|
|
|
|
| |
llvm-svn: 265695
|
|
|
|
|
|
|
|
|
|
|
| |
getInstrMapping.
This implementation requires that the target implemented
getRegBankFromRegClass.
Indeed, the implementation uses the register classes for the encoding
constraints for the instructions to deduce the mapping of a value.
llvm-svn: 265624
|
|
|
|
|
|
|
| |
The previous method to get the size was too simple and could fail for
physical registers.
llvm-svn: 265620
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
on a register bank.
This will be used by the register bank select pass to assign register banks
for generic virtual registers.
This was originally committed as r265573 but broke at least one windows bot.
The problem with the windows bot was that it was using a copy constructor for
the InstructionMappings class and could not synthesize it. Actually, the fact
that this class is not copy constructable is expected and the compiler should
use the move assignment constructor. Marking the problematic assignment
explicitly as using the move constructor has its own problems.
Indeed, with recent clang we get a warning that we may prevent the elision of
the copy by the compiler. A proper fix for both compilers would be to change the
API of getPossibleInstrMapping to take a InstructionMappings as input/output
parameter. This does not feel natural and since GISel is not used on windows
yet, I chose to workaround the problem by not compiling the problematic code on
windows.
llvm-svn: 265604
|
|
|
|
|
|
|
|
|
|
|
| |
instruction on a register bank. This will be used by the register bank select
pass to assign register banks for generic virtual registers." and the follow-on
commits while I find out a way to fix the win7 bot:
http://lab.llvm.org:8011/builders/sanitizer-windows/builds/19882
This reverts commit r265578, r265581, r265584, and r265585.
llvm-svn: 265587
|
|
|
|
|
|
|
|
|
| |
helper class.
The default constructor creates invalid (isValid() == false) instances
and may be used to communicate that a mapping was not found.
llvm-svn: 265581
|
|
|
|
|
|
|
| |
The previous method to get the size was too simple and could fail for
physical registers.
llvm-svn: 265578
|
|
|
|
|
|
|
|
|
| |
on a register bank.
This will be used by the register bank select pass to assign register banks
for generic virtual registers.
llvm-svn: 265573
|
|
|
|
|
|
|
|
| |
helper class.
This checks that all the register operands get a proper mapping.
llvm-svn: 265563
|
|
|
|
|
|
|
|
|
| |
class.
The method checks that the value is fully defined accross the different partial
mappings and that the partial mappings are compatible between each other.
llvm-svn: 265556
|
|
|
|
|
|
|
| |
This verifies that the PartialMapping can be accomadated into the related
register bank.
llvm-svn: 265555
|
|
|
|
| |
llvm-svn: 265553
|
|
|
|
|
|
| |
GlobalISel is not built.
llvm-svn: 265548
|
|
|
|
|
|
|
|
|
| |
As part of the TRI argument of addRegBankCoverage we already have access to
the TargetRegisterClass through the ID of that register class.
Therefore, there is no point in needing a TargetRegisterClass instance,
the ID is enough to get to it.
llvm-svn: 265487
|
|
|
|
| |
llvm-svn: 265475
|
|
|
|
|
|
|
|
| |
targeting jobs.
Now, addRegBankCoverage also adds the subreg-classes not just the
sub-classes of the given register class.
llvm-svn: 265469
|
|
|
|
| |
llvm-svn: 265464
|
|
llvm-svn: 265449
|