[Libre-soc-isa] [Bug 1161] New: PowerDecoder2 and insndb disagree on scalar EXTRA2 register encoding for >=r32
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Fri Sep 15 04:09:48 BST 2023
https://bugs.libre-soc.org/show_bug.cgi?id=1161
Bug ID: 1161
Summary: PowerDecoder2 and insndb disagree on scalar EXTRA2
register encoding for >=r32
Product: Libre-SOC's first SoC
Version: unspecified
Hardware: PC
OS: Linux
Status: CONFIRMED
Severity: critical
Priority: ---
Component: Specification
Assignee: programmerjake at gmail.com
Reporter: programmerjake at gmail.com
CC: ghostmansd at gmail.com,
libre-soc-isa at lists.libre-soc.org, lkcl at lkcl.net,
programmerjake at gmail.com
Blocks: 1044
NLnet milestone: ---
The originally intended encoding is the tables:
https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/svp64.mdwn;h=c623c123a6b544bf01c863d822d36e0bd1c3fc63;hb=9e64850d9de905e3d785b9e2d8a5cec60c0ec439#l1241
note in particular that scalar EXTRA2 is supposed to be able to address every
register from r0 to r63 (vector is every even register from r0 to r126)
The algorithm in the wiki:
https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/sv/svp64.mdwn;h=c623c123a6b544bf01c863d822d36e0bd1c3fc63;hb=9e64850d9de905e3d785b9e2d8a5cec60c0ec439#l1195
is incorrect afaict, because it addresses registers r0-31 and r64-95, instead
of r0-63.
PowerDecoder2 and/or insndb need to be fixed since it's based on the algorithm
rather than the tables (TBD which).
I discovered this by running:
sv.maddedu *4, *32, 36, 8
and was confused by why it kept reading RB from register 68 not 36
insndb generates the encoding:
printf "\x00\x29\x40\x05\x32\x22\x28\x10" | pysvp64dis
Referenced Bugs:
https://bugs.libre-soc.org/show_bug.cgi?id=1044
[Bug 1044] SVP64 implementation of pow(x,y,z)
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Libre-SOC-ISA
mailing list