* [PATCH] x86: Use x constraint on KL patterns
@ 2022-03-25 20:50 H.J. Lu
2022-03-26 1:08 ` Hongyu Wang
2022-03-26 6:35 ` Hongtao Liu
0 siblings, 2 replies; 7+ messages in thread
From: H.J. Lu @ 2022-03-25 20:50 UTC (permalink / raw)
To: gcc-patches; +Cc: liuhongt, Uros Bizjak
Since KL instructions have no AVX512 version, replace the "v" register
constraint with the "x" register constraint.
PR target/105058
* config/i386/sse.md (loadiwkey): Replace "v" with "x".
(aes<aesklvariant>u8): Likewise.
---
gcc/config/i386/sse.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 29802d00ce6..33bd2c4768a 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -28364,8 +28364,8 @@ (define_insn "avx512f_dpbf16ps_<mode>_mask"
;; KEYLOCKER
(define_insn "loadiwkey"
- [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "v")
- (match_operand:V2DI 1 "register_operand" "v")
+ [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "x")
+ (match_operand:V2DI 1 "register_operand" "x")
(match_operand:V2DI 2 "register_operand" "Yz")
(match_operand:SI 3 "register_operand" "a")]
UNSPECV_LOADIWKEY)
@@ -28498,7 +28498,7 @@ (define_int_attr aesklvariant
(UNSPECV_AESENC256KLU8 "enc256kl")])
(define_insn "aes<aesklvariant>u8"
- [(set (match_operand:V2DI 0 "register_operand" "=v")
+ [(set (match_operand:V2DI 0 "register_operand" "=x")
(unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0")
(match_operand:BLK 2 "memory_operand" "m")]
AESDECENCKL))
--
2.35.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86: Use x constraint on KL patterns
2022-03-25 20:50 [PATCH] x86: Use x constraint on KL patterns H.J. Lu
@ 2022-03-26 1:08 ` Hongyu Wang
2022-03-26 1:22 ` H.J. Lu
2022-03-26 6:35 ` Hongtao Liu
1 sibling, 1 reply; 7+ messages in thread
From: Hongyu Wang @ 2022-03-26 1:08 UTC (permalink / raw)
To: H.J. Lu; +Cc: GCC Patches, liuhongt
Is it possible to create a test case that gas would throw an error for
invalid operands?
H.J. Lu via Gcc-patches <gcc-patches@gcc.gnu.org> 于2022年3月26日周六 04:50写道:
>
> Since KL instructions have no AVX512 version, replace the "v" register
> constraint with the "x" register constraint.
>
> PR target/105058
> * config/i386/sse.md (loadiwkey): Replace "v" with "x".
> (aes<aesklvariant>u8): Likewise.
> ---
> gcc/config/i386/sse.md | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> index 29802d00ce6..33bd2c4768a 100644
> --- a/gcc/config/i386/sse.md
> +++ b/gcc/config/i386/sse.md
> @@ -28364,8 +28364,8 @@ (define_insn "avx512f_dpbf16ps_<mode>_mask"
>
> ;; KEYLOCKER
> (define_insn "loadiwkey"
> - [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "v")
> - (match_operand:V2DI 1 "register_operand" "v")
> + [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "x")
> + (match_operand:V2DI 1 "register_operand" "x")
> (match_operand:V2DI 2 "register_operand" "Yz")
> (match_operand:SI 3 "register_operand" "a")]
> UNSPECV_LOADIWKEY)
> @@ -28498,7 +28498,7 @@ (define_int_attr aesklvariant
> (UNSPECV_AESENC256KLU8 "enc256kl")])
>
> (define_insn "aes<aesklvariant>u8"
> - [(set (match_operand:V2DI 0 "register_operand" "=v")
> + [(set (match_operand:V2DI 0 "register_operand" "=x")
> (unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0")
> (match_operand:BLK 2 "memory_operand" "m")]
> AESDECENCKL))
> --
> 2.35.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86: Use x constraint on KL patterns
2022-03-26 1:08 ` Hongyu Wang
@ 2022-03-26 1:22 ` H.J. Lu
2022-03-26 2:04 ` Hongyu Wang
0 siblings, 1 reply; 7+ messages in thread
From: H.J. Lu @ 2022-03-26 1:22 UTC (permalink / raw)
To: Hongyu Wang; +Cc: GCC Patches, liuhongt
On Fri, Mar 25, 2022 at 6:08 PM Hongyu Wang <wwwhhhyyy333@gmail.com> wrote:
>
> Is it possible to create a test case that gas would throw an error for
> invalid operands?
You can use -ffix-xmmN to disable XMM0-15.
> H.J. Lu via Gcc-patches <gcc-patches@gcc.gnu.org> 于2022年3月26日周六 04:50写道:
> >
> > Since KL instructions have no AVX512 version, replace the "v" register
> > constraint with the "x" register constraint.
> >
> > PR target/105058
> > * config/i386/sse.md (loadiwkey): Replace "v" with "x".
> > (aes<aesklvariant>u8): Likewise.
> > ---
> > gcc/config/i386/sse.md | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> > index 29802d00ce6..33bd2c4768a 100644
> > --- a/gcc/config/i386/sse.md
> > +++ b/gcc/config/i386/sse.md
> > @@ -28364,8 +28364,8 @@ (define_insn "avx512f_dpbf16ps_<mode>_mask"
> >
> > ;; KEYLOCKER
> > (define_insn "loadiwkey"
> > - [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "v")
> > - (match_operand:V2DI 1 "register_operand" "v")
> > + [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "x")
> > + (match_operand:V2DI 1 "register_operand" "x")
> > (match_operand:V2DI 2 "register_operand" "Yz")
> > (match_operand:SI 3 "register_operand" "a")]
> > UNSPECV_LOADIWKEY)
> > @@ -28498,7 +28498,7 @@ (define_int_attr aesklvariant
> > (UNSPECV_AESENC256KLU8 "enc256kl")])
> >
> > (define_insn "aes<aesklvariant>u8"
> > - [(set (match_operand:V2DI 0 "register_operand" "=v")
> > + [(set (match_operand:V2DI 0 "register_operand" "=x")
> > (unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0")
> > (match_operand:BLK 2 "memory_operand" "m")]
> > AESDECENCKL))
> > --
> > 2.35.1
> >
--
H.J.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86: Use x constraint on KL patterns
2022-03-26 1:22 ` H.J. Lu
@ 2022-03-26 2:04 ` Hongyu Wang
2022-03-26 2:08 ` H.J. Lu
2022-03-26 6:51 ` Hongtao Liu
0 siblings, 2 replies; 7+ messages in thread
From: Hongyu Wang @ 2022-03-26 2:04 UTC (permalink / raw)
To: H.J. Lu; +Cc: GCC Patches, liuhongt
> > Is it possible to create a test case that gas would throw an error for
> > invalid operands?
>
> You can use -ffix-xmmN to disable XMM0-15.
I mean can we create an intrinsic test for this PR that produces xmm16-31?
And the -ffix-xmmN is an option for assembler or compiler? I didn't
find it in document.
H.J. Lu <hjl.tools@gmail.com> 于2022年3月26日周六 09:22写道:
>
> On Fri, Mar 25, 2022 at 6:08 PM Hongyu Wang <wwwhhhyyy333@gmail.com> wrote:
> >
> > Is it possible to create a test case that gas would throw an error for
> > invalid operands?
>
> You can use -ffix-xmmN to disable XMM0-15.
>
> > H.J. Lu via Gcc-patches <gcc-patches@gcc.gnu.org> 于2022年3月26日周六 04:50写道:
> > >
> > > Since KL instructions have no AVX512 version, replace the "v" register
> > > constraint with the "x" register constraint.
> > >
> > > PR target/105058
> > > * config/i386/sse.md (loadiwkey): Replace "v" with "x".
> > > (aes<aesklvariant>u8): Likewise.
> > > ---
> > > gcc/config/i386/sse.md | 6 +++---
> > > 1 file changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> > > index 29802d00ce6..33bd2c4768a 100644
> > > --- a/gcc/config/i386/sse.md
> > > +++ b/gcc/config/i386/sse.md
> > > @@ -28364,8 +28364,8 @@ (define_insn "avx512f_dpbf16ps_<mode>_mask"
> > >
> > > ;; KEYLOCKER
> > > (define_insn "loadiwkey"
> > > - [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "v")
> > > - (match_operand:V2DI 1 "register_operand" "v")
> > > + [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "x")
> > > + (match_operand:V2DI 1 "register_operand" "x")
> > > (match_operand:V2DI 2 "register_operand" "Yz")
> > > (match_operand:SI 3 "register_operand" "a")]
> > > UNSPECV_LOADIWKEY)
> > > @@ -28498,7 +28498,7 @@ (define_int_attr aesklvariant
> > > (UNSPECV_AESENC256KLU8 "enc256kl")])
> > >
> > > (define_insn "aes<aesklvariant>u8"
> > > - [(set (match_operand:V2DI 0 "register_operand" "=v")
> > > + [(set (match_operand:V2DI 0 "register_operand" "=x")
> > > (unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0")
> > > (match_operand:BLK 2 "memory_operand" "m")]
> > > AESDECENCKL))
> > > --
> > > 2.35.1
> > >
>
>
>
> --
> H.J.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86: Use x constraint on KL patterns
2022-03-26 2:04 ` Hongyu Wang
@ 2022-03-26 2:08 ` H.J. Lu
2022-03-26 6:51 ` Hongtao Liu
1 sibling, 0 replies; 7+ messages in thread
From: H.J. Lu @ 2022-03-26 2:08 UTC (permalink / raw)
To: Hongyu Wang; +Cc: GCC Patches, liuhongt
On Fri, Mar 25, 2022 at 7:04 PM Hongyu Wang <wwwhhhyyy333@gmail.com> wrote:
>
> > > Is it possible to create a test case that gas would throw an error for
> > > invalid operands?
> >
> > You can use -ffix-xmmN to disable XMM0-15.
>
> I mean can we create an intrinsic test for this PR that produces xmm16-31?
> And the -ffix-xmmN is an option for assembler or compiler? I didn't
> find it in document.
You can add -march=skylake-avx512 -ffix-xmm0 ... -ffix-xmm15 to force
XMM16-XMM31.
> H.J. Lu <hjl.tools@gmail.com> 于2022年3月26日周六 09:22写道:
> >
> > On Fri, Mar 25, 2022 at 6:08 PM Hongyu Wang <wwwhhhyyy333@gmail.com> wrote:
> > >
> > > Is it possible to create a test case that gas would throw an error for
> > > invalid operands?
> >
> > You can use -ffix-xmmN to disable XMM0-15.
> >
> > > H.J. Lu via Gcc-patches <gcc-patches@gcc.gnu.org> 于2022年3月26日周六 04:50写道:
> > > >
> > > > Since KL instructions have no AVX512 version, replace the "v" register
> > > > constraint with the "x" register constraint.
> > > >
> > > > PR target/105058
> > > > * config/i386/sse.md (loadiwkey): Replace "v" with "x".
> > > > (aes<aesklvariant>u8): Likewise.
> > > > ---
> > > > gcc/config/i386/sse.md | 6 +++---
> > > > 1 file changed, 3 insertions(+), 3 deletions(-)
> > > >
> > > > diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> > > > index 29802d00ce6..33bd2c4768a 100644
> > > > --- a/gcc/config/i386/sse.md
> > > > +++ b/gcc/config/i386/sse.md
> > > > @@ -28364,8 +28364,8 @@ (define_insn "avx512f_dpbf16ps_<mode>_mask"
> > > >
> > > > ;; KEYLOCKER
> > > > (define_insn "loadiwkey"
> > > > - [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "v")
> > > > - (match_operand:V2DI 1 "register_operand" "v")
> > > > + [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "x")
> > > > + (match_operand:V2DI 1 "register_operand" "x")
> > > > (match_operand:V2DI 2 "register_operand" "Yz")
> > > > (match_operand:SI 3 "register_operand" "a")]
> > > > UNSPECV_LOADIWKEY)
> > > > @@ -28498,7 +28498,7 @@ (define_int_attr aesklvariant
> > > > (UNSPECV_AESENC256KLU8 "enc256kl")])
> > > >
> > > > (define_insn "aes<aesklvariant>u8"
> > > > - [(set (match_operand:V2DI 0 "register_operand" "=v")
> > > > + [(set (match_operand:V2DI 0 "register_operand" "=x")
> > > > (unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0")
> > > > (match_operand:BLK 2 "memory_operand" "m")]
> > > > AESDECENCKL))
> > > > --
> > > > 2.35.1
> > > >
> >
> >
> >
> > --
> > H.J.
--
H.J.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86: Use x constraint on KL patterns
2022-03-25 20:50 [PATCH] x86: Use x constraint on KL patterns H.J. Lu
2022-03-26 1:08 ` Hongyu Wang
@ 2022-03-26 6:35 ` Hongtao Liu
1 sibling, 0 replies; 7+ messages in thread
From: Hongtao Liu @ 2022-03-26 6:35 UTC (permalink / raw)
To: H.J. Lu; +Cc: GCC Patches, liuhongt
On Sat, Mar 26, 2022 at 4:50 AM H.J. Lu via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Since KL instructions have no AVX512 version, replace the "v" register
> constraint with the "x" register constraint.
>
> PR target/105058
> * config/i386/sse.md (loadiwkey): Replace "v" with "x".
> (aes<aesklvariant>u8): Likewise.
LGTM, please backport to GCC11.
> ---
> gcc/config/i386/sse.md | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> index 29802d00ce6..33bd2c4768a 100644
> --- a/gcc/config/i386/sse.md
> +++ b/gcc/config/i386/sse.md
> @@ -28364,8 +28364,8 @@ (define_insn "avx512f_dpbf16ps_<mode>_mask"
>
> ;; KEYLOCKER
> (define_insn "loadiwkey"
> - [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "v")
> - (match_operand:V2DI 1 "register_operand" "v")
> + [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "x")
> + (match_operand:V2DI 1 "register_operand" "x")
> (match_operand:V2DI 2 "register_operand" "Yz")
> (match_operand:SI 3 "register_operand" "a")]
> UNSPECV_LOADIWKEY)
> @@ -28498,7 +28498,7 @@ (define_int_attr aesklvariant
> (UNSPECV_AESENC256KLU8 "enc256kl")])
>
> (define_insn "aes<aesklvariant>u8"
> - [(set (match_operand:V2DI 0 "register_operand" "=v")
> + [(set (match_operand:V2DI 0 "register_operand" "=x")
> (unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0")
> (match_operand:BLK 2 "memory_operand" "m")]
> AESDECENCKL))
> --
> 2.35.1
>
--
BR,
Hongtao
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86: Use x constraint on KL patterns
2022-03-26 2:04 ` Hongyu Wang
2022-03-26 2:08 ` H.J. Lu
@ 2022-03-26 6:51 ` Hongtao Liu
1 sibling, 0 replies; 7+ messages in thread
From: Hongtao Liu @ 2022-03-26 6:51 UTC (permalink / raw)
To: Hongyu Wang; +Cc: H.J. Lu, liuhongt, GCC Patches
On Sat, Mar 26, 2022 at 10:05 AM Hongyu Wang via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> > > Is it possible to create a test case that gas would throw an error for
> > > invalid operands?
> >
> > You can use -ffix-xmmN to disable XMM0-15.
>
> I mean can we create an intrinsic test for this PR that produces xmm16-31?
> And the -ffix-xmmN is an option for assembler or compiler? I didn't
> find it in document.
Can be reproduced by below testcase.
#include <immintrin.h>
unsigned int ctrl;
__m128i k1, k2, k3;
void
test_keylocker_11 (void)
{
register __m128i k4 __asm ("xmm16") = k2;
asm volatile ("" : "+v" (k4));
_mm_loadiwkey (ctrl, k1, k4, k3);
}
/tmp/ccy9VHP9.s: Assembler messages:
/tmp/ccy9VHP9.s:13: Error: unsupported instruction `loadiwkey'
>
> H.J. Lu <hjl.tools@gmail.com> 于2022年3月26日周六 09:22写道:
> >
> > On Fri, Mar 25, 2022 at 6:08 PM Hongyu Wang <wwwhhhyyy333@gmail.com> wrote:
> > >
> > > Is it possible to create a test case that gas would throw an error for
> > > invalid operands?
> >
> > You can use -ffix-xmmN to disable XMM0-15.
> >
> > > H.J. Lu via Gcc-patches <gcc-patches@gcc.gnu.org> 于2022年3月26日周六 04:50写道:
> > > >
> > > > Since KL instructions have no AVX512 version, replace the "v" register
> > > > constraint with the "x" register constraint.
> > > >
> > > > PR target/105058
> > > > * config/i386/sse.md (loadiwkey): Replace "v" with "x".
> > > > (aes<aesklvariant>u8): Likewise.
> > > > ---
> > > > gcc/config/i386/sse.md | 6 +++---
> > > > 1 file changed, 3 insertions(+), 3 deletions(-)
> > > >
> > > > diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> > > > index 29802d00ce6..33bd2c4768a 100644
> > > > --- a/gcc/config/i386/sse.md
> > > > +++ b/gcc/config/i386/sse.md
> > > > @@ -28364,8 +28364,8 @@ (define_insn "avx512f_dpbf16ps_<mode>_mask"
> > > >
> > > > ;; KEYLOCKER
> > > > (define_insn "loadiwkey"
> > > > - [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "v")
> > > > - (match_operand:V2DI 1 "register_operand" "v")
> > > > + [(unspec_volatile:V2DI [(match_operand:V2DI 0 "register_operand" "x")
> > > > + (match_operand:V2DI 1 "register_operand" "x")
> > > > (match_operand:V2DI 2 "register_operand" "Yz")
> > > > (match_operand:SI 3 "register_operand" "a")]
> > > > UNSPECV_LOADIWKEY)
> > > > @@ -28498,7 +28498,7 @@ (define_int_attr aesklvariant
> > > > (UNSPECV_AESENC256KLU8 "enc256kl")])
> > > >
> > > > (define_insn "aes<aesklvariant>u8"
> > > > - [(set (match_operand:V2DI 0 "register_operand" "=v")
> > > > + [(set (match_operand:V2DI 0 "register_operand" "=x")
> > > > (unspec_volatile:V2DI [(match_operand:V2DI 1 "register_operand" "0")
> > > > (match_operand:BLK 2 "memory_operand" "m")]
> > > > AESDECENCKL))
> > > > --
> > > > 2.35.1
> > > >
> >
> >
> >
> > --
> > H.J.
--
BR,
Hongtao
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-03-26 6:51 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-25 20:50 [PATCH] x86: Use x constraint on KL patterns H.J. Lu
2022-03-26 1:08 ` Hongyu Wang
2022-03-26 1:22 ` H.J. Lu
2022-03-26 2:04 ` Hongyu Wang
2022-03-26 2:08 ` H.J. Lu
2022-03-26 6:51 ` Hongtao Liu
2022-03-26 6:35 ` Hongtao Liu
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).