From: Stafford Horne <shorne@gmail.com>
To: GDB patches <gdb-patches@sourceware.org>,
GNU Binutils <binutils@sourceware.org>
Cc: Andrey Bacherov <bandvig@mail.ru>,
Openrisc <openrisc@lists.librecores.org>,
Stafford Horne <shorne@gmail.com>
Subject: [PATCH v2 0/6] OpenRISC orfpx64a32 support
Date: Tue, 09 Apr 2019 21:39:00 -0000 [thread overview]
Message-ID: <20190409213925.32699-1-shorne@gmail.com> (raw)
Hello,
This is basically a resend, but properly including binutils list.
Changes from v1:
- Rebased
- Note Andrey is working on doing his FSF copyright assignment for binutils, sim
This is a set of patches to the OpenRISC assembler and simulator to support
64-bit floating point operations on 32-bit cores using register pairs, see
orfpx64a32 [0].
The original patches were written by Andrey Bacherov and I have made some
updates to get the simulator working and to match ABI updates from GCC 9. The
main GCC 9 ABI change is to have r16 and above pair with an n+2 register rather
than n+1. This is done because openrisc callee saved registers are r14-r30
(even). If a 64-bit value was stored in {r16,r17}, it would always need to be
spilled across function calls as r17 is volatile. Therefore, values of 64-bits
and greater are stored in even reg pairs, such as {r16,r18}.
Example of orfpx64a32 operations:
lf.add.d r4, r6, r8 ; {r3,r4} <= {r5,r6} + {r7,r8}
lf.add.d r16, r20, r24 ; {r16,r18} <= {r20,r22} + {r24,r26}
These binutil patches have been used along with the GCC FPU patches [1] on the
OpenRISC GCC 9 toolchain to test single and double precision floating point
support. The main 'real' implementation of this hardware is Andrey's
or1k_marocchino [2] core implementation which we have been using along with
simulators for verification.
This whole patch series can be found on my github repo [3] as well.
[0] https://openrisc.io/proposals/orfpx64a32
[1] git@github.com:stffrdhrn/gcc.git or1k-fpu-1
[2] https://github.com/openrisc/or1k_marocchino
[3] git@github.com:stffrdhrn/binutils-gdb.git orfpx64a32-2
Stafford Horne (6):
cpu: Add support for orfp64a32 spec
opcodes: Regenerate opcodes for orfp64a32 spec
sim/or1k: Regenerate sim for orfp64a32 spec
sim/common: Wire in df/di conversion
sim/or1k: Add test for 64-bit fpu operations
sim/common: Fix issue with wrong byte order on BE targets
cpu/or1k.cpu | 15 +-
cpu/or1kcommon.cpu | 103 ++++--
cpu/or1korfpx.cpu | 113 +++++--
opcodes/or1k-asm.c | 19 +-
opcodes/or1k-desc.c | 227 +++++++++++--
opcodes/or1k-desc.h | 330 +++++++++----------
opcodes/or1k-dis.c | 19 +-
opcodes/or1k-ibld.c | 114 ++++++-
opcodes/or1k-opc.c | 166 ++++++++--
opcodes/or1k-opc.h | 21 +-
opcodes/or1k-opinst.c | 51 +++
sim/common/cgen-accfp.c | 24 ++
sim/common/cgen-ops.h | 8 +-
sim/or1k/cpu.c | 60 +++-
sim/or1k/cpu.h | 115 ++++++-
sim/or1k/decode.c | 302 ++++++++++++++----
sim/or1k/decode.h | 16 +-
sim/or1k/model.c | 510 ++++++++++++++++++++++++++++++
sim/or1k/sem-switch.c | 296 +++++++++++++++++
sim/or1k/sem.c | 326 +++++++++++++++++++
sim/testsuite/sim/or1k/fpu64a32.S | 172 ++++++++++
21 files changed, 2637 insertions(+), 370 deletions(-)
create mode 100644 sim/testsuite/sim/or1k/fpu64a32.S
--
2.19.1
next reply other threads:[~2019-04-09 21:39 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-09 21:39 Stafford Horne [this message]
2019-04-09 21:39 ` [PATCH v2 4/6] sim/common: Wire in df/di conversion Stafford Horne
2019-04-13 21:59 ` Andrew Burgess
2019-04-09 21:39 ` [PATCH v2 1/6] cpu: Add support for orfp64a32 spec Stafford Horne
2019-04-09 21:40 ` [PATCH v2 3/6] sim/or1k: Regenerate sim " Stafford Horne
2019-04-13 21:40 ` Andrew Burgess
2019-04-14 6:44 ` Stafford Horne
2019-04-09 21:40 ` [PATCH v2 6/6] sim/common: Fix issue with wrong byte order on BE targets Stafford Horne
2019-04-11 22:27 ` Andrew Burgess
2019-04-12 20:21 ` Stafford Horne
2019-04-13 21:30 ` Andrew Burgess
2019-04-09 21:40 ` [PATCH v2 2/6] opcodes: Regenerate opcodes for orfp64a32 spec Stafford Horne
2019-04-11 8:45 ` Nick Clifton
2019-04-09 21:40 ` [PATCH v2 5/6] sim/or1k: Add test for 64-bit fpu operations Stafford Horne
2019-04-13 21:36 ` Andrew Burgess
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190409213925.32699-1-shorne@gmail.com \
--to=shorne@gmail.com \
--cc=bandvig@mail.ru \
--cc=binutils@sourceware.org \
--cc=gdb-patches@sourceware.org \
--cc=openrisc@lists.librecores.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).