> -----Original Message-----
> From: Wang, Hongyu <[email protected]>
> Sent: Friday, December 26, 2025 1:17 PM
> To: [email protected]
> Cc: [email protected]; Liu, Hongtao <[email protected]>
> Subject: [PATCH] [APX] i386: Use setzucc by default when APX-ZU enabled
> 
> Hi,
> 
> When APX-ZU enabled, all legacy setcc can directly use zu sematic to avoid
> potential partial-dependency.
> 
> Sorry for disturbing if you received this multiple times, the smtp server I 
> used
> have some issue.
> 
> Bootstrapped/regtested on x86_64-pc-linux-gnu.
> Ok for trunk?

Ok.
> 
> gcc/ChangeLog:
> 
>       * config/i386/i386.md (*setcc_qi): Force output setzucc for
>       reg operand[0].
>       (*setcc_qi_slp): Likewise.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gcc.target/i386/apx-zu-3.c: New test.
> ---
>  gcc/config/i386/i386.md                  | 15 +++++++++++++--
>  gcc/testsuite/gcc.target/i386/apx-zu-3.c |  8 ++++++++
>  2 files changed, 21 insertions(+), 2 deletions(-)  create mode 100644
> gcc/testsuite/gcc.target/i386/apx-zu-3.c
> 
> diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index
> cae1e1016e0..ccc927ca5ec 100644
> --- a/gcc/config/i386/i386.md
> +++ b/gcc/config/i386/i386.md
> @@ -19880,7 +19880,13 @@ (define_insn "*setcc_qi"
>       (match_operator:QI 1 "ix86_comparison_operator"
>         [(reg FLAGS_REG) (const_int 0)]))]
>    ""
> -  "set%C1\t%0"
> +{
> +  if (REG_P (operands[0])
> +      && TARGET_APX_ZU)
> +    return "setzu%C1\t%0";
> +  else
> +    return "set%C1\t%0";
> +}
>    [(set_attr "type" "setcc")
>     (set_attr "mode" "QI")])
> 
> @@ -19889,7 +19895,12 @@ (define_insn "*setcc_qi_slp"
>       (match_operator:QI 1 "ix86_comparison_operator"
>         [(reg FLAGS_REG) (const_int 0)]))]
>    ""
> -  "set%C1\t%0"
> +{
> +  if (TARGET_APX_ZU)
> +    return "setzu%C1\t%0";
> +  else
> +    return "set%C1\t%0";
> +}
>    [(set_attr "type" "setcc")
>     (set_attr "mode" "QI")])
> 
> diff --git a/gcc/testsuite/gcc.target/i386/apx-zu-3.c
> b/gcc/testsuite/gcc.target/i386/apx-zu-3.c
> new file mode 100644
> index 00000000000..3028c939c9d
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/apx-zu-3.c
> @@ -0,0 +1,8 @@
> +/* { dg-do compile { target { ! ia32 } } } */
> +/* { dg-options "-mapxf -march=x86-64 -O2" } */
> +/* { dg-final { scan-assembler-times "setzune" 1} } */
> +
> +char foo0 (int a)
> +{
> +  return a == 0 ? 0 : 1;
> +}
> --
> 2.31.1

Reply via email to