On Thu, May 14, 2026 at 1:44 AM Andi Kleen <[email protected]> wrote:
>
> From: Andi Kleen <[email protected]>
>
> Add explicit assembler mode for cases when the argument is not
> unambigious. This avoids cases where a 64bit argument is handled with a
> 32bit instruction.
>
>         PR 124316
>
> gcc/ChangeLog:
>
>         * config/i386/i386.md (ptwrite): Add explicit mode to
>           instruction.
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.target/i386/pr124316.c: New test.

OK for mainline and backports.

Thanks,
Uros.

> ---
>  gcc/config/i386/i386.md                  |  2 +-
>  gcc/testsuite/gcc.target/i386/pr124316.c | 14 ++++++++++++++
>  2 files changed, 15 insertions(+), 1 deletion(-)
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr124316.c
>
> diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
> index b4e397bc925b..075e47a2b94c 100644
> --- a/gcc/config/i386/i386.md
> +++ b/gcc/config/i386/i386.md
> @@ -30272,7 +30272,7 @@ (define_insn "ptwrite<mode>"
>    [(unspec_volatile [(match_operand:SWI48 0 "nonimmediate_operand" "rm")]
>                     UNSPECV_PTWRITE)]
>    "TARGET_PTWRITE"
> -  "ptwrite\t%0"
> +  "ptwrite<imodesuffix>\t%0"
>    [(set_attr "type" "other")
>     (set_attr "prefix_0f" "1")
>     (set_attr "prefix_rep" "1")])
> diff --git a/gcc/testsuite/gcc.target/i386/pr124316.c 
> b/gcc/testsuite/gcc.target/i386/pr124316.c
> new file mode 100644
> index 000000000000..c1959611a926
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr124316.c
> @@ -0,0 +1,14 @@
> +/* { dg-do compile { target { ! ia32 } } } */
> +/* { dg-options "-mptwrite" } */
> +#include <x86gprintrin.h>
> +
> +unsigned long long ull;
> +unsigned u;
> +void foo()
> +{
> +    _ptwrite64(ull);
> +    _ptwrite32(u);
> +}
> +
> +/* { dg-final { scan-assembler-times "ptwritel" 1 } } */
> +/* { dg-final { scan-assembler-times "ptwriteq" 1 } } */
> --
> 2.54.0
>

Reply via email to