> -----Original Message-----
> From: Jiang, Haochen <[email protected]>
> Sent: Monday, September 14, 2026 10:53 AM
> To: [email protected]
> Cc: Liu, Hongtao <[email protected]>; [email protected]
> Subject: [PATCH] i386: Unify predicate check for ACE tmm reg [PR127264]
>
> Hi all,
>
> This patch is going to fix PR127264.
>
> Bootstrapped and regtested on x86_64-pc-linux-gnu. Ok for trunk?
Ok.
>
> Thx,
> Haochen
>
> gcc/ChangeLog:
>
> PR target/127264
> * config/i386/i386-expand.cc (ix86_expand_ace_builtin):
> Revise logic to avoid INTVAL check for non-constant
> operands.
>
> gcc/testsuite/ChangeLog:
>
> PR target/127264
> * gcc.target/i386/pr127264.c: New test.
> ---
> gcc/config/i386/i386-expand.cc | 17 +++++++----------
> gcc/testsuite/gcc.target/i386/pr127264.c | 7 +++++++
> 2 files changed, 14 insertions(+), 10 deletions(-) create mode 100644
> gcc/testsuite/gcc.target/i386/pr127264.c
>
> diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
> index 1b76fe91ca2..2add62bc613 100644
> --- a/gcc/config/i386/i386-expand.cc
> +++ b/gcc/config/i386/i386-expand.cc
> @@ -14773,19 +14773,16 @@ ix86_expand_ace_builtin (const struct
> builtin_description *d, tree exp,
>
> if (i == 0 || i == constant)
> {
> - if (i == 0 && !IN_RANGE (INTVAL (op), 0, 7))
> + if (!insn_p->operand[i + arg_adjust].predicate(op, SImode))
> {
> - /* This must be the tmm reg number constant. */
> - error ("the tmm register number argument must be between 0 to
> 7");
> - return const0_rtx;
> - }
> - else if (!insn_p->operand[i + arg_adjust].predicate(op, SImode))
> - {
> - /* This must be the constant. */
> - error ("the argument must be constant");
> + if (i == 0)
> + /* This must be the tmm reg number constant. */
> + error ("the tmm register number argument must be between
> 0 to 7");
> + else
> + /* This must be the constant. */
> + error ("the argument must be constant");
> return const0_rtx;
> }
> -
> }
> else
> {
> diff --git a/gcc/testsuite/gcc.target/i386/pr127264.c
> b/gcc/testsuite/gcc.target/i386/pr127264.c
> new file mode 100644
> index 00000000000..c83362f4b05
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr127264.c
> @@ -0,0 +1,7 @@
> +/* { dg-do compile { target { ! ia32 } } } */
> +/* { dg-options "-O2 -macev1" } */
> +
> +void ace (char c)
> +{
> + __builtin_ia32_tilezero (c); /* { dg-error "the tmm register number
> +argument must be between 0 to 7" "" { target { ! ia32 } } 0 } */ }
> --
> 2.31.1