Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/49741 )

Change subject: arch-x86: Override make(Read|Write) instead of (read| write)_code.
......................................................................

arch-x86: Override make(Read|Write) instead of (read|write)_code.

Change-Id: Iab077f58e19aa6bfeed555caa31a4c8b3d261059
---
M src/arch/x86/isa/operands.isa
1 file changed, 18 insertions(+), 9 deletions(-)



diff --git a/src/arch/x86/isa/operands.isa b/src/arch/x86/isa/operands.isa
index a549860..e243847 100644
--- a/src/arch/x86/isa/operands.isa
+++ b/src/arch/x86/isa/operands.isa
@@ -55,21 +55,30 @@

 let {{
     class IntReg(IntRegOp):
-        def __init__(self, idx, id, *args, **kwargs):
+        def __init__(self, idx, id, data_size='dataSize', *args, **kwargs):
             super(IntReg, self).__init__(
                     'uqw', idx, 'IsInteger', id, *args, **kwargs)
+            self.attrs['data_size'] = data_size

     class PickedReg(IntReg):
-        def __init__(self, idx, id, size='dataSize'):
-            super(PickedReg, self).__init__(idx, id,
-                    read_code='pick(xc->getRegOperand(this, %(op_idx)s), '
-                              '%(reg_idx)s, ' + size + ')')
+        @overrideInOperand
+        def makeRead(self, predRead, op_idx):
+            return f'{self.base_name} = pick(xc->getRegOperand(' \
+                        f'this, {op_idx}), {self.reg_spec}, ' \
+                        f'{self.data_size});\n'
+
+        def __init__(self, idx, id, data_size='dataSize'):
+            super(PickedReg, self).__init__(idx, id, data_size)

     class SignedPickedReg(IntReg):
-        def __init__(self, idx, id, size='dataSize'):
-            super(SignedPickedReg, self).__init__(idx, id,
-                    read_code='signedPick(xc->getRegOperand(this, '
-                            '%(op_idx)s), %(reg_idx)s, ' + size + ')')
+        @overrideInOperand
+        def makeRead(self, predRead, op_idx):
+            return f'{self.base_name} = signedPick(xc->getRegOperand(' \
+                        f'this, {op_idx}), {self.reg_spec}, ' \
+                        f'{self.data_size});\n'
+
+        def __init__(self, idx, id, data_size='dataSize'):
+            super(SignedPickedReg, self).__init__(idx, id, data_size)

     class FloatReg(FloatRegOp):
         def __init__(self, idx, id):

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/49741
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: Iab077f58e19aa6bfeed555caa31a4c8b3d261059
Gerrit-Change-Number: 49741
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

Reply via email to