Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
From: bugzilla-daemon@libre-riscv.org
To: libre-riscv-dev@lists.libre-riscv.org
Subject: [libre-riscv-dev] [Bug 269] auto-conversion / parser of POWER ISA Spec v3.0B
Date: Fri, 03 Apr 2020 21:41:10 +0000
Message-ID: <bug-269-13-QZirDshEn4@http.bugs.libre-riscv.org/> (raw)
In-Reply-To: <bug-269-13@http.bugs.libre-riscv.org/>

http://bugs.libre-riscv.org/show_bug.cgi?id=269

--- Comment #13 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
(In reply to Luke Kenneth Casson Leighton from comment #12)

> def cmpi(RA, RB): # pass in regs as parameters
>     code
>     blah
>     return (RS,) # return modified params as results.
> 
> duh.

ok can you take a look?  (run pywriter.py again)

it does mean that we have to establish a "caller" system
which will also understand the number of parameters (called and returned).

in preparation for that, i got the auto-generated code to derive
from something called "ISACaller" - would you like to write that
class?

it should look up the instruction in the dictionary (ISACaller.instrs)
which you can see has been constructed (and appended at the bottom
of the derived class)

it contains the list of "variables" that need to be initialised
to zero (technically, uninitialised), the list of variables that
need to be "read" from the regfile (with a "yield") and, once
the function returns, the list of variables to be written to the
regfile.

to call a given function, you'll need those like this:

spec = self.instrs['cmpi']

actual_function, read_regs, uninit_regs, write_regs = spec

then merge read+unint (actually, move create_args() into
soc.decoder.isa.something and import it)

so: function_arg_names = create_args(read_regs+uninit_regs)

create function_args based on that list

and then call it:

result = actual_function(*function_args)

match the result with write_regs using zip:

for (fname, result) in zip(result, write_regs):
     store result in GPR[fname]

can i leave that with you?

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev

  parent reply index

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-28 11:12 [libre-riscv-dev] [Bug 269] New: " bugzilla-daemon
2020-03-28 17:35 ` [libre-riscv-dev] [Bug 269] " bugzilla-daemon
2020-03-30 15:16 ` bugzilla-daemon
2020-03-31 13:21 ` bugzilla-daemon
2020-04-01 13:42 ` bugzilla-daemon
2020-04-01 13:48 ` bugzilla-daemon
2020-04-02 15:06 ` bugzilla-daemon
2020-04-03 18:37 ` bugzilla-daemon
2020-04-03 18:45 ` bugzilla-daemon
2020-04-03 19:11 ` bugzilla-daemon
2020-04-03 19:45 ` bugzilla-daemon
2020-04-03 20:34 ` bugzilla-daemon
2020-04-03 20:55 ` bugzilla-daemon
2020-04-03 21:41 ` bugzilla-daemon [this message]
2020-04-03 22:55 ` bugzilla-daemon
2020-04-04  3:04 ` bugzilla-daemon
2020-04-04 16:45 ` bugzilla-daemon
2020-04-04 19:27 ` bugzilla-daemon
2020-04-04 19:38 ` bugzilla-daemon
2020-04-04 19:39 ` bugzilla-daemon
2020-04-04 20:28 ` bugzilla-daemon
2020-04-04 20:37 ` bugzilla-daemon
2020-04-04 20:39 ` bugzilla-daemon
2020-04-04 20:46 ` bugzilla-daemon
2020-04-04 21:36 ` bugzilla-daemon
2020-04-04 22:25 ` bugzilla-daemon
2020-04-05  4:28 ` bugzilla-daemon
2020-04-05 18:23 ` bugzilla-daemon
2020-04-05 18:55 ` bugzilla-daemon
2020-04-05 19:05 ` bugzilla-daemon
2020-04-05 19:52 ` bugzilla-daemon
2020-04-05 20:03 ` bugzilla-daemon
2020-04-05 23:27 ` bugzilla-daemon
2020-04-06  2:28 ` bugzilla-daemon
2020-04-06  2:35 ` bugzilla-daemon
2020-04-06  2:39 ` bugzilla-daemon
2020-04-06  3:07 ` bugzilla-daemon
2020-04-06 10:29 ` bugzilla-daemon
2020-04-06 11:18 ` bugzilla-daemon
2020-04-07  0:16 ` bugzilla-daemon
     [not found] <bug-269-13@https.bugs.libre-soc.org/>
2020-04-07 15:55 ` bugzilla-daemon
2020-04-07 16:57 ` bugzilla-daemon
2020-04-27 20:26 ` bugzilla-daemon
2020-04-27 20:28 ` bugzilla-daemon
2020-04-27 20:29 ` bugzilla-daemon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-269-13-QZirDshEn4@http.bugs.libre-riscv.org/ \
    --to=bugzilla-daemon@libre-riscv.org \
    --cc=libre-riscv-dev@lists.libre-riscv.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Libre RISC-V Mailing list Archives (accessible via public-inbox)

Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev

Example config snippet for mirrors


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git