Skip to content

Commit

Permalink
Common RealRegister field in RegisterDependencyStruct
Browse files Browse the repository at this point in the history
Hoist the TR::RealRegister::RegNum field from each architecture into
the base class so that a single implementation can be shared.  Move the
getter and setter as well.

Delete architecture-specific RegisterDependencyStructs that are left
empty because of this.

Signed-off-by: Daryl Maier <maier@ca.ibm.com>
  • Loading branch information
0xdaryl committed Nov 9, 2020
1 parent de011bc commit ab9c853
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 157 deletions.
61 changes: 0 additions & 61 deletions compiler/aarch64/codegen/OMRRegisterDependencyStruct.hpp

This file was deleted.

10 changes: 0 additions & 10 deletions compiler/arm/codegen/OMRRegisterDependencyStruct.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@ namespace OMR { typedef OMR::ARM::RegisterDependency RegisterDependencyConnector

#include "compiler/codegen/OMRRegisterDependencyStruct.hpp"

#include "codegen/RealRegister.hpp"

#define DefinesDependentRegister 0x01
#define ReferencesDependentRegister 0x02
#define UsesDependentRegister (ReferencesDependentRegister | DefinesDependentRegister)
#define ExcludeGPR0InAssigner 0x80

namespace OMR
Expand All @@ -50,11 +45,6 @@ namespace ARM

struct RegisterDependency: OMR::RegisterDependency
{
TR::RealRegister::RegNum _realRegister;

TR::RealRegister::RegNum getRealRegister() {return _realRegister;}
TR::RealRegister::RegNum setRealRegister(TR::RealRegister::RegNum r) { return (_realRegister = r); }

uint32_t getExcludeGPR0() {return _flags & ExcludeGPR0InAssigner;}
uint32_t setExcludeGPR0() {return (_flags |= ExcludeGPR0InAssigner);}
uint32_t resetExcludeGPR0() {return (_flags &= ~ExcludeGPR0InAssigner);}
Expand Down
19 changes: 17 additions & 2 deletions compiler/codegen/OMRRegisterDependencyStruct.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ namespace OMR { typedef OMR::RegisterDependency RegisterDependencyConnector; }

#include <stdint.h>
#include "codegen/Register.hpp"
#include "codegen/RealRegister.hpp"

#define DefinesDependentRegister 0x01
#define ReferencesDependentRegister 0x02
Expand All @@ -43,8 +44,11 @@ namespace OMR

struct RegisterDependency
{
uint8_t _flags;
TR::Register *_virtualRegister;
uint8_t _flags;

TR::Register *_virtualRegister;

TR::RealRegister::RegNum _realRegister;

uint32_t getFlags() {return _flags;}
uint32_t assignFlags(uint8_t f) {return _flags = f;}
Expand All @@ -64,6 +68,17 @@ struct RegisterDependency
TR::Register *getRegister() {return _virtualRegister;}
TR::Register *setRegister(TR::Register *r) {return (_virtualRegister = r);}

/**
* @return RealRegister enum for this register dependency
*/
TR::RealRegister::RegNum getRealRegister() {return _realRegister;}

/**
* @brief Set RealRegister enum value for this register dependency
*
* @param[in] r : RealRegister enum value
*/
TR::RealRegister::RegNum setRealRegister(TR::RealRegister::RegNum r) { return (_realRegister = r); }
};
}

Expand Down
12 changes: 0 additions & 12 deletions compiler/p/codegen/OMRRegisterDependencyStruct.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@ namespace OMR { typedef OMR::Power::RegisterDependency RegisterDependencyConnect

#include "compiler/codegen/OMRRegisterDependencyStruct.hpp"

#include "codegen/RealRegister.hpp"

#define DefinesDependentRegister 0x01
#define ReferencesDependentRegister 0x02
#define UsesDependentRegister (ReferencesDependentRegister | DefinesDependentRegister)
#define ExcludeGPR0InAssigner 0x80

namespace OMR
Expand All @@ -50,16 +45,9 @@ namespace Power

struct RegisterDependency: OMR::RegisterDependency
{
TR::RealRegister::RegNum _realRegister;

TR::RealRegister::RegNum getRealRegister() {return _realRegister;}
TR::RealRegister::RegNum setRealRegister(TR::RealRegister::RegNum r) { return (_realRegister = r); }

uint32_t getExcludeGPR0() {return _flags & ExcludeGPR0InAssigner;}
uint32_t setExcludeGPR0() {return (_flags |= ExcludeGPR0InAssigner);}
uint32_t resetExcludeGPR0() {return (_flags &= ~ExcludeGPR0InAssigner);}


};

}
Expand Down
61 changes: 0 additions & 61 deletions compiler/riscv/codegen/OMRRegisterDependencyStruct.hpp

This file was deleted.

7 changes: 0 additions & 7 deletions compiler/x/codegen/OMRRegisterDependencyStruct.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ namespace OMR { typedef OMR::X86::RegisterDependency RegisterDependencyConnector
#include "compiler/codegen/OMRRegisterDependencyStruct.hpp"

#include <stdint.h>
#include "codegen/RealRegister.hpp"

#define GlobalRegisterFPDependency 0x04

Expand All @@ -63,14 +62,8 @@ namespace X86

struct RegisterDependency : OMR::RegisterDependency
{
TR::RealRegister::RegNum _realRegister;

TR::RealRegister::RegNum getRealRegister() {return _realRegister;}
TR::RealRegister::RegNum setRealRegister(TR::RealRegister::RegNum r) { return (_realRegister = r); }

uint32_t getGlobalFPRegister() {return _flags & GlobalRegisterFPDependency;}
uint32_t setGlobalFPRegister() {return (_flags |= GlobalRegisterFPDependency);}

};
}
}
Expand Down
4 changes: 0 additions & 4 deletions compiler/z/codegen/OMRRegisterDependencyStruct.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,6 @@ namespace Z
{
struct RegisterDependency : OMR::RegisterDependency
{
TR::RealRegister::RegNum _realRegister;

TR::RealRegister::RegNum getRealRegister() {return _realRegister;}
TR::RealRegister::RegNum setRealRegister(TR::RealRegister::RegNum r) { return (_realRegister = r); }
};
}
}
Expand Down

0 comments on commit ab9c853

Please sign in to comment.