Skip to content

Commit

Permalink
Make InstOpCode an extensible class on ARM
Browse files Browse the repository at this point in the history
Inherit `OMR::InstOpCodeConnector` like on all other platforms. We had
to adopt the use of the common pseudo-instructions in the ARM codegen to
make this change.
  • Loading branch information
fjeremic committed Jun 8, 2021
1 parent b173e31 commit bf65603
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 29 deletions.
28 changes: 4 additions & 24 deletions compiler/arm/codegen/InstOpCode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,37 +22,17 @@
#ifndef TR_ARM_INSTOPCODE_INCL
#define TR_ARM_INSTOPCODE_INCL


#include "codegen/OMRInstOpCode.hpp"

namespace TR
{

/*
* TODO: this is temporary so that ARM instruction can be re-shaped first.
* Once ARM instruction is done, then this needs to be done properly.
*/
class InstOpCode
class InstOpCode : public OMR::InstOpCodeConnector
{
public:

enum Mnemonic
{
BAD
};

InstOpCode(); // TODO: this needs to be private later
InstOpCode(Mnemonic m): _mnemonic(m) {}

Mnemonic getMnemonic() {return _mnemonic;}
void setMnemonic(Mnemonic op) {_mnemonic = op;}

private:

Mnemonic _mnemonic;

/* OMR TODO: Delegating method; need to be removed and replace with getMnemonic */
//TR::InstOpCode::Mnemonic getOpCodeValue() { return _mnemonic;; }
//TR::InstOpCode::Mnemonic setOpCodeValue(TR::InstOpCode::Mnemonic op) { return _mnemonic = op; }
InstOpCode() : OMR::InstOpCodeConnector(bad) {}
InstOpCode(TR::InstOpCode::Mnemonic m) : OMR::InstOpCodeConnector(m) {}

};
}
Expand Down
10 changes: 5 additions & 5 deletions compiler/arm/codegen/OMRInstruction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,15 @@ OMR::ARM::Instruction::Instruction(TR::CodeGenerator *cg, TR::InstOpCode::Mnemon

// TODO: need to fix the InstOpCode initialization
OMR::ARM::Instruction::Instruction(TR::Node *node, TR::CodeGenerator *cg)
: OMR::InstructionConnector(cg, TR::InstOpCode::BAD, node)
: OMR::InstructionConnector(cg, TR::InstOpCode::bad, node)
{
self()->setOpCodeValue(ARMOp_bad);
self()->setConditionCode(ARMConditionCodeAL);
self()->setDependencyConditions(NULL);
}

OMR::ARM::Instruction::Instruction(TR_ARMOpCodes op, TR::Node *node, TR::CodeGenerator *cg)
: OMR::InstructionConnector(cg, TR::InstOpCode::BAD, node)
: OMR::InstructionConnector(cg, TR::InstOpCode::bad, node)
{
self()->setOpCodeValue(op);
self()->setConditionCode(ARMConditionCodeAL);
Expand All @@ -97,7 +97,7 @@ OMR::ARM::Instruction::Instruction(TR::Instruction *precedingInstruction,
TR_ARMOpCodes op,
TR::Node *node,
TR::CodeGenerator *cg)
: OMR::InstructionConnector(cg, precedingInstruction, TR::InstOpCode::BAD, node)
: OMR::InstructionConnector(cg, precedingInstruction, TR::InstOpCode::bad, node)
{
self()->setOpCodeValue(op);
self()->setConditionCode(ARMConditionCodeAL);
Expand All @@ -108,7 +108,7 @@ OMR::ARM::Instruction::Instruction(TR_ARMOpCodes op,
TR::Node *node,
TR::RegisterDependencyConditions *cond,
TR::CodeGenerator *cg)
: OMR::InstructionConnector(cg, TR::InstOpCode::BAD, node)
: OMR::InstructionConnector(cg, TR::InstOpCode::bad, node)
{
self()->setOpCodeValue(op);
self()->setConditionCode(ARMConditionCodeAL);
Expand All @@ -122,7 +122,7 @@ OMR::ARM::Instruction::Instruction(TR::Instruction *precedin
TR::Node *node,
TR::RegisterDependencyConditions *cond,
TR::CodeGenerator *cg)
: OMR::InstructionConnector(cg, precedingInstruction, TR::InstOpCode::BAD, node)
: OMR::InstructionConnector(cg, precedingInstruction, TR::InstOpCode::bad, node)
{
self()->setOpCodeValue(op);
self()->setConditionCode(ARMConditionCodeAL);
Expand Down

0 comments on commit bf65603

Please sign in to comment.