From: Segher Boessenkool <segher@kernel.crashing.org>
To: Michael Meissner <meissner@linux.ibm.com>,
gcc-patches@gcc.gnu.org,
David Edelsohn <dje.gcc@gmail.com>,
Alan Modra <amodra@gmail.com>
Subject: Re: [PATCH], Patch #2 of 10, Add RTL prefixed attribute
Date: Mon, 19 Aug 2019 19:15:00 -0000 [thread overview]
Message-ID: <20190819174748.GN31406@gate.crashing.org> (raw)
In-Reply-To: <20190814215913.GB16578@ibm-toto.the-meissners.org>
Hi Mike,
Some comments on this patch:
On Wed, Aug 14, 2019 at 05:59:13PM -0400, Michael Meissner wrote:
> Due to some of the existing load and store insns not using the traditional
> operands[0] and operands[1], the functions that test whether an insn is
> prefixed only use the insn and not the operands directly.
Both the "update" and the "indexed" attributes have no problem with
this: the insns that have the problem set the attribute value directly.
This is mainly all the various update insns, but there are a bunch more,
and they all need different settings for their attributes.
> * config/rs6000/rs6000.c (rs6000_emit_move): Add support for
> loading up pc-relatve addresses.
(typo btw)
> +void
> +rs6000_final_prescan_insn (rtx_insn *insn)
> +{
> + next_insn_prefixed_p = (get_attr_prefixed (insn) != PREFIXED_NO);
> + return;
> +}
Don't say "return;" at the end of a function please.
> +void
> +rs6000_asm_output_opcode (FILE *stream, const char *)
> +{
> + if (next_insn_prefixed_p)
> + {
> + next_insn_prefixed_p = false;
> + fprintf (stream, "p");
> + }
You don't need to clear the flag here; the next call to
rs6000_final_prescan_insn will.
> +#define FINAL_PRESCAN_INSN(INSN, OPERANDS, NOPERANDS) \
> +do \
> + { \
> + if (TARGET_PREFIXED_ADDR) \
> + rs6000_final_prescan_insn (INSN); \
> + } \
> +while (0)
Either have the function only do what it needs to for prefixed, and call
it something with prefixed in the name, or put the TARGET_PREFIXED_ADDR
test in the function itself.
> +;; Load up a pc-relative address. ASM_OUTPUT_OPCODE will emit the initial "p".
> +(define_insn "*pcrel_addr"
> + [(set (match_operand:DI 0 "gpc_reg_operand" "=b*r")
> + (match_operand:DI 1 "pcrel_address"))]
> + "TARGET_PCREL"
> + "la %0,%a1"
> + [(set_attr "prefixed" "yes")])
(use P for addresses please)
> +;; Load up a pc-relative address to an external symbol. If the symbol and the
> +;; program are both defined in the main program, the linker will optimize this
> +;; to a PADDI. Otherwise, it will create a GOT address that is relocated by
> +;; the dynamic linker and loaded up.
> +(define_insn "*pcrel_ext_addr"
> + [(set (match_operand:DI 0 "gpc_reg_operand" "=b*r")
> + (match_operand:DI 1 "pcrel_external_address"))]
> + "TARGET_PCREL"
> + "ld %0,%a1"
> + [(set_attr "prefixed" "yes")])
pld does an indirection more than pla does, but this is not clear at all
from the RTL, from the predicate names. All this is *before* the linker
has done its thing, so pcrel_external_address is really some GOT memory,
so it should have that in its name.
Segher
next prev parent reply other threads:[~2019-08-19 17:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-14 21:36 PowerPC 'future' patches introduction Michael Meissner
2019-08-14 21:37 ` [PATCH], Patch #1 of 10, Add instruction format enumeration Michael Meissner
2019-08-14 22:11 ` [PATCH], Patch #2 of 10, Add RTL prefixed attribute Michael Meissner
2019-08-19 19:15 ` Segher Boessenkool [this message]
2019-08-14 22:12 ` [PATCH], Patch #3 of 10, Add prefixed addressing support Michael Meissner
2019-08-16 1:59 ` Bill Schmidt
2019-08-14 22:15 ` [PATCH], Patch #4 of 10, Adjust costs based on insn sizes Michael Meissner
2019-08-14 22:23 ` [PATCH], Patch #5 of 10, Make -mpcrel default for -mcpu=future Michael Meissner
2019-08-14 23:10 ` [PATCH], Patch #6 of 10, Add 'future' support to function attributes Michael Meissner
2019-08-14 23:13 ` [PATCH], Patch #7 of 10, Add support for PCREL_OPT Michael Meissner
2019-08-14 23:16 ` [PATCH], Patch #8 of 10, Miscellaneous future tests Michael Meissner
2019-08-14 23:17 ` [PATCH], Patch #9 of 10, Add tests with large memory offsets Michael Meissner
2019-08-15 3:48 ` [PATCH], Patch #10 of 10, Add pc-relative tests Michael Meissner
2019-08-15 4:05 ` PowerPC 'future' patches introduction Segher Boessenkool
2019-08-15 8:10 ` PC-relative TLS support Alan Modra
2019-08-15 19:47 ` Segher Boessenkool
2019-08-16 4:09 ` Alan Modra
2019-08-19 13:39 ` Segher Boessenkool
2019-08-21 13:34 ` Alan Modra
2019-11-11 7:40 ` Alan Modra
2019-11-11 11:45 ` Segher Boessenkool
2019-11-11 12:10 ` Segher Boessenkool
2019-11-11 13:36 ` Alan Modra
2019-08-15 21:35 ` [PATCH], Patch #1 replacement (fix issues with future TLS patches) Michael Meissner
2019-08-16 0:25 ` Segher Boessenkool
2019-08-16 0:42 ` Bill Schmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190819174748.GN31406@gate.crashing.org \
--to=segher@kernel.crashing.org \
--cc=amodra@gmail.com \
--cc=dje.gcc@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=meissner@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).