Gabe Black has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/36878 )
Change subject: arch: Add some format strings to the parser for reg indexes.
......................................................................
arch: Add some format strings to the parser for reg indexes.
There are two new strings, reg_idx_arr_decl which declares the source
and dest register index arrays, and set_reg_idx_arr which installs them
in the base class.
The set_reg_idx_arr code needs to implicitly figure out what type to use
based on the type of the "this" pointer. The name of the containing
class is not *necessarily* the same as class_name, since the generated
code can use that name, something based on that name, or whatever else
it wants. No other format string (other than class_name itself) uses the
class name internally, so we can't count on that working in existing ISA
definitions.
Change-Id: Id995a46896e71a2fcf3103c34a1e1e67e24f88f4
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36878
Reviewed-by: Giacomo Travaglini <[email protected]>
Maintainer: Giacomo Travaglini <[email protected]>
Tested-by: kokoro <[email protected]>
---
M src/arch/isa_parser/isa_parser.py
1 file changed, 15 insertions(+), 0 deletions(-)
Approvals:
Giacomo Travaglini: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/arch/isa_parser/isa_parser.py
b/src/arch/isa_parser/isa_parser.py
index 999d92f..ff54889 100755
--- a/src/arch/isa_parser/isa_parser.py
+++ b/src/arch/isa_parser/isa_parser.py
@@ -105,6 +105,21 @@
operands = SubOperandList(self.parser, compositeCode,
d.operands)
+ myDict['reg_idx_arr_decl'] = \
+ 'RegId srcRegIdxArr[%d]; RegId destRegIdxArr[%d]' % \
+ (d.operands.numSrcRegs, d.operands.numDestRegs)
+
+ # The reinterpret casts are largely because an array with a
known
+ # size cannot be passed as an argument which is an array with
an
+ # unknown size in C++.
+ myDict['set_reg_idx_arr'] = '''
+ setRegIdxArrays(
+ reinterpret_cast<RegIdArrayPtr>(
+ &std::remove_pointer_t<decltype(this)>::srcRegIdxArr),
+ reinterpret_cast<RegIdArrayPtr>(
+ &std::remove_pointer_t<decltype(this)>::destRegIdxArr));
+ '''
+
myDict['op_decl'] = operands.concatAttrStrings('op_decl')
if operands.readPC or operands.setPC:
myDict['op_decl'] += 'TheISA::PCState
__parserAutoPCState;\n'
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/36878
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: Id995a46896e71a2fcf3103c34a1e1e67e24f88f4
Gerrit-Change-Number: 36878
Gerrit-PatchSet: 10
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Andreas Sandberg <[email protected]>
Gerrit-Reviewer: Daniel Carvalho <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s