From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id 95AA93858438 for ; Thu, 19 Oct 2023 14:03:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 95AA93858438 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 95AA93858438 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.208.246.23 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697724207; cv=none; b=o4+gpbmOgj85Uv7Oc74S1L3wcSn+XPrs5pYNRhZ65Sa8gLG8UDYmSKdNT4S1aXT0EFlNOeGttOh1JA6smRSm5vUuPByuaCWhAetrVBoOMnrI66qUR7u9pu4H0MOc96co62yveOTcHIBk7wMvZsXqin3nAUJJDFM8eESdKCn6N80= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697724207; c=relaxed/simple; bh=SAPyvHAU6wKWzm8NQwdmIjcBK9Qjs0OOzusEQtwZ/bs=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ptM7i9cEoCqapOiCpfX7jzColLxJCWQIjaptY92kRFFe+Cu4wjwkOEdvxhXXavWKVeQomtFeb3Lr56OtRbzj/5ZWJH304FMcAsQlxgBoCZ5vC/Tn2zjcmGUSyRDNRBpfBwQoJ+TVFnOBkSG8y7Tiu5ty2F/7qIC0zzdyVvBeaz0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1697724201; bh=SAPyvHAU6wKWzm8NQwdmIjcBK9Qjs0OOzusEQtwZ/bs=; h=From:To:Cc:Subject:Date:From; b=jqNHzrQJpt3smwB2VIgVAYV4pbEsyf0ZBjakZSzTKZiXw3sqyS6OdPxhs8S4Zi7wM uwmYN51M+RpHaB82TMLkRDE3KY9AMFuWQ4WHlZVSkP7FNelEldgztuz3BaXHEpBV1G OAEK1wHA6Ii8JocQsChZ2Qm/E8eicuuP4eW5GJA8= Received: from stargazer.. (unknown [IPv6:240e:358:1126:f000:dc73:854d:832e:2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id E6EAA66AF4; Thu, 19 Oct 2023 10:03:16 -0400 (EDT) From: Xi Ruoyao To: gcc-patches@gcc.gnu.org Cc: chenglulu , i@xen0n.name, xuchenghua@loongson.cn, mengqinggang , Xi Ruoyao Subject: [PATCH 0/5] LoongArch: Better balance between relaxation and scheduling Date: Thu, 19 Oct 2023 22:02:55 +0800 Message-ID: <20231019140300.50323-1-xry111@xry111.site> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,LIKELY_SPAM_FROM,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: For relaxation we are now generating assembler macros for symbolic addresses everywhere, but this is limiting scheduling and there are known situations where the relaxation cannot improve the code. 1. When we are performing LTO during a final link and the linker plugin is used, la.global won't be relaxed because they reference to an external or preemptable symbol. 2. The linker currently do not relax la.tls.*. 3. For la.local + ld/st pairs, if the address is only used once, emitting pcalau12i + ld/st is always not worse than relying on linker relaxation. Add -mexplicit-relocs=auto to allow the compiler to use explicit relocs for these cases, but assembler macros for other cases. Use it as the default if the assembler supports both explicit relocs and relaxation. LTO-bootstrapped and regtested on loongarch64-linux-gnu. Ok for trunk? Xi Ruoyao (5): LoongArch: Add enum-style -mexplicit-relocs= option LoongArch: Use explicit relocs for GOT access when -mexplicit-relocs=auto and LTO during a final link with linker plugin LoongArch: Use explicit relocs for TLS access with -mexplicit-relocs=auto LoongArch: Use explicit relocs for addresses only used for one load or store with -mexplicit-relocs=auto and -mcmodel={normal,medium} LoongArch: Document -mexplicit-relocs={auto,none,always} .../loongarch/genopts/loongarch-strings | 6 + gcc/config/loongarch/genopts/loongarch.opt.in | 21 ++- gcc/config/loongarch/loongarch-def.h | 6 + gcc/config/loongarch/loongarch-protos.h | 1 + gcc/config/loongarch/loongarch-str.h | 5 + gcc/config/loongarch/loongarch.cc | 75 ++++++++-- gcc/config/loongarch/loongarch.h | 3 + gcc/config/loongarch/loongarch.md | 128 +++++++++++++++++- gcc/config/loongarch/loongarch.opt | 21 ++- gcc/config/loongarch/predicates.md | 15 +- gcc/doc/invoke.texi | 37 +++-- .../loongarch/explicit-relocs-auto-lto.c | 26 ++++ ...-relocs-auto-single-load-store-no-anchor.c | 6 + .../explicit-relocs-auto-single-load-store.c | 14 ++ .../explicit-relocs-auto-tls-ld-gd.c | 9 ++ .../explicit-relocs-auto-tls-le-ie.c | 6 + 16 files changed, 343 insertions(+), 36 deletions(-) create mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-lto.c create mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-no-anchor.c create mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store.c create mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c create mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-le-ie.c -- 2.42.0