[Libre-soc-isa] [Bug 1087] change pseudocode to prevent output register write only when causing a fp trap and output is in same regfile as input
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Sun May 21 11:59:40 BST 2023
https://bugs.libre-soc.org/show_bug.cgi?id=1087
Luke Kenneth Casson Leighton <lkcl at lkcl.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |lkcl at lkcl.net
--- Comment #3 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #1)
> basically we need to add/remove the pseudocode that explicitly sets up
> register state (FRT/RT and FPSCR, not SRR0 or other trap machinery) for
> taking a fp trap.
> see xscvdpsxds for an example -- we need to add/remove the `if vex_flag`
i have absolutely no idea why on earth that would be necessary.
can you please confirm that you understand that there is not and will never be
a change to action what you have recommended? and that you understand
that FRT is a *local* variable returned as a *local* result, where ISACaller
has control *after* the pseudocode function is called as to whether the
result is written to the regfile?
what you should *not* have done is bypass the mechanism that was established
2 years ago for passing in registers and returning them
if name in ('XLEN', 'FPSCR') or name in BFP_FLAG_NAMES:
attr = ast.Name("self", ast.Load())
p[0] = ast.Attribute(attr, name, ast.Load(), lineno=p.lineno(1))
that is *NOT* the correct behaviour.
look at the pseudocode
def op_fcvttg_(self, FRB, ****>>>>> FPSCR <<<<<<*****):
if eq(vex_flag, 0):
RT = copy_assign_rhs(result)
>>> NO! self. <<<< FPSCR.FPRF = copy_assign_rhs(self.undefined(
SelectableInt(value=0x0, bits=5)))
return (RT, *****>>>>> FPSCR <<<<<*****, overflow,)
you should *NOT* have attempted to bypass FPSCR being passed in as
a local variable, bypassed FPSCR as a return result.
updating of FPSCR goes into *check_write()*
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Libre-SOC-ISA
mailing list