From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by sourceware.org (Postfix) with ESMTPS id 1DBED3858D20 for ; Thu, 16 Nov 2023 01:39:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1DBED3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1DBED3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::102c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700098793; cv=none; b=Ma1GKoWqzPheV2gDWpPtsA/nd8fCcE0ziKD8ua0YfO+tyw45f5eCz/65Of3/+8CjEdi8gqd13qWPDL2j+/VFKNJYfWa4XFe+Qx58tMVwYbyf+jauK/NNoIybROVfZVIXV3O6q+jwrnJWwl9/CwwxuCkCWZwBDeS6kwi3WRfLRLk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700098793; c=relaxed/simple; bh=JwoJbrVcZcJ1s5BSXIsMz77QgnN7PnKgDfsoXIs6oz4=; h=DKIM-Signature:From:Message-Id:Mime-Version:Subject:Date:To; b=TCpuoPlMMsfMaf95lCOxu1ujbwbQ5qA98r0J+97DwS5SkxfuwDsTG/YozxK/GWsET1yhtRKgtlYtYA1h2FsxIrXYyj44a71vePPL5Z0PhCxpQWf3YZGIwaBMjR34eY9BnrHd/HBGBfluU4E7eqoq9Fqh+CVRD15kmnAzAbedJCM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-28099d11c49so57830a91.1 for ; Wed, 15 Nov 2023 17:39:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700098788; x=1700703588; darn=gcc.gnu.org; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=ppKUZu3cbpAIk0eybOO+re032YSdtk8RRLKAqWyM20k=; b=QOCVSQbI88stp5ENNeReh/oW9QDg5TGTX6mTyXKOxYjS07+TeA7SB56VhG56JkRxtl rUF0f1OU5jKCn4ngoOIt7Huvh6TjzLzzkviUD6YhnyL6MvT0Fe6Oa9B74Xkaze8Lk+8Q jMnSXjn/9/dw2gKE53fAaU2RnSpUx/9SKmbqMfZ7vSWr3ZFOxD+ufdU2fD1CsbGn1s9M bH6OZpK5i38G6tkjppgYB4/7Rb3mG0YSBnSV6Sj6Wx10ixtegDKWvo/0/gesIn75i40S gkiO2KdCsu0zVJVU6+74ewVEoA/XfH7RJPRsz6VSFVyNBYLWTQ+kTEFekGYE6M0mOT+6 b9+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700098788; x=1700703588; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ppKUZu3cbpAIk0eybOO+re032YSdtk8RRLKAqWyM20k=; b=FuEs26ZrBSQTzBF984VmeWh6HS1mauDBt2i1QDAGkaWonO01vc10XenSkcR1piZ9R4 qNXBl0ZSNmoq5o9vzQSj+T42A7yflF+cqj2vBdAY5PhzN47o+C/hr/YFBK42Qd1dHaRx VkcxQmh2Gzevq2mFykgFt8nc3Q12lkQgXcx+TGYkMnzunQAniPWUcaMKieQ+GISeO8DK IocUigmtmpAoB4kpWwRAqh7Pk24eJkt29IU6bFdUij6c8kPsqoSW4Fk0vlDhrc/7EbYg 9YLVGW35oHPWxev5Pzjl3Ww0QlCr+sptGyiEcMpnWyzn5lo9q3wqnGCyGiWDSwtm4IBO PmPw== X-Gm-Message-State: AOJu0YzzDzmZnhVmfI6aHvKEe5sC/oHzx4awstSMmv1JeAyWIoqPS/nA KeVjnZQc9zRPXVe3iQS9Pi4= X-Google-Smtp-Source: AGHT+IGZu+BfdSAR9biihhLNmQY+pvpbnA/6j6ex1ua+n0PzG8PieMrZ4YKTed/EfHYS4Cf8DCpokQ== X-Received: by 2002:a17:90b:3c0f:b0:27d:15e3:3aa9 with SMTP id pb15-20020a17090b3c0f00b0027d15e33aa9mr7043981pjb.3.1700098787826; Wed, 15 Nov 2023 17:39:47 -0800 (PST) Received: from smtpclient.apple (zz20184013906F627101.userreverse.dion.ne.jp. [111.98.113.1]) by smtp.gmail.com with ESMTPSA id 3-20020a17090a018300b0026f4bb8b2casm544342pjc.6.2023.11.15.17.39.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Nov 2023 17:39:47 -0800 (PST) From: Tatsuyuki Ishi Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_9269F1D2-4473-4278-882A-C56E4FD2C8A2" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.200.91.1.1\)) Subject: Re: [PATCH v2] RISC-V: Implement TLS Descriptors. Date: Thu, 16 Nov 2023 10:39:33 +0900 In-Reply-To: Cc: Kito Cheng , gcc-patches@gcc.gnu.org, Rui Ueyama , ruiu@bluewhale.systems, Jeff Law To: Fangrui Song References: <20230817181308.122802-2-ishitatsuyuki@gmail.com> <20230908104923.31154-1-ishitatsuyuki@gmail.com> X-Mailer: Apple Mail (2.3774.200.91.1.1) X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,FREEMAIL_REPLY,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,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 List-Id: --Apple-Mail=_9269F1D2-4473-4278-882A-C56E4FD2C8A2 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Nov 16, 2023, at 10:17, Fangrui Song wrote: >=20 > On Mon, Oct 2, 2023 at 7:10=E2=80=AFAM Kito Cheng > wrote: >>=20 >> Just one nit and one more comment for doc: >>=20 >> Could you add some doc something like that? mostly I grab from other >> target, so you can just included in the patch. >>=20 >> diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi >> index 31f2234640f..39396668da2 100644 >> --- a/gcc/doc/install.texi >> +++ b/gcc/doc/install.texi >> @@ -1174,6 +1174,9 @@ Specify the default TLS dialect, for systems >> were there is a choice. >> For ARM targets, possible values for @var{dialect} are @code{gnu} or >> @code{gnu2}, which select between the original GNU dialect and the GNU T= LS >> descriptor-based dialect. >> +For RISC-V targets, possible values for @var{dialect} are @code{trad} or >> +@code{desc}, which select between the traditional GNU dialect and the G= NU TLS >> +descriptor-based dialect. >>=20 >> @item --enable-multiarch >> Specify whether to enable or disable multiarch support. The default is >> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi >> index 4085fc90907..459e266d426 100644 >> --- a/gcc/doc/invoke.texi >> +++ b/gcc/doc/invoke.texi >> @@ -1239,7 +1239,8 @@ See RS/6000 and PowerPC Options. >> -minline-atomics -mno-inline-atomics >> -minline-strlen -mno-inline-strlen >> -minline-strcmp -mno-inline-strcmp >> --minline-strncmp -mno-inline-strncmp} >> +-minline-strncmp -mno-inline-strncmp >> +-mtls-dialect=3Ddesc -mtls-dialect=3Dtrad} >>=20 >> @emph{RL78 Options} >> @gccoptlist{-msim -mmul=3Dnone -mmul=3Dg13 -mmul=3Dg14 -mallregs >> @@ -29538,6 +29539,17 @@ which register to use as base register for >> reading the canary, >> and from what offset from that base register. There is no default >> register or offset as this is entirely for use within the Linux >> kernel. >> + >> +@opindex mtls-dialect=3Ddesc >> +@item -mtls-dialect=3Ddesc >> +Use TLS descriptors as the thread-local storage mechanism for dynamic a= ccesses >> +of TLS variables. This is the default. >> + >> +@opindex mtls-dialect=3Dtrad >> +@item -mtls-dialect=3Dtraditional >=20 > -mtls-dialect=3Dtrad. > aarch64-linux-gnu-gcc doesn't support -mtls-dialect=3Dtraditional >=20 >> +Use traditional TLS as the thread-local storage mechanism for dynamic a= ccesses >> +of TLS variables. >> + >> @end table >=20 > This is the default :) >=20 > I am happy that we change the default like AArch64, but probably not > now when linker support is not widely available yet. >=20 > I cannot comment on the code side as I am not familiar with GCC internals. >=20 >> @node RL78 Options >>=20 >>=20 >>=20 >>=20 >>> +(define_insn "@tlsdesc" >>> + [(set (reg:P A0_REGNUM) >>> + (unspec:P >>> + [(match_operand:P 0 "symbolic_operand" "") >>> + (match_operand:P 1 "const_int_operand")] >>> + UNSPEC_TLSDESC)) >>> + (clobber (reg:SI T0_REGNUM))] >>=20 >> P rather than SI here. >>=20 >>> + "TARGET_TLSDESC" >>> + { >>> + return ".LT%1: auipc\ta0, %%tlsdesc_hi(%0)\;" >>> + "\tt0,%%tlsdesc_load_lo(.LT%1)(a0)\;" >>> + "addi\ta0,a0,%%tlsdesc_add_lo(.LT%1)\;" >>> + "jalr\tt0,t0,%%tlsdesc_call(.LT%1)"; >>> + } >>> + [(set_attr "type" "multi") >>> + (set_attr "length" "16") >>> + (set_attr "mode" "")]) >>> + >>> (define_insn "auipc" >>> [(set (match_operand:P 0 "register_operand" "=3Dr") >>> (unspec:P >=20 > It seems that x86-64 supports non-adjacent code sequence. Writing the > pattern this way does not allow interleaving, but I assume > interleaving doesn't enable much. > https://reviews.llvm.org/D114416 As mentioned in the commit message, the use of relaxation-only labels does = not seem well supported in current GCC. Creating a label seems to force a b= asic block and I=E2=80=99m not sure how we can avoid it. If there=E2=80=99s a better way to implement this I=E2=80=99m happy to adop= t. Tatsuyuki. >=20 > --=20 > =E5=AE=8B=E6=96=B9=E7=9D=BF --Apple-Mail=_9269F1D2-4473-4278-882A-C56E4FD2C8A2--