* [PATCH] RISC-V: Add tests for constraints "i" and "s"
@ 2024-02-14 6:36 Fangrui Song
2024-02-21 21:54 ` Fangrui Song
0 siblings, 1 reply; 4+ messages in thread
From: Fangrui Song @ 2024-02-14 6:36 UTC (permalink / raw)
To: kito.cheng, gcc-patches; +Cc: Fangrui Song
The constraints "i" and "s" can be used with a symbol that binds
externally, e.g.
```
namespace ns { extern int var, a[4]; }
void foo() {
asm(".pushsection .xxx,\"aw\"; .dc.a %0; .popsection" :: "s"(&ns::var));
asm(".reloc ., BFD_RELOC_NONE, %0" :: "s"(&ns::a[3]));
}
```
gcc/testsuite/ChangeLog:
* gcc.target/riscv/asm-raw-symbol.c: New test.
---
gcc/doc/md.texi | 2 +-
gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c | 14 ++++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
create mode 100644 gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index b0c61925120..c75e5bf259d 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -1947,7 +1947,7 @@ Integer constant that is valid as an immediate operand in a 64-bit @code{MOV}
pseudo instruction
@item S
-An absolute symbolic address or a label reference
+A symbolic reference or label reference.
@item Y
Floating point constant zero
diff --git a/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
new file mode 100644
index 00000000000..28305a8b1f0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-fpic" } */
+
+extern int var, arr[2][2];
+
+void
+test (void)
+{
+ __asm__ ("@ %0" : : "i"(&var));
+ __asm__ ("@ %0 %1 %2" : : "s"(&var), "s"(&arr[1][1]), "s"(test));
+}
+
+/* { dg-final { scan-assembler "@ var arr\\+12 test" } } */
+/* { dg-final { scan-assembler "@ var" } } */
--
2.43.0.687.g38aa6559b0-goog
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] RISC-V: Add tests for constraints "i" and "s"
2024-02-14 6:36 [PATCH] RISC-V: Add tests for constraints "i" and "s" Fangrui Song
@ 2024-02-21 21:54 ` Fangrui Song
2024-02-22 0:06 ` Kito Cheng
0 siblings, 1 reply; 4+ messages in thread
From: Fangrui Song @ 2024-02-21 21:54 UTC (permalink / raw)
To: kito.cheng, gcc-patches
On Tue, Feb 13, 2024 at 10:36 PM Fangrui Song <maskray@google.com> wrote:
>
> The constraints "i" and "s" can be used with a symbol that binds
> externally, e.g.
> ```
> namespace ns { extern int var, a[4]; }
> void foo() {
> asm(".pushsection .xxx,\"aw\"; .dc.a %0; .popsection" :: "s"(&ns::var));
> asm(".reloc ., BFD_RELOC_NONE, %0" :: "s"(&ns::a[3]));
> }
> ```
>
> gcc/testsuite/ChangeLog:
>
> * gcc.target/riscv/asm-raw-symbol.c: New test.
> ---
> gcc/doc/md.texi | 2 +-
> gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c | 14 ++++++++++++++
> 2 files changed, 15 insertions(+), 1 deletion(-)
> create mode 100644 gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
>
> diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
> index b0c61925120..c75e5bf259d 100644
> --- a/gcc/doc/md.texi
> +++ b/gcc/doc/md.texi
> @@ -1947,7 +1947,7 @@ Integer constant that is valid as an immediate operand in a 64-bit @code{MOV}
> pseudo instruction
>
> @item S
> -An absolute symbolic address or a label reference
> +A symbolic reference or label reference.
>
> @item Y
> Floating point constant zero
> diff --git a/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
> new file mode 100644
> index 00000000000..28305a8b1f0
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
> @@ -0,0 +1,14 @@
> +/* { dg-do compile } */
> +/* { dg-options "-fpic" } */
> +
> +extern int var, arr[2][2];
> +
> +void
> +test (void)
> +{
> + __asm__ ("@ %0" : : "i"(&var));
> + __asm__ ("@ %0 %1 %2" : : "s"(&var), "s"(&arr[1][1]), "s"(test));
> +}
> +
> +/* { dg-final { scan-assembler "@ var arr\\+12 test" } } */
> +/* { dg-final { scan-assembler "@ var" } } */
> --
> 2.43.0.687.g38aa6559b0-goog
>
Ping:)
--
宋方睿
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] RISC-V: Add tests for constraints "i" and "s"
2024-02-21 21:54 ` Fangrui Song
@ 2024-02-22 0:06 ` Kito Cheng
2024-02-22 1:22 ` Fangrui Song
0 siblings, 1 reply; 4+ messages in thread
From: Kito Cheng @ 2024-02-22 0:06 UTC (permalink / raw)
To: Fangrui Song; +Cc: GCC Patches
[-- Attachment #1: Type: text/plain, Size: 2157 bytes --]
LGTM, but I am OoO today, will commit that once I have laptop :p
Fangrui Song <maskray@google.com> 於 2024年2月22日 週四 05:54 寫道:
> On Tue, Feb 13, 2024 at 10:36 PM Fangrui Song <maskray@google.com> wrote:
> >
> > The constraints "i" and "s" can be used with a symbol that binds
> > externally, e.g.
> > ```
> > namespace ns { extern int var, a[4]; }
> > void foo() {
> > asm(".pushsection .xxx,\"aw\"; .dc.a %0; .popsection" ::
> "s"(&ns::var));
> > asm(".reloc ., BFD_RELOC_NONE, %0" :: "s"(&ns::a[3]));
> > }
> > ```
> >
> > gcc/testsuite/ChangeLog:
> >
> > * gcc.target/riscv/asm-raw-symbol.c: New test.
> > ---
> > gcc/doc/md.texi | 2 +-
> > gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c | 14 ++++++++++++++
> > 2 files changed, 15 insertions(+), 1 deletion(-)
> > create mode 100644 gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
> >
> > diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
> > index b0c61925120..c75e5bf259d 100644
> > --- a/gcc/doc/md.texi
> > +++ b/gcc/doc/md.texi
> > @@ -1947,7 +1947,7 @@ Integer constant that is valid as an immediate
> operand in a 64-bit @code{MOV}
> > pseudo instruction
> >
> > @item S
> > -An absolute symbolic address or a label reference
> > +A symbolic reference or label reference.
> >
> > @item Y
> > Floating point constant zero
> > diff --git a/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
> b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
> > new file mode 100644
> > index 00000000000..28305a8b1f0
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
> > @@ -0,0 +1,14 @@
> > +/* { dg-do compile } */
> > +/* { dg-options "-fpic" } */
> > +
> > +extern int var, arr[2][2];
> > +
> > +void
> > +test (void)
> > +{
> > + __asm__ ("@ %0" : : "i"(&var));
> > + __asm__ ("@ %0 %1 %2" : : "s"(&var), "s"(&arr[1][1]), "s"(test));
> > +}
> > +
> > +/* { dg-final { scan-assembler "@ var arr\\+12 test" } } */
> > +/* { dg-final { scan-assembler "@ var" } } */
> > --
> > 2.43.0.687.g38aa6559b0-goog
> >
>
> Ping:)
>
>
> --
> 宋方睿
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] RISC-V: Add tests for constraints "i" and "s"
2024-02-22 0:06 ` Kito Cheng
@ 2024-02-22 1:22 ` Fangrui Song
0 siblings, 0 replies; 4+ messages in thread
From: Fangrui Song @ 2024-02-22 1:22 UTC (permalink / raw)
To: Kito Cheng; +Cc: GCC Patches
On Wed, Feb 21, 2024 at 4:07 PM Kito Cheng <kito.cheng@gmail.com> wrote:
>
> LGTM, but I am OoO today, will commit that once I have laptop :p
Thanks! Dropped the gcc/doc/md.texi change and pushed as commit
9ca4c1bf082a4691482ca9f4814fea68f04e2cb3
(I have write-after-approval now:) )
> Fangrui Song <maskray@google.com> 於 2024年2月22日 週四 05:54 寫道:
>>
>> On Tue, Feb 13, 2024 at 10:36 PM Fangrui Song <maskray@google.com> wrote:
>> >
>> > The constraints "i" and "s" can be used with a symbol that binds
>> > externally, e.g.
>> > ```
>> > namespace ns { extern int var, a[4]; }
>> > void foo() {
>> > asm(".pushsection .xxx,\"aw\"; .dc.a %0; .popsection" :: "s"(&ns::var));
>> > asm(".reloc ., BFD_RELOC_NONE, %0" :: "s"(&ns::a[3]));
>> > }
>> > ```
>> >
>> > gcc/testsuite/ChangeLog:
>> >
>> > * gcc.target/riscv/asm-raw-symbol.c: New test.
>> > ---
>> > gcc/doc/md.texi | 2 +-
>> > gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c | 14 ++++++++++++++
>> > 2 files changed, 15 insertions(+), 1 deletion(-)
>> > create mode 100644 gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
>> >
>> > diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
>> > index b0c61925120..c75e5bf259d 100644
>> > --- a/gcc/doc/md.texi
>> > +++ b/gcc/doc/md.texi
>> > @@ -1947,7 +1947,7 @@ Integer constant that is valid as an immediate operand in a 64-bit @code{MOV}
>> > pseudo instruction
>> >
>> > @item S
>> > -An absolute symbolic address or a label reference
>> > +A symbolic reference or label reference.
>> >
>> > @item Y
>> > Floating point constant zero
>> > diff --git a/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
>> > new file mode 100644
>> > index 00000000000..28305a8b1f0
>> > --- /dev/null
>> > +++ b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c
>> > @@ -0,0 +1,14 @@
>> > +/* { dg-do compile } */
>> > +/* { dg-options "-fpic" } */
>> > +
>> > +extern int var, arr[2][2];
>> > +
>> > +void
>> > +test (void)
>> > +{
>> > + __asm__ ("@ %0" : : "i"(&var));
>> > + __asm__ ("@ %0 %1 %2" : : "s"(&var), "s"(&arr[1][1]), "s"(test));
>> > +}
>> > +
>> > +/* { dg-final { scan-assembler "@ var arr\\+12 test" } } */
>> > +/* { dg-final { scan-assembler "@ var" } } */
>> > --
>> > 2.43.0.687.g38aa6559b0-goog
>> >
>>
>> Ping:)
>>
>>
>> --
>> 宋方睿
--
宋方睿
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-02-22 1:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-14 6:36 [PATCH] RISC-V: Add tests for constraints "i" and "s" Fangrui Song
2024-02-21 21:54 ` Fangrui Song
2024-02-22 0:06 ` Kito Cheng
2024-02-22 1:22 ` Fangrui Song
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).