[Libre-soc-isa] [Bug 896] DOUBLE2SINGLE doesn't handle generating the return value for inf/nan inputs

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Thu Jul 28 11:09:06 BST 2022


https://bugs.libre-soc.org/show_bug.cgi?id=896

Jacob Lifshay <programmerjake at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
       The table of|                            |jacob=0
  payments (in EUR)|                            |
     for this task;|                            |
        TOML format|                            |
    NLnet milestone|---                         |Future
                 CC|                            |lkcl at lkcl.net
         Resolution|---                         |FIXED
             Status|CONFIRMED                   |RESOLVED
    parent task for|                            |487
  budget allocation|                            |

--- Comment #4 from Jacob Lifshay <programmerjake at gmail.com> ---
I re-converted the code from the PowerISA v3.1B spec. it took me quite a bit
more time than anticipated, since I had to improve the pseudocode parser to let
me figure out where the code was it didn't like -- even then I had to resort to
commenting everything in the pseudo-code and uncommenting stuff until it broke
again.

https://git.libre-soc.org/?p=openpower-isa.git;a=commit;h=d648bc9ed1fc7403e41011ed2d06ba1d08b0939a

I also fixed line number counting, so the parser's parse errors should have the
correct line numbers.

I renamed DOUBLE2SINGLE to FRSP since that's the instruction name, and since I
had to add the FPSCR argument and return it.

I added a helper wrapper DOUBLE2SINGLE that just calls FRSP, so we don't have
to migrate everything right now.

I ran all the test_caller*.py files that mention DOUBLE2SINGLE, they all pass
except for test_caller_svp64_fft.py, which fails in a way that afaict is
unrelated (I also checked on commit 5f111b1fb9 before I made these changes).

Luke, can you add some funding to this bug?

test_caller_svp64_fft.py backtrace:

  File "src/openpower/decoder/isa/test_caller_svp64_fft.py", line 369, in
test_sv_remap_fpmadds_fft_svstep_scalar_temp
    sim = self.run_tst_program(program, svstate=svstate,
  File "src/openpower/decoder/isa/test_caller_svp64_fft.py", line 769, in
run_tst_program
    simulator = run_tst(prog, initial_regs, mem=initial_mem,
  File
"/home/jacob/projects/libreriscv/openpower-isa/src/openpower/decoder/isa/test_runner.py",
line 166, in run_tst
    sim.run()
  File "/home/jacob/projects/libreriscv/nmigen/nmigen/sim/core.py", line 177,
in run
    while self.advance():
  File "/home/jacob/projects/libreriscv/nmigen/nmigen/sim/core.py", line 168,
in advance
    return self._engine.advance()
  File "/home/jacob/projects/libreriscv/nmigen/nmigen/sim/pysim.py", line 319,
in advance
    self._step()
  File "/home/jacob/projects/libreriscv/nmigen/nmigen/sim/pysim.py", line 308,
in _step
    process.run()
  File "/home/jacob/projects/libreriscv/nmigen/nmigen/sim/_pycoro.py", line
125, in run
    self.coroutine.throw(exn)
  File "/home/jacob/projects/libreriscv/nmigen/nmigen/sim/_pycoro.py", line 64,
in run
    command = self.coroutine.send(response)
  File "/home/jacob/projects/libreriscv/nmigen/nmigen/sim/core.py", line 82, in
wrapper
    yield from process()
  File
"/home/jacob/projects/libreriscv/openpower-isa/src/openpower/decoder/isa/test_runner.py",
line 154, in process
    yield from simulator.execute_one()
  File
"/home/jacob/projects/libreriscv/openpower-isa/src/openpower/decoder/isa/caller.py",
line 1044, in execute_one
    yield from self.call(opname)         # execute the instruction
  File
"/home/jacob/projects/libreriscv/openpower-isa/src/openpower/decoder/isa/caller.py",
line 1447, in call
    nia_update = (yield from self.check_step_increment(results, rc_en,
  File
"/home/jacob/projects/libreriscv/openpower-isa/src/openpower/decoder/isa/caller.py",
line 1691, in check_step_increment
    return nia_update
UnboundLocalError: local variable 'nia_update' referenced before assignment

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Libre-SOC-ISA mailing list