Gabe Black has submitted this change. ( 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
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49741
Tested-by: kokoro <noreply+kok...@google.com>
Reviewed-by: Gabe Black <gabe.bl...@gmail.com>
Maintainer: Gabe Black <gabe.bl...@gmail.com>
---
M src/arch/x86/isa/operands.isa
1 file changed, 31 insertions(+), 9 deletions(-)

Approvals:
  Gabe Black: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/arch/x86/isa/operands.isa b/src/arch/x86/isa/operands.isa
index 2eaab4b..afbb8a0 100644
--- a/src/arch/x86/isa/operands.isa
+++ b/src/arch/x86/isa/operands.isa
@@ -55,20 +55,29 @@

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

     class PickedReg(IntReg):
-        def __init__(self, idx, id, size='dataSize'):
-            super().__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().__init__(idx, id, data_size)

     class SignedPickedReg(IntReg):
-        def __init__(self, idx, id, size='dataSize'):
-            super().__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().__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: 67
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Bradford Beckmann <bradford.beckm...@gmail.com>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Matt Sinclair <mattdsincl...@gmail.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
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