> -----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
