[Libre-soc-bugs] [Bug 439] New: generated op_divde appears to be incorrect

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Fri Jul 24 06:03:48 BST 2020


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

            Bug ID: 439
           Summary: generated op_divde appears to be incorrect
           Product: Libre-SOC's first SoC
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: CONFIRMED
          Severity: major
          Priority: ---
         Component: Source Code
          Assignee: lkcl at lkcl.net
          Reporter: programmerjake at gmail.com
                CC: libre-soc-bugs at lists.libre-soc.org
            Blocks: 324
   NLnet milestone: ---

got a backtrace:

Traceback (most recent call last):
  File "src/soc/fu/div/test/test_pipe_caller.py", line 359, in process
    yield from isa_sim.call(opname)
  File "/home/jacob/projects/libreriscv/soc/src/soc/decoder/isa/caller.py",
line 663, in call
    results = info.func(self, *inputs)
  File "/home/jacob/projects/libreriscv/soc/src/soc/decoder/isa/caller.py",
line 761, in decorator
    result = func(*args, **kwargs)
  File "/home/jacob/projects/libreriscv/soc/src/soc/decoder/isa/fixedarith.py",
line 893, in op_divde
    divisor[0:128] = concat([0 * 64], RB)
  File "/home/jacob/projects/libreriscv/soc/src/soc/decoder/selectable_int.py",
line 441, in selectconcat
    res.bits += i.bits
AttributeError: 'list' object has no attribute 'bits'

I'm on soc commit 8bf37997d31250126a664aeb3bd67ac0cd72a70c

generated code:
    @inject()
    def op_divde(self, RA, RB, RT):
        dividend = concat(0, repeat=128)
        dividend[0:128] = concat(RA, concat(0, repeat=64))
        divisor = concat(0, repeat=128)
        divisor[0:128] = concat([0 * 64], RB)
        if eq(divisor, concat(0, repeat=128)):
            overflow = 1
        else:
            result = DIVS(dividend, divisor)
            if eq(result[64:128], SelectableInt(value=0x0, bits=64)):
                RT = result[63:128]
                overflow = 0
            else:
                overflow = 1
        if eq(overflow, 1):
            RT[0:64] = undefined[0:64]
        return (overflow, RT,)


Referenced Bugs:

https://bugs.libre-soc.org/show_bug.cgi?id=324
[Bug 324] create POWER DIV pipeline
-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list