From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by sourceware.org (Postfix) with ESMTPS id 3374A3858D20 for ; Thu, 16 Nov 2023 01:17:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3374A3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=google.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3374A3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700097455; cv=none; b=smF6M6M4uQQ+Kw/NJfU9zZK0n/MuZR6+g5hnIzBDgcU3FSJx/tpbALsUtHYwwkcvziKI/daQx0QgnXYavmWm/RReGMNNOKRfdu466sHnyImsDyMzpHwxAHSD5gI8F8I0JzxRmxZ7pActk1ZAL5G7OEtXlDf9XjXSY1CTqBshaXk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700097455; c=relaxed/simple; bh=oqeDKDt8D4jQSU5+qk9rd5V3VzslbyjopJr3XqHDE8A=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=EZKxkdO8VI9/DdCrZjpMAU+opUGvQPO+MwhnWrKi7b7ICXzJq4oM3cgMj9lo3TtafckcNe+Xoc5b+yhz9/7ONGQmuVvH3DDx8JqLlIAdXK/Lv/YnBNMDwXENNU1ySv75vlrhpmz+os2yRaVzxXr5gYDLZufNh76dv55yyZvbwLA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x131.google.com with SMTP id 2adb3069b0e04-507a5edc2ebso673e87.1 for ; Wed, 15 Nov 2023 17:17:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1700097451; x=1700702251; darn=gcc.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ULC6llGiuCj6gFR68iu5c/tqh35ob4BnucFg4T0Htvg=; b=T+nlDW35A9MxT1KE13kyzjzr3PR5BaLmDhKDOJB4zfWf+KOF80J39rg+wAtOlhv70z exYxqP4srk9XrpNQAUgmfCzsRrbYMxMmTn1bBFioO934nXP92Cv3gQeaWdX7nDv9rhZ3 23qzyQ+YMIvg2/2PP/Y+/7j7UTJwpQzVwbIV8yDW46LNby5Flsjb3oIyb0qFFjTJw1MR mmSUu+oSFMwRkEtADjQsCGALNc/thH3qiE46rp9uNP+O6ZLN3HLfvESXSTaFulCfsCqr 1EfQjSKRUl3laCoadp91+V6/C7v+Vvg63acih7a3pjhJ/7PgGMCzANTaexNwaWRawKpz 9Rjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700097451; x=1700702251; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ULC6llGiuCj6gFR68iu5c/tqh35ob4BnucFg4T0Htvg=; b=jIknsc7QXjq6ANWbfkCnXw1bAXmV3DjG101ITt9RxyCxaatUBLBzfeOw9fCTvJb6bb GI+wk42PHMeJecah7xao4lPJXQBLwQv+yUXF9K7+nH+08G92TkT+x3I3QFyYGxaI4Yf1 zHZotdx3EpHi1P3GRrsg0+3ZinxACpvvXNUEZ+df3nHysnBPU7rUzPrPkrXHKrhShgJ0 JQLIYH4UOHCKiN4AMEfmrVJEQrSQX4fQBV3wgxneRZyeKcQv9qfY7/ze+ZHwtN/Aniwc omFFY0C5Rx1FWHlhKAWUGxDAynaCn0xxtS4FziWO6Wir1MJx/HVGOB+CV0KQo8m2fO5+ tv8Q== X-Gm-Message-State: AOJu0Yx4+UMG2xwhHAs2w4BXjW5OCqDfFCmpe6EO86e9mQx70eOHOniS TZoM2a6M2T2Q67cm5XNSk8V85oRuaXPZzV/p8sO0tQ== X-Google-Smtp-Source: AGHT+IEueJhWGLsg3Jc0QJMXaLyLKFfhXKWjXwrtzTf9BoOrStCD3058OBaB7DfH48rGjRXK2725nwO3daBrTezG/v8= X-Received: by 2002:a05:6512:3f1e:b0:501:a2b9:6046 with SMTP id y30-20020a0565123f1e00b00501a2b96046mr38048lfa.7.1700097450217; Wed, 15 Nov 2023 17:17:30 -0800 (PST) MIME-Version: 1.0 References: <20230817181308.122802-2-ishitatsuyuki@gmail.com> <20230908104923.31154-1-ishitatsuyuki@gmail.com> In-Reply-To: From: Fangrui Song Date: Wed, 15 Nov 2023 17:17:16 -0800 Message-ID: Subject: Re: [PATCH v2] RISC-V: Implement TLS Descriptors. To: Tatsuyuki Ishi Cc: Kito Cheng , gcc-patches@gcc.gnu.org, rui314@gmail.com, ruiu@bluewhale.systems, Jeff Law Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-22.6 required=5.0 tests=BAYES_00,BODY_8BITS,DKIMWL_WL_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL 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: On Mon, Oct 2, 2023 at 7:10=E2=80=AFAM Kito Cheng wr= ote: > > Just one nit and one more comment for doc: > > Could you add some doc something like that? mostly I grab from other > target, so you can just included in the patch. > > 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 TL= S > 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 GN= U TLS > +descriptor-based dialect. > > @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} > > @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 ac= cesses > +of TLS variables. This is the default. > + > +@opindex mtls-dialect=3Dtrad > +@item -mtls-dialect=3Dtraditional -mtls-dialect=3Dtrad. aarch64-linux-gnu-gcc doesn't support -mtls-dialect=3Dtraditional > +Use traditional TLS as the thread-local storage mechanism for dynamic ac= cesses > +of TLS variables. > + > @end table This is the default :) I am happy that we change the default like AArch64, but probably not now when linker support is not widely available yet. I cannot comment on the code side as I am not familiar with GCC internals. > @node RL78 Options > > > > > > +(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))] > > P rather than SI here. > > > + "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 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 --=20 =E5=AE=8B=E6=96=B9=E7=9D=BF