Gabe Black has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/49719 )
Change subject: arch: Introduce an intermediate RegOperand class in
operand_types.py.
......................................................................
arch: Introduce an intermediate RegOperand class in operand_types.py.
There are a number of operand types which are registers. Define a
RegOperand type which they can all inherit from to get register generic
functionality. This will also become a way to add generic register types
with malleable properties at the ISA level.
Change-Id: I01a1d5d133d8f64106d005a744631f64e6808e57
---
M src/arch/isa_parser/operand_types.py
1 file changed, 9 insertions(+), 24 deletions(-)
diff --git a/src/arch/isa_parser/operand_types.py
b/src/arch/isa_parser/operand_types.py
index 66d755e..f93579b 100755
--- a/src/arch/isa_parser/operand_types.py
+++ b/src/arch/isa_parser/operand_types.py
@@ -170,13 +170,13 @@
# to avoid 'uninitialized variable' errors from the compiler.
return self.ctype + ' ' + self.base_name + ' = 0;\n';
-
-class IntRegOperand(Operand):
- reg_class = 'IntRegClass'
-
+class RegOperand(Operand):
def isReg(self):
return 1
+class IntRegOperand(RegOperand):
+ reg_class = 'IntRegClass'
+
def isIntReg(self):
return 1
@@ -243,12 +243,9 @@
return wb
-class FloatRegOperand(Operand):
+class FloatRegOperand(RegOperand):
reg_class = 'FloatRegClass'
- def isReg(self):
- return 1
-
def isFloatReg(self):
return 1
@@ -306,16 +303,13 @@
}''' % (self.ctype, self.base_name, wp)
return wb
-class VecRegOperand(Operand):
+class VecRegOperand(RegOperand):
reg_class = 'VecRegClass'
def __init__(self, parser, full_name, ext, is_src, is_dest):
Operand.__init__(self, parser, full_name, ext, is_src, is_dest)
self.elemExt = None
- def isReg(self):
- return 1
-
def isVecReg(self):
return 1
@@ -453,12 +447,9 @@
if self.is_dest:
self.op_rd = self.makeReadW(predWrite) + self.op_rd
-class VecElemOperand(Operand):
+class VecElemOperand(RegOperand):
reg_class = 'VecElemClass'
- def isReg(self):
- return 1
-
def isVecElem(self):
return 1
@@ -492,12 +483,9 @@
return f'\n\txc->setRegOperand(this, {self.dest_reg_idx}, ' \
f'&{self.base_name});'
-class VecPredRegOperand(Operand):
+class VecPredRegOperand(RegOperand):
reg_class = 'VecPredRegClass'
- def isReg(self):
- return 1
-
def isVecPredReg(self):
return 1
@@ -572,12 +560,9 @@
if self.is_dest:
self.op_rd = self.makeReadW(predWrite) + self.op_rd
-class CCRegOperand(Operand):
+class CCRegOperand(RegOperand):
reg_class = 'CCRegClass'
- def isReg(self):
- return 1
-
def isCCReg(self):
return 1
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/49719
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I01a1d5d133d8f64106d005a744631f64e6808e57
Gerrit-Change-Number: 49719
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s