This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][GCC][ARM] Implement "arch" GCC pragma and "+<ext>" attributes [Patch (2/3)]



On 15/11/17 15:59, Tamar Christina wrote:

-----Original Message-----
From: Kyrill Tkachov [mailto:kyrylo.tkachov@foss.arm.com]
Sent: Wednesday, November 15, 2017 10:11
To: Tamar Christina <Tamar.Christina@arm.com>; Sandra Loosemore
<sandra@codesourcery.com>; gcc-patches@gcc.gnu.org
Cc: nd <nd@arm.com>; Ramana Radhakrishnan
<Ramana.Radhakrishnan@arm.com>; Richard Earnshaw
<Richard.Earnshaw@arm.com>; nickc@redhat.com
Subject: Re: [PATCH][GCC][ARM] Implement "arch" GCC pragma and
"+<ext>" attributes [Patch (2/3)]

Hi Tamar,

On 10/11/17 10:56, Tamar Christina wrote:
Hi Sandra,

I've respun the patch with the docs changes you requested.

Regards,
Tamar

-----Original Message-----
From: Sandra Loosemore [mailto:sandra@codesourcery.com]
Sent: 07 November 2017 03:38
To: Tamar Christina; gcc-patches@gcc.gnu.org
Cc: nd; Ramana Radhakrishnan; Richard Earnshaw; nickc@redhat.com;
Kyrylo Tkachov
Subject: Re: [PATCH][GCC][ARM] Implement "arch" GCC pragma and
"+<ext>" attributes [Patch (2/3)]

On 11/06/2017 09:50 AM, Tamar Christina wrote:
Hi All,

This patch adds support for the setting the architecture and
extensions using the target GCC pragma.

#pragma GCC target ("arch=armv8-a+crc")

It also supports a short hand where an extension is just added to
the current architecture without changing it

#pragma GCC target ("+crc")

Popping and pushing options also correctly reconfigure the global
state as expected.

Also supported is using the __attribute__((target("...")))
attributes on functions to change the architecture or extension.

Regtested on arm-none-eabi and no regressions.
This will need a bootstrap and test run on arm-none-linux-gnueabihf (like all
arm changes).
Your changelog at
https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00387.html mentions some
arm-c.c changes but I don't see any included in this patch?

The other changes look good and in line with what I would expect, but can
you please post the arm-c.c changes if there are any?
Hi Kyrill,

Sorry, I moved this change into another patch that was already committed and forgot
to remove it from this changelog.

I've also already bootstrapped this and the 3rd patch when you asked for the bootstrap of
First one.  But I didn't update mail the status to the list.

The correct changelog is

gcc/
2017-11-15  Tamar Christina  <tamar.christina@arm.com>

	PR target/82641
	* config/arm/arm.c (arm_valid_target_attribute_rec):
	Parse "arch=" and "+<ext>".
	(arm_valid_target_attribute_tree): Re-init global options.
	(arm_option_override): Make non-static.
	(arm_options_perform_arch_sanity_checks): Make errors fatal.
	* config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma.
	* doc/extend.texi (ARM Function Attributes): Add pragma and target.

gcc/testsuite/
2017-11-15  Tamar Christina  <tamar.christina@arm.com>

	PR target/82641
	* gcc.target/arm/pragma_arch_attribute.c: New.

Ok for trunk?

Thanks Tamar.
This is ok for trunk.
Kyrill

Thanks,
Tamar

Thanks,
Kyrill

Ok for trunk?

diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index

8aa443f87fb700f7a723d736bdbd53b6c839656d..18d0ffa6820326ce7badf33001
b1
c6a467c95883 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -3858,6 +3858,42 @@ Specifies the fpu for which to tune the
performance of this function.
  The behavior and permissible arguments are the same as for the
@option{-mfpu=}  command-line option.

+@item arch=
+@cindex @code{arch=} function attribute, ARM Specifies the
+architecture version and architectural extensions to use for this
+function.  The behavior and permissible arguments are the same as
+for the @option{-march=} command-line option.
+
+The above target attributes can be specified as follows:
+
+@smallexample
+__attribute__((target("@var{attr-string}")))
+int
+f (int a)
+@{
+  return a + 5;
+@}
+@end smallexample
+
+where @code{@var{attr-string}} is one of the attribute strings.
This example doesn't illustrate anything useful, and in fact just
confuses
things by introducing @var{attr-string}.  Please use an actual valid
attribute
here, something like "arch=armv8-a" or whatever.

Also, either kill the sentence fragment after the example, or be
careful to
add @noindent before it to indicate it's a continuation of the
previous paragraph.

+
+Additionally, the architectural extension string may be specified
+on its own.  This can be used to turn on and off particular
+architectural extensions without having to specify a particular
architecture
version or core.  Example:
+
+@smallexample
+__attribute__((target("+crc+nocrypto")))
+int
+foo (int a)
+@{
+  return a + 5;
+@}
+@end smallexample
+
+In this example @code{target("+crc+nocrypto")} enables the
+@code{crc} extension and disables the @code{crypto} extension for
+the function @code{foo} without modifying an existing
+@option{-march=} or
@option{-mcpu} option.
+
  @end table

  @end table
-Sandra


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]