From patchwork Fri Jan 5 03:40:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: chenglulu X-Patchwork-Id: 18741 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp6006617dyb; Thu, 4 Jan 2024 19:41:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IFTj7e+xKE9Eo0bpLa1MgT6GjEl5ANb2G5br2s6SLh6wnk6+p4pslYHLqKjwXxkVeHN1Knt X-Received: by 2002:ac8:5804:0:b0:427:91cc:19fc with SMTP id g4-20020ac85804000000b0042791cc19fcmr2022557qtg.126.1704426100821; Thu, 04 Jan 2024 19:41:40 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1704426100; cv=pass; d=google.com; s=arc-20160816; b=yem59DWEN0dV7EjpPHOXSot9w+iDQF9lnZU75Xg17wHioS/asB2ScObGKkSgF3601F u+s+JTZkdXGc2XD97xz7Heb0zQ4tj31YQVWwJQk5InYUkzn6ScDXXT3HYXg+Vgonoz6V QV6JAv0D2FpCJJ6FOixTX+3Cjm0FpbW0e9+002nGfzPnm0LTjx62ZdUEt7zAZcuX64gH Yl90tRkZxoM0VqM4226iIWRUYp+Ncd+Buis9+uZPaCgwR5tPjhGnTR+0z7S+HrzaNhWy YAHQst8q9jKhcTMoPLkSAyW7nUaF7B0EtHDZiEK0O9rR77tJdnwTG/UD8n0wSbCXYIqr SWxA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:arc-filter :dmarc-filter:delivered-to; bh=fFaDp6/bF07UH9Mmzpghbcslyt6upbFrNMjSrjxo2a8=; fh=wYRiZnn9nDBltyuQH1H/s7FMOEBgw7D5UzXRQ9Hnwic=; b=cfncxs/oMCr5tWksja+6n6YYn5xpjXCm78sQjaGqTSmWOzzvjkeT0YD2vRD1APOojT PJSL8vLZeYS10jcUKN/7fxf9Og/FNsU7smmHzkYoyfNSQPGLGN+sSJVdSumJX4ZuJ4ag cLWoDBOuAR+jK9OuuXAmsiuBIrZvo63MT1SINxQXDlCY9FE3cbJQnMZaaEWfkQfT9uCW jWa7GaN1do3RuQhSPZFi3E/kcUT2CMxnDJLLmVOa63mBMY/tBE2rrgU5ubP0MNWFeVgy aoRlcjxIc24ke7IsJ5qPdBhdg6wze9WWdxqAyonPQitjjnzyJVFuNieWjyHUNEmx+1S0 fajg== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id g14-20020ac87f4e000000b00428fb6a6900si1003286qtk.4.2024.01.04.19.41.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 19:41:40 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 815AA385771D for ; Fri, 5 Jan 2024 03:41:40 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 6104E3858D32 for ; Fri, 5 Jan 2024 03:40:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6104E3858D32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6104E3858D32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704426049; cv=none; b=rvFjCAOdPdUIG++icqmUdtzxo9v4gvSEsLSP4URIYPtikIhR6D0gJ4yHVjqMGEdIGaEg+issa2KWjQeqD87Z7r/CeYmSIU4BkH4EX6a0f8jcbxrP7KZuhbp+iELgQlGliyakzjc2EQ7gyMCUZaCbDTLMGFMn7sSKg2L4Z5FkIeE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704426049; c=relaxed/simple; bh=ZaC3T7DSSvCnu3ANeSn7xb6YmafVriHc3rSwg7MAWEw=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=mReOHxxVvH5AjaAmVf8ZZ5L1qaorI/wMwtXhnQm3xTTxWEKTzH2o6Zn4xVdkfoINHNB3qDmjQjnKt1dFlx+CKS6gsM5tKny1RCqaf//eEeEhm0JZFUthni4DZCepvGITZwmTUfI/90kys6Z8JmKhWJfSluBKSCHJ6T00YXJsE38= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8AxDOs5epdlES0CAA--.8232S3; Fri, 05 Jan 2024 11:40:42 +0800 (CST) Received: from loongson-pc.loongson.cn (unknown [10.20.4.107]) by localhost.localdomain (Coremail) with SMTP id AQAAf8BxbNw1epdlcMkCAA--.7338S2; Fri, 05 Jan 2024 11:40:39 +0800 (CST) From: Lulu Cheng To: gcc-patches@gcc.gnu.org Cc: xry111@xry111.site, i@xen0n.name, xuchenghua@loongson.cn, chenglulu@loongson.cn Subject: [PATCH v2 0/2] When cmodel=extreme, add macro support and only support macros. Date: Fri, 5 Jan 2024 11:40:19 +0800 Message-Id: <20240105034021.30177-1-chenglulu@loongson.cn> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CM-TRANSID: AQAAf8BxbNw1epdlcMkCAA--.7338S2 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoW7WFyDtFWDKF4DCFWkCrW3Arc_yoW8Ary3pr y7Zr45Gr45J392v3Z7Ja45Xr43A3Zag3y7u3Wayr18AF45Xr42vFyrK392qF1DGa4DJ34r ZF1xuw4DWF1DtacCm3ZEXasCq-sJn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkYb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jrv_JF1lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU1QVy3UUUUU== X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787220303471806394 X-GMAIL-MSGID: 1787220303471806394 When cmodel=extreme, since the symbol address is obtained through four instructions, errors may occur in some cases during linking. Therefore, in order to ensure that the instructions for obtaining the symbol address are together, macro instructions are used to obtain the symbol address when cmodel=extreme. https://github.com/loongson/la-abi-specs/blob/release/laelf.adoc#extreme-code-model v1 -> v2: 1. Use the temporarily allocated registers as intermediate registers to implement the extreme macro. 2. Fixed bugs in v1 test cases. Lulu Cheng (2): LoongArch: Add the macro implementation of mcmodel=extreme. LoongArch: When the code model is extreme, the symbol address is obtained through macro instructions regardless of the value of -mexplicit-relocs. gcc/config/loongarch/loongarch.cc | 39 +++++++++------ gcc/config/loongarch/loongarch.md | 50 +++++++++++++++++++ gcc/config/loongarch/predicates.md | 14 ++++++ .../gcc.target/loongarch/attr-model-1.c | 2 +- .../gcc.target/loongarch/attr-model-2.c | 2 +- .../gcc.target/loongarch/attr-model-3.c | 2 +- .../gcc.target/loongarch/attr-model-4.c | 2 +- .../loongarch/func-call-extreme-1.c | 6 +-- .../loongarch/func-call-extreme-2.c | 6 +-- .../loongarch/func-call-extreme-3.c | 6 +-- .../loongarch/func-call-extreme-4.c | 6 +-- .../loongarch/func-call-extreme-5.c | 7 +++ .../loongarch/func-call-extreme-6.c | 7 +++ 13 files changed, 118 insertions(+), 31 deletions(-) create mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c create mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c