From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 105410 invoked by alias); 6 Sep 2018 11:12:41 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 105392 invoked by uid 89); 6 Sep 2018 11:12:40 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-6.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_3,KAM_EU,KAM_SHORT,SPF_PASS autolearn=ham version=3.3.2 spammy=H*F:D*eu, UD:eu, H*Ad:D*eu, HX-OutGoing-Spam-Status:score X-HELO: server28.superhosting.bg Received: from server28.superhosting.bg (HELO server28.superhosting.bg) (217.174.156.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 06 Sep 2018 11:12:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dinux.eu; s=default; h=Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:MIME-Version :Content-Type:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=WN2t7g1Zor8tMBMDZJMjd8JmIMGozre0Uy8PZlf79F4=; b=IHT+y6cp0ulIS9RyiGLBNF8e2T GZtbWwpwp0rBly2cUyMV3REVtUNFhnwmjlbAKjK+n1OaLXzcwtcaTWcsJjaTdhznlb/SKj+OO8zOn 9zzQtlu0R7phJZgfOedJlhZr6XtRKyUegMAc8Fj3dzI08dJDbYXTEaR8Anhse9mJru1LHW2sSM2cc GzTr4tKnHwDRis7571VEmSOjchNynvYQSjE9n3gaxsvf1cSEbg9v3mkZiIsz391ER7KT1B/C5dHpi mQgqGdpe/5bn59zt+Dd5WBiv/MUu58yXyxoSlQepi9Na27vLMRfr0u6qjs71j73bqREvyno9Fpuby emtSXK5A==; Received: from [95.87.234.74] (port=49506 helo=localhost.localdomain) by server28.superhosting.bg with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1fxsD5-0001sy-PY; Thu, 06 Sep 2018 14:12:31 +0300 From: Dimitar Dimitrov To: gcc-patches@gcc.gnu.org Cc: Dimitar Dimitrov Subject: [PATCH v4 00/10] New backend for the TI PRU processor Date: Thu, 06 Sep 2018 11:12:00 -0000 Message-Id: <20180906111217.24365-1-dimitar@dinux.eu> X-OutGoing-Spam-Status: No, score=-0.5 X-IsSubscribed: yes X-SW-Source: 2018-09/txt/msg00392.txt.bz2 This patch series adds support for the TI PRU I/O processor to GCC. This fourth patch set revision addresses comments from v1 [1], v2 [2] and v3 [3]. Test results can be downloaded from here: http://dinux.eu/gnupru/testresults/20180828-f4455d5f/ Changes since patch series v3 [3]: - Added blockage in epilogue before SP restore. - Folded "mov" patterns. [1] http://gcc.gnu.org/ml/gcc-patches/2018-06/msg00775.html [2] http://gcc.gnu.org/ml/gcc-patches/2018-07/msg01779.html [3] http://gcc.gnu.org/ml/gcc-patches/2018-08/msg00927.html Dimitar Dimitrov (10): Initial TI PRU GCC port Initial TI PRU libgcc port testsuite: Add PRU tests testsuite: Add check for overflowed IMEM region to testsuite testsuite: Add check for unsupported TI ABI PRU features to testsuite testsuite: Remove PRU from test cases requiring hosted environment testsuite: Define PRU stack usage testsuite: Mark that PRU has one-cycle jumps testsuite: Mark that PRU uses all function pointer bits testsuite: Mark testsuite that PRU has different calling convention configure.ac | 7 + gcc/common/config/pru/pru-common.c | 36 + gcc/config.gcc | 9 + gcc/config/pru/alu-zext.md | 178 ++ gcc/config/pru/constraints.md | 88 + gcc/config/pru/predicates.md | 224 ++ gcc/config/pru/pru-opts.h | 31 + gcc/config/pru/pru-passes.c | 234 ++ gcc/config/pru/pru-pragma.c | 90 + gcc/config/pru/pru-protos.h | 72 + gcc/config/pru/pru.c | 3008 ++++++++++++++++++++ gcc/config/pru/pru.h | 551 ++++ gcc/config/pru/pru.md | 946 ++++++ gcc/config/pru/pru.opt | 53 + gcc/config/pru/t-pru | 31 + gcc/doc/extend.texi | 21 + gcc/doc/invoke.texi | 55 + gcc/doc/md.texi | 22 + gcc/testsuite/g++.old-deja/g++.abi/ptrmem.C | 2 +- gcc/testsuite/gcc.c-torture/execute/20101011-1.c | 3 + gcc/testsuite/gcc.dg/20020312-2.c | 2 + gcc/testsuite/gcc.dg/builtin-apply2.c | 2 +- gcc/testsuite/gcc.dg/stack-usage-1.c | 2 + .../gcc.dg/torture/stackalign/builtin-apply-2.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-14.c | 2 +- gcc/testsuite/gcc.target/pru/abi-arg-struct.c | 164 ++ gcc/testsuite/gcc.target/pru/ashiftrt.c | 13 + gcc/testsuite/gcc.target/pru/builtins-1.c | 12 + gcc/testsuite/gcc.target/pru/builtins-error.c | 6 + gcc/testsuite/gcc.target/pru/clearbit.c | 13 + gcc/testsuite/gcc.target/pru/loop-asm.c | 19 + gcc/testsuite/gcc.target/pru/loop-dowhile.c | 45 + gcc/testsuite/gcc.target/pru/loop-hi-1.c | 38 + gcc/testsuite/gcc.target/pru/loop-hi-2.c | 17 + gcc/testsuite/gcc.target/pru/loop-qi-1.c | 38 + gcc/testsuite/gcc.target/pru/loop-qi-2.c | 17 + gcc/testsuite/gcc.target/pru/loop-short-1.c | 53 + gcc/testsuite/gcc.target/pru/loop-short-2.c | 21 + gcc/testsuite/gcc.target/pru/loop-si-1.c | 41 + gcc/testsuite/gcc.target/pru/loop-si-2.c | 20 + .../gcc.target/pru/loop-u8_pcrel_overflow.c | 42 + gcc/testsuite/gcc.target/pru/loop-ubyte-1.c | 30 + gcc/testsuite/gcc.target/pru/loop-ubyte-2.c | 18 + .../pru/lra-framepointer-fragmentation-1.c | 33 + .../pru/lra-framepointer-fragmentation-2.c | 61 + gcc/testsuite/gcc.target/pru/mabi-ti-1.c | 10 + gcc/testsuite/gcc.target/pru/mabi-ti-2.c | 15 + gcc/testsuite/gcc.target/pru/mabi-ti-3.c | 12 + gcc/testsuite/gcc.target/pru/mabi-ti-4.c | 14 + gcc/testsuite/gcc.target/pru/mabi-ti-5.c | 33 + gcc/testsuite/gcc.target/pru/mabi-ti-6.c | 12 + gcc/testsuite/gcc.target/pru/mabi-ti-7.c | 21 + gcc/testsuite/gcc.target/pru/pr64366.c | 128 + gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c | 22 + gcc/testsuite/gcc.target/pru/pru.exp | 41 + gcc/testsuite/gcc.target/pru/qbbc-1.c | 29 + gcc/testsuite/gcc.target/pru/qbbc-2.c | 15 + gcc/testsuite/gcc.target/pru/qbbc-3.c | 15 + gcc/testsuite/gcc.target/pru/qbbs-1.c | 29 + gcc/testsuite/gcc.target/pru/qbbs-2.c | 15 + gcc/testsuite/gcc.target/pru/setbit.c | 13 + .../gcc.target/pru/zero_extend-and-hisi.c | 16 + .../gcc.target/pru/zero_extend-and-qihi.c | 16 + .../gcc.target/pru/zero_extend-and-qisi.c | 16 + gcc/testsuite/gcc.target/pru/zero_extend-hisi.c | 43 + gcc/testsuite/gcc.target/pru/zero_extend-qihi.c | 43 + gcc/testsuite/gcc.target/pru/zero_extend-qisi.c | 43 + gcc/testsuite/lib/gcc-dg.exp | 16 + gcc/testsuite/lib/target-supports.exp | 38 +- gcc/testsuite/lib/target-utils.exp | 12 + libgcc/config.host | 7 + libgcc/config/pru/asri.c | 33 + libgcc/config/pru/eqd.c | 45 + libgcc/config/pru/eqf.c | 45 + libgcc/config/pru/ged.c | 45 + libgcc/config/pru/gef.c | 45 + libgcc/config/pru/gtd.c | 45 + libgcc/config/pru/gtf.c | 45 + libgcc/config/pru/led.c | 45 + libgcc/config/pru/lef.c | 45 + libgcc/config/pru/lib2bitcountHI.c | 43 + libgcc/config/pru/lib2divHI.c | 42 + libgcc/config/pru/lib2divQI.c | 42 + libgcc/config/pru/lib2divSI.c | 48 + libgcc/config/pru/libgcc-eabi.ver | 88 + libgcc/config/pru/ltd.c | 45 + libgcc/config/pru/ltf.c | 45 + libgcc/config/pru/mpyll.S | 57 + libgcc/config/pru/pru-abi.h | 109 + libgcc/config/pru/pru-asm.h | 35 + libgcc/config/pru/pru-divmod.h | 117 + libgcc/config/pru/sfp-machine.h | 125 + libgcc/config/pru/t-pru | 50 + 98 files changed, 8284 insertions(+), 11 deletions(-) create mode 100644 gcc/common/config/pru/pru-common.c create mode 100644 gcc/config/pru/alu-zext.md create mode 100644 gcc/config/pru/constraints.md create mode 100644 gcc/config/pru/predicates.md create mode 100644 gcc/config/pru/pru-opts.h create mode 100644 gcc/config/pru/pru-passes.c create mode 100644 gcc/config/pru/pru-pragma.c create mode 100644 gcc/config/pru/pru-protos.h create mode 100644 gcc/config/pru/pru.c create mode 100644 gcc/config/pru/pru.h create mode 100644 gcc/config/pru/pru.md create mode 100644 gcc/config/pru/pru.opt create mode 100644 gcc/config/pru/t-pru create mode 100644 gcc/testsuite/gcc.target/pru/abi-arg-struct.c create mode 100644 gcc/testsuite/gcc.target/pru/ashiftrt.c create mode 100644 gcc/testsuite/gcc.target/pru/builtins-1.c create mode 100644 gcc/testsuite/gcc.target/pru/builtins-error.c create mode 100644 gcc/testsuite/gcc.target/pru/clearbit.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-asm.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-dowhile.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-hi-1.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-hi-2.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-qi-1.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-qi-2.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-short-1.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-short-2.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-si-1.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-si-2.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-u8_pcrel_overflow.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-ubyte-1.c create mode 100644 gcc/testsuite/gcc.target/pru/loop-ubyte-2.c create mode 100644 gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-1.c create mode 100644 gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-2.c create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-1.c create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-2.c create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-3.c create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-4.c create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-5.c create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-6.c create mode 100644 gcc/testsuite/gcc.target/pru/mabi-ti-7.c create mode 100644 gcc/testsuite/gcc.target/pru/pr64366.c create mode 100644 gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c create mode 100644 gcc/testsuite/gcc.target/pru/pru.exp create mode 100644 gcc/testsuite/gcc.target/pru/qbbc-1.c create mode 100644 gcc/testsuite/gcc.target/pru/qbbc-2.c create mode 100644 gcc/testsuite/gcc.target/pru/qbbc-3.c create mode 100644 gcc/testsuite/gcc.target/pru/qbbs-1.c create mode 100644 gcc/testsuite/gcc.target/pru/qbbs-2.c create mode 100644 gcc/testsuite/gcc.target/pru/setbit.c create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-and-hisi.c create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-and-qihi.c create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-and-qisi.c create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-hisi.c create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-qihi.c create mode 100644 gcc/testsuite/gcc.target/pru/zero_extend-qisi.c create mode 100644 libgcc/config/pru/asri.c create mode 100644 libgcc/config/pru/eqd.c create mode 100644 libgcc/config/pru/eqf.c create mode 100644 libgcc/config/pru/ged.c create mode 100644 libgcc/config/pru/gef.c create mode 100644 libgcc/config/pru/gtd.c create mode 100644 libgcc/config/pru/gtf.c create mode 100644 libgcc/config/pru/led.c create mode 100644 libgcc/config/pru/lef.c create mode 100644 libgcc/config/pru/lib2bitcountHI.c create mode 100644 libgcc/config/pru/lib2divHI.c create mode 100644 libgcc/config/pru/lib2divQI.c create mode 100644 libgcc/config/pru/lib2divSI.c create mode 100644 libgcc/config/pru/libgcc-eabi.ver create mode 100644 libgcc/config/pru/ltd.c create mode 100644 libgcc/config/pru/ltf.c create mode 100644 libgcc/config/pru/mpyll.S create mode 100644 libgcc/config/pru/pru-abi.h create mode 100644 libgcc/config/pru/pru-asm.h create mode 100644 libgcc/config/pru/pru-divmod.h create mode 100644 libgcc/config/pru/sfp-machine.h create mode 100644 libgcc/config/pru/t-pru -- 2.11.0