mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Allow patterns to refer to physical registers that belong to multiple
register classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28323 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -163,6 +163,23 @@ void CodeGenTarget::ReadRegisterClasses() const {
|
||||
RegisterClasses.assign(RegClasses.begin(), RegClasses.end());
|
||||
}
|
||||
|
||||
std::vector<unsigned char> CodeGenTarget::getRegisterVTs(Record *R) const {
|
||||
std::vector<unsigned char> Result;
|
||||
const std::vector<CodeGenRegisterClass> &RCs = getRegisterClasses();
|
||||
for (unsigned i = 0, e = RCs.size(); i != e; ++i) {
|
||||
const CodeGenRegisterClass &RC = RegisterClasses[i];
|
||||
for (unsigned ei = 0, ee = RC.Elements.size(); ei != ee; ++ei) {
|
||||
if (R == RC.Elements[ei]) {
|
||||
const std::vector<MVT::ValueType> &InVTs = RC.getValueTypes();
|
||||
for (unsigned i = 0, e = InVTs.size(); i != e; ++i)
|
||||
Result.push_back(InVTs[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
||||
CodeGenRegisterClass::CodeGenRegisterClass(Record *R) : TheDef(R) {
|
||||
// Rename anonymous register classes.
|
||||
if (R->getName().size() > 9 && R->getName()[9] == '.') {
|
||||
|
Reference in New Issue
Block a user