[v4,00/12] Add LoongArch support.
Message ID | 20211224092817.728490-1-chenglulu@loongson.cn |
---|---|
Headers |
Return-Path: <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 76956385800E for <patchwork@sourceware.org>; Fri, 24 Dec 2021 09:28:49 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 75CCA3858D28 for <gcc-patches@gcc.gnu.org>; Fri, 24 Dec 2021 09:28:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 75CCA3858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from 5.5.5 (unknown [10.2.5.5]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9DxeZWzksVh1LkDAA--.1328S2; Fri, 24 Dec 2021 17:28:23 +0800 (CST) From: chenglulu <chenglulu@loongson.cn> To: gcc-patches@gcc.gnu.org Subject: [PATCH v4 00/12] Add LoongArch support. Date: Fri, 24 Dec 2021 17:28:05 +0800 Message-Id: <20211224092817.728490-1-chenglulu@loongson.cn> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: AQAAf9DxeZWzksVh1LkDAA--.1328S2 X-Coremail-Antispam: 1UD129KBjvJXoW3JFy8Aw47XFy3XFW8Wr13XFb_yoW3WrWrpr y3Zw13tr48JFsIgr4Dta43Ww1DJr9rKr4a93Waqry8CrW7ZryUZFn5Gr9rZFnxXa15XryI vr1rKa1jva1jka7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUka14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_JF0_Jw1lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc2xSY4AK6svPMxAI w28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr 4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0EwIxG rwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8Jw CI42IY6xAIw20EY4v20xvaj40_Zr0_Wr1UMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvE x4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUkKsUUUUUU= X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Cc: chenglulu@loongson.cn, xuchenghua@loongson.cn, yangyujie@loongson.cn Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> |
Message
chenglulu
Dec. 24, 2021, 9:28 a.m. UTC
The LoongArch architecture (LoongArch) is an Instruction Set Architecture (ISA) that has a Reduced Instruction Set Computer (RISC) style. The documents are on https://loongson.github.io/LoongArch-Documentation/README-EN.html The ELF ABI Documents are on: https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html The binutils has been merged into trunk: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=560b3fe208255ae909b4b1c88ba9c28b09043307 Note: We split -mabi= into -mabi=lp64d/f/s, the new options not support by upstream binutils yet, this GCC port requires the following patch applied to binutils to build. https://github.com/loongson/binutils-gdb/commit/aacb0bf860f02aa5a7dcb76dd0e392bf871c7586 (will be submitted to upstream after gcc side comfirmed) changelog: v1 -> v2 1. Split patch set. 2. Change some code style. 3. Add -mabi=lp64d/f/s options. 4. Change GLIBC_DYNAMIC_LINKER_LP64 name. v2 -> v3 1. Change some code style. 2. Bug fix. v3 -> v4 1. Change some code style. 2. Bug fix. 3. Delete some builtin macros. Add LoongArch support. chenglulu (12): LoongArch Port: Regenerate configure LoongArch Port: gcc build LoongArch Port: Regenerate gcc/configure. LoongArch Port: Machine Decsription files. LoongArch Port: Machine description C files and .h files. LoongArch Port: Builtin functions. LoongArch Port: Builtin macros. LoongArch Port: libgcc LoongArch Port: Regenerate libgcc/configure. LoongArch Port: libgomp LoongArch Port: gcc/testsuite LoongArch Port: Add doc. config/picflag.m4 | 3 + configure | 10 +- configure.ac | 10 +- contrib/config-list.mk | 5 +- .../config/loongarch/loongarch-common.c | 63 + gcc/config.gcc | 400 +- gcc/config/host-linux.c | 2 + gcc/config/loongarch/constraints.md | 212 + gcc/config/loongarch/generic.md | 132 + gcc/config/loongarch/genopts/genstr.sh | 91 + .../loongarch/genopts/loongarch-strings | 58 + gcc/config/loongarch/genopts/loongarch.opt.in | 189 + gcc/config/loongarch/gnu-user.h | 78 + gcc/config/loongarch/la464.md | 132 + gcc/config/loongarch/larchintrin.h | 413 ++ gcc/config/loongarch/linux.h | 50 + gcc/config/loongarch/loongarch-builtins.c | 511 ++ gcc/config/loongarch/loongarch-c.c | 111 + gcc/config/loongarch/loongarch-cpu.c | 206 + gcc/config/loongarch/loongarch-cpu.h | 30 + gcc/config/loongarch/loongarch-def.c | 164 + gcc/config/loongarch/loongarch-def.h | 151 + gcc/config/loongarch/loongarch-driver.c | 187 + gcc/config/loongarch/loongarch-driver.h | 69 + gcc/config/loongarch/loongarch-ftypes.def | 106 + gcc/config/loongarch/loongarch-modes.def | 29 + gcc/config/loongarch/loongarch-opts.c | 582 ++ gcc/config/loongarch/loongarch-opts.h | 86 + gcc/config/loongarch/loongarch-protos.h | 242 + gcc/config/loongarch/loongarch-str.h | 57 + gcc/config/loongarch/loongarch-tune.h | 72 + gcc/config/loongarch/loongarch.c | 6461 +++++++++++++++++ gcc/config/loongarch/loongarch.h | 1291 ++++ gcc/config/loongarch/loongarch.md | 3829 ++++++++++ gcc/config/loongarch/loongarch.opt | 189 + gcc/config/loongarch/predicates.md | 553 ++ gcc/config/loongarch/sync.md | 574 ++ gcc/config/loongarch/t-linux | 53 + gcc/config/loongarch/t-loongarch | 59 + gcc/configure | 85 +- gcc/configure.ac | 33 +- gcc/doc/install.texi | 47 +- gcc/doc/invoke.texi | 201 + gcc/doc/md.texi | 55 + gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C | 2 +- gcc/testsuite/g++.old-deja/g++.abi/ptrmem.C | 2 +- gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C | 2 +- gcc/testsuite/gcc.dg/20020312-2.c | 2 + gcc/testsuite/gcc.dg/loop-8.c | 2 +- .../torture/stackalign/builtin-apply-2.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c | 2 +- .../gcc.target/loongarch/loongarch.exp | 40 + .../gcc.target/loongarch/tst-asm-const.c | 16 + gcc/testsuite/go.test/go-test.exp | 3 + gcc/testsuite/lib/target-supports.exp | 14 + libgcc/config.host | 28 +- libgcc/config/loongarch/crtfastmath.c | 52 + libgcc/config/loongarch/crti.S | 43 + libgcc/config/loongarch/crtn.S | 39 + libgcc/config/loongarch/lib2funcs.c | 0 libgcc/config/loongarch/linux-unwind.h | 80 + libgcc/config/loongarch/sfp-machine.h | 152 + libgcc/config/loongarch/t-crtstuff | 2 + libgcc/config/loongarch/t-elf | 3 + libgcc/config/loongarch/t-loongarch | 9 + libgcc/config/loongarch/t-loongarch64 | 1 + libgcc/config/loongarch/t-softfp-tf | 3 + libgcc/configure | 5 +- libgcc/configure.ac | 2 +- libgomp/configure.tgt | 4 + 70 files changed, 18363 insertions(+), 28 deletions(-) create mode 100644 gcc/common/config/loongarch/loongarch-common.c create mode 100644 gcc/config/loongarch/constraints.md create mode 100644 gcc/config/loongarch/generic.md create mode 100755 gcc/config/loongarch/genopts/genstr.sh create mode 100644 gcc/config/loongarch/genopts/loongarch-strings create mode 100644 gcc/config/loongarch/genopts/loongarch.opt.in create mode 100644 gcc/config/loongarch/gnu-user.h create mode 100644 gcc/config/loongarch/la464.md create mode 100644 gcc/config/loongarch/larchintrin.h create mode 100644 gcc/config/loongarch/linux.h create mode 100644 gcc/config/loongarch/loongarch-builtins.c create mode 100644 gcc/config/loongarch/loongarch-c.c create mode 100644 gcc/config/loongarch/loongarch-cpu.c create mode 100644 gcc/config/loongarch/loongarch-cpu.h create mode 100644 gcc/config/loongarch/loongarch-def.c create mode 100644 gcc/config/loongarch/loongarch-def.h create mode 100644 gcc/config/loongarch/loongarch-driver.c create mode 100644 gcc/config/loongarch/loongarch-driver.h create mode 100644 gcc/config/loongarch/loongarch-ftypes.def create mode 100644 gcc/config/loongarch/loongarch-modes.def create mode 100644 gcc/config/loongarch/loongarch-opts.c create mode 100644 gcc/config/loongarch/loongarch-opts.h create mode 100644 gcc/config/loongarch/loongarch-protos.h create mode 100644 gcc/config/loongarch/loongarch-str.h create mode 100644 gcc/config/loongarch/loongarch-tune.h create mode 100644 gcc/config/loongarch/loongarch.c create mode 100644 gcc/config/loongarch/loongarch.h create mode 100644 gcc/config/loongarch/loongarch.md create mode 100644 gcc/config/loongarch/loongarch.opt create mode 100644 gcc/config/loongarch/predicates.md create mode 100644 gcc/config/loongarch/sync.md create mode 100644 gcc/config/loongarch/t-linux create mode 100644 gcc/config/loongarch/t-loongarch create mode 100644 gcc/testsuite/gcc.target/loongarch/loongarch.exp create mode 100644 gcc/testsuite/gcc.target/loongarch/tst-asm-const.c create mode 100644 libgcc/config/loongarch/crtfastmath.c create mode 100644 libgcc/config/loongarch/crti.S create mode 100644 libgcc/config/loongarch/crtn.S create mode 100644 libgcc/config/loongarch/lib2funcs.c create mode 100644 libgcc/config/loongarch/linux-unwind.h create mode 100644 libgcc/config/loongarch/sfp-machine.h create mode 100644 libgcc/config/loongarch/t-crtstuff create mode 100644 libgcc/config/loongarch/t-elf create mode 100644 libgcc/config/loongarch/t-loongarch create mode 100644 libgcc/config/loongarch/t-loongarch64 create mode 100644 libgcc/config/loongarch/t-softfp-tf