From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 39489 invoked by alias); 9 Apr 2019 21:39:45 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 39469 invoked by uid 89); 9 Apr 2019 21:39:45 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-15.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=proposals, Wire, HX-Spam-Relays-External:209.85.210.193, H*RU:209.85.210.193 X-HELO: mail-pf1-f193.google.com Received: from mail-pf1-f193.google.com (HELO mail-pf1-f193.google.com) (209.85.210.193) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 09 Apr 2019 21:39:43 +0000 Received: by mail-pf1-f193.google.com with SMTP id 188so41066pfd.8; Tue, 09 Apr 2019 14:39:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fqEu7KpKgZraapU6R836xmdVTRt9lK57ukj46eGX8co=; b=KHz44kBlWSjDPCLqMPcRgihQapFexIn2QB+q6g+UQv1L0G1hAdOFCJcBym4FGkMb1J hL7kajWtDN29cHoG18VzTfUeyuM4rk62GXO5NBo92BH4gUbaGr9ei6R54dIT/JDJ/wte 3i4N5FUMkgoXoJ1vq4oY5KNQxsaMLCMaGp9EjViumzAPTJrg6fxzxpod266Gq3N5PuFZ l58fETAAbepQ7yqb0t2Mu+LxyM87h1NJNKyFINaWYJDXyhrHvKjinZZ69CbIPOG5Qyih /ZZcFDTHmEaAXHEQSE44ZWD/B4N5MFZ5Q2pax+1LnPi1H9W4DYwdVLBExd2MJK8z7wxK 2TSg== Return-Path: Received: from localhost (g191.61-115-60.ppp.wakwak.ne.jp. [61.115.60.191]) by smtp.gmail.com with ESMTPSA id h4sm42850490pgn.20.2019.04.09.14.39.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Apr 2019 14:39:40 -0700 (PDT) From: Stafford Horne To: GDB patches , GNU Binutils Cc: Andrey Bacherov , Openrisc , Stafford Horne Subject: [PATCH v2 0/6] OpenRISC orfpx64a32 support Date: Tue, 09 Apr 2019 21:39:00 -0000 Message-Id: <20190409213925.32699-1-shorne@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2019-04/txt/msg00088.txt.bz2 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