[Libre-soc-bugs] [Bug 340] formal proof of POWER9 SHIFTROT pipeline needed
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Sat Sep 5 00:51:31 BST 2020
https://bugs.libre-soc.org/show_bug.cgi?id=340
--- Comment #28 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Samuel A. Falvo II from comment #25)
> I'm running into a situation where computing ((1ULL << 63) << 0) == 0
> instead of ((1ULL << 63) << 0) == (1ULL << 63).
>
> # main assertion of arithmetic operations
> with m.Switch(itype):
>
> # left-shift: 64/32-bit
> with m.Case(MicrOp.OP_SHL):
> comb += Assume(ra == 0)
> with m.If(rec.is_32bit):
i think we should have "comb += Assume(b[5] == 0) here, to match the
behaviour of slw (v3.0B spec, p107)
> comb += Assert(o[0:32] == (rs << b[0:6])[0:32])
> comb += Assert(o[32:64] == 0)
> with m.Else():
add "comb += Assume(b[6] == 0) here and i believe things will "work"
> comb += DESIRED_sig.eq((rs << b[0:7])[0:64])
> comb += Assert(o == DESIRED_sig) #<--- assertion fails
> here.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list