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 D4B403858C50 for ; Mon, 1 Apr 2024 13:51:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D4B403858C50 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 D4B403858C50 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=1711979480; cv=none; b=dEkngX8OpWJn7FT1z9qbccJDeDLF1Eu9sJfy61slWPCehOiO52V4eKS4X+MyV97+pjTkHWI2IH6AGCZtC72G+1Gq7g1RN3NYHA5kdHZ4t3uzkMsc8R2iG6HTrmFVAzwcs6jk0nh7k6IuH/4/DdEpGZxIMcs7rM1Mrrc5878iUWs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711979480; c=relaxed/simple; bh=zNfykaDUGDY44f1re7HGsBMpZyMmGh8NvWddeDEDnKg=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=FUAd5JyjYgxlplgHqtWli0uwU+Dr71eS2KDk+EJ65be+QmWF6qAfU58pLDLfEB8ZD3L1/TonS9Jy8a5B9a6dRhj0VP60g3SZh1su6q8+2K9XW/rLM7f8EHKdos8ok8SoMK7zvtKCkjGF/a0ev5NyCxcYxJJrkaiDxxjy4xwxY1Q= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1711979472; bh=zNfykaDUGDY44f1re7HGsBMpZyMmGh8NvWddeDEDnKg=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Gd+R0FPaZEL62zxPQXRpS9xLw6CbLH1K56UiBI9ZLdBkTBSAinzv3fQ05hlvfDyg6 A1G5bGGYnbPQk/nMdeqTY+NBItb/1EAC2k0tc4kdhd+Rsrsc7IZ81munx3Q/OR+xTl SjPqu9Ais4j6XURsWReWtJ/xBd9nTqkmG8+OVKAI= Received: from [127.0.0.1] (unknown [IPv6:2001:470:683e::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) 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 284F91A3FDB; Mon, 1 Apr 2024 09:51:10 -0400 (EDT) Message-ID: <84becac336d760701ec31f0f27e64c82efacc9f4.camel@xry111.site> Subject: Re: [PATCH v5] LoongArch: Add support for TLS descriptors From: Xi Ruoyao To: mengqinggang , gcc-patches@gcc.gnu.org Cc: xuchenghua@loongson.cn, chenglulu@loongson.cn, cailulu@loongson.cn, i.swmail@xen0n.name, maskray@google.com, luweining@loongson.cn, wanglei@loongson.cn, hejinyang@loongson.cn Date: Mon, 01 Apr 2024 21:51:08 +0800 In-Reply-To: <20240319015415.351293-1-mengqinggang@loongson.cn> References: <20240319015415.351293-1-mengqinggang@loongson.cn> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.52.0 MIME-Version: 1.0 X-Spam-Status: No, score=-1.8 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: Is this patch targeting GCC 14 or 15? If 14 I guess we'd commit now... Generally we don't add features in stage 4, but if we keep trad as the default I think it'd be OK. And RISC-V guys plan to push their TLS desc implementation this week too. On Tue, 2024-03-19 at 09:54 +0800, mengqinggang wrote: > Add support for TLS descriptors on normal code model and extreme code mod= el. >=20 > Normal code model instruction sequence: > =C2=A0 -mno-explicit-relocs: > =C2=A0=C2=A0=C2=A0 la.tls.desc $r4, s > =C2=A0=C2=A0=C2=A0 add.d $r12, $r4, $r2 > =C2=A0 -mexplicit-relocs: > =C2=A0=C2=A0=C2=A0 pcalau12i $r4,%desc_pc_hi20(s) > =C2=A0=C2=A0=C2=A0 addi.d $r4,$r4,%desc_pc_lo12(s) > =C2=A0=C2=A0=C2=A0 ld.d $r1,$r4,%desc_ld(s) > =C2=A0=C2=A0=C2=A0 jirl $r1,$r1,%desc_call(s) > =C2=A0=C2=A0=C2=A0 add.d $r12, $r4, $r2 >=20 > Extreme code model instruction sequence: > =C2=A0 -mno-explicit-relocs: > =C2=A0=C2=A0=C2=A0 la.tls.desc $r4, $r12, s > =C2=A0=C2=A0=C2=A0 add.d $r12, $r4, $r2 > =C2=A0 -mexplicit-relocs: > =C2=A0=C2=A0=C2=A0 pcalau12i $r4,%desc_pc_hi20(s) > =C2=A0=C2=A0=C2=A0 addi.d $r12,$r0,%desc_pc_lo12(s) > =C2=A0=C2=A0=C2=A0 lu32i.d $r12,%desc64_pc_lo20(s) > =C2=A0=C2=A0=C2=A0 lu52i.d $r12,$r12,%desc64_pc_hi12(s) > =C2=A0=C2=A0=C2=A0 add.d $r4,$r4,$r12 > =C2=A0=C2=A0=C2=A0 ld.d $r1,$r4,%desc_ld(s) > =C2=A0=C2=A0=C2=A0 jirl $r1,$r1,%desc_call(s) > =C2=A0=C2=A0=C2=A0 add.d $r12, $r4, $r2 >=20 > The default is still traditional TLS model, but can be configured with > --with-tls=3D{trad,desc}. The default can change to TLS descriptors once > libc and LLVM support this. >=20 > gcc/ChangeLog: >=20 > * config.gcc: Add --with-tls option to change TLS flavor. > * config/loongarch/genopts/loongarch.opt.in: Add -mtls-dialect to > configure TLS flavor. > * config/loongarch/loongarch-def.h (struct loongarch_target): Add > tls_dialect. > * config/loongarch/loongarch-driver.cc (la_driver_init): Add tls > flavor. > * config/loongarch/loongarch-opts.cc (loongarch_init_target): Add > tls_dialect. > (loongarch_config_target): Ditto. > (loongarch_update_gcc_opt_status): Ditto. > * config/loongarch/loongarch-opts.h (loongarch_init_target):Ditto. > (TARGET_TLS_DESC): New define. > * config/loongarch/loongarch.cc (loongarch_symbol_insns): Add TLS DESC > instructions sequence length. > (loongarch_legitimize_tls_address): New TLS DESC instruction sequence. > (loongarch_option_override_internal): Add la_opt_tls_dialect. > (loongarch_option_restore): Add la_target.tls_dialect. > * config/loongarch/loongarch.md (@got_load_tls_desc): Normal > code model for TLS DESC. > (got_load_tls_desc_off64): Extreme code model for TLS DESC. > * config/loongarch/loongarch.opt: Regenerated. >=20 > gcc/testsuite/ChangeLog: >=20 > * gcc.target/loongarch/cmodel-extreme-1.c: Add -mtls-dialect=3Dtrad. > * gcc.target/loongarch/cmodel-extreme-2.c: Ditto. > * gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c: Ditto. > * gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c: > Ditto. > * gcc.target/loongarch/func-call-medium-1.c: Ditto. > * gcc.target/loongarch/func-call-medium-2.c: Ditto. > * gcc.target/loongarch/func-call-medium-3.c: Ditto. > * gcc.target/loongarch/func-call-medium-4.c: Ditto. > * gcc.target/loongarch/tls-extreme-macro.c: Ditto. > * gcc.target/loongarch/tls-gd-noplt.c: Ditto. > * gcc.target/loongarch/explicit-relocs-auto-extreme-tls-desc.c: New test= . > * gcc.target/loongarch/explicit-relocs-auto-tls-desc.c: New test. > * gcc.target/loongarch/explicit-relocs-extreme-tls-desc.c: New test. > * gcc.target/loongarch/explicit-relocs-tls-desc.c: New test. >=20 > Co-authored-by: Lulu Cheng > Co-authored-by: Xi Ruoyao --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University