Bug 1259 - PPC and SVP64 assembly/disassembly code generation
Summary: PPC and SVP64 assembly/disassembly code generation
Alias: None
Product: Libre-SOC's first SoC
Classification: Unclassified
Component: Milestones (show other bugs)
Version: unspecified
Hardware: All All
: --- enhancement
Assignee: Luke Kenneth Casson Leighton
Depends on:
Blocks: 938
  Show dependency treegraph
Reported: 2024-03-06 18:55 GMT by Dmitry Selyutin
Modified: 2024-03-12 17:08 GMT (History)
1 user (show)

See Also:
NLnet milestone: new binutils
total budget (EUR) for completion of task and all subtasks: 50000
budget (EUR) for this task, excluding subtasks' budget: 50000
parent task for budget allocation:
child tasks for budget allocation: 1140 1199 1201 1202 1203 1257 1258
The table of payments (in EUR) for this task; TOML format:


Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry Selyutin 2024-03-06 18:55:26 GMT
Introduction (part of MoU)

This project intends to extend and improve the PPC assembly/disassembly so that the the assembly and diassembly are generated automatically based on the human-readable specification. The overall idea is that the human-readable specification for PPC and SVP64 assembly and disassembly is converted into C code. The code must be generated in a framework-independent way so that it can be reused by Libre-SOC and other projects, most importantly binutils. We intend to complete the goal set by Libre-SOC project and fill the gaps currently missing.


Task list


# libopid: SVP64 support

libopid currently supports major parts of vanilla PPC assembly and disassembly (at least pure 32-bit instructions we currently have enumerated in openpower-isa repository). When we have everything autogenerated, it's time to make libopid support SVP64 instructions as well.

Budget: 7500
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1200


# binutils: switch PPC code to libopid

binutils code base has its own implementation for PPC SVP64 extensions support. This leads to code duplication, inability to follow the specs and complicates the maintenance. Instead of code duplication, we suggest to switch to libopid, C library, once SVP64 support is completed.

Budget: 7500
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1201


# insndb: introduce human-readable fields format

Currently we hard-code all possible specifications and field mappings. It's difficult to manage these and keep them in sync with the documentation. We must introduce some format to generate the documentation and the code instead.

Budget: 12500
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1199


# maintenance: decouple insndb and libopid

Currently insndb and libopid are parts of our openpower-isa repository. However, this is inconvenient for other projects which will rely on these tools (most notably binutils). Plus, keeping these into openpower-isa makes no sense once we support RISC-V architecture. The task is complicated by the fact that libopid and insndb make use of other openpower-isa components; each of these uses must be addressed separately.

Budget: 5000
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1202


# tests: cross-check PPC Simple-V assembly between binutils and insndb

We don't have tests for binutils which check the most essential SVP64. At least assembly and disassembly as present in openpower-isa tests must be covered.

Budget: 7500
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1203


# insndb: support PPC instruction aliases

insndb currently lacks support for instruction aliases. At least the instructions mentioned as aliases for vanilla PPC must be supported so that both our code and binutils can make use of it.

Budget: 4000
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1140


# administrative activities

Any task includes activities related to issue tracking and monitoring. This includes not only organizing the tasks, but also providing comments to all subtasks, participating in dicussions, budget synchronization and similar activities which rather fit the main task than any of the standalone subtasks.

Budget: 3000
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1257


# documentation, conferences and papers

Participation in conferences and other public events, submitting papers and articles, and other activities of that kind.

Budget: 3000
URL: https://bugs.libre-soc.org/show_bug.cgi?id=1258