> -----Original Message-----
> From: Kong, Lingling <lingling.k...@intel.com>
> Sent: Thursday, August 1, 2024 9:30 AM
> To: gcc-patches@gcc.gnu.org
> Cc: Liu, Hongtao <hongtao....@intel.com>; Wang, Hongyu
> <hongyu.w...@intel.com>
> Subject: [PATCH] i386: Fix memory constraint for APX NF
>
> The je constraint should be used for APX NDD ADD with register source
> operand. The jM is for APX NDD patterns with immediate operand.
But these 2 alternatives is for Non-NDD.
>
> Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,}.
> Ok for trunk?
>
> gcc/ChangeLog:
>
> * config/i386/i386.md (nf_mem_constraint): Fixed the constraint
> for the define_subst_attr.
> (nf_mem_constraint): Added new define_subst_attr.
> (*add<mode>_1<nf_name>): Fixed the constraint.
> ---
> gcc/config/i386/i386.md | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index
> fb10fdc9f96..aa7220ee17c 100644
> --- a/gcc/config/i386/i386.md
> +++ b/gcc/config/i386/i386.md
> @@ -6500,7 +6500,8 @@
> (define_subst_attr "nf_name" "nf_subst" "_nf" "") (define_subst_attr
> "nf_prefix" "nf_subst" "%{nf%} " "") (define_subst_attr "nf_condition"
> "nf_subst" "TARGET_APX_NF" "true") -(define_subst_attr
> "nf_mem_constraint" "nf_subst" "je" "m")
> +(define_subst_attr "nf_add_mem_constraint" "nf_subst" "je" "m")
> +(define_subst_attr "nf_mem_constraint" "nf_subst" "jM" "m")
> (define_subst_attr "nf_applied" "nf_subst" "true" "false")
> (define_subst_attr
> "nf_nonf_attr" "nf_subst" "noapx_nf" "*") (define_subst_attr
> "nf_nonf_x64_attr" "nf_subst" "noapx_nf" "x64") @@ -6514,7 +6515,7 @@
> (clobber (reg:CC FLAGS_REG))])
>
> (define_insn "*add<mode>_1<nf_name>"
> - [(set (match_operand:SWI48 0 "nonimmediate_operand"
> "=rm,r<nf_mem_constraint>,r,r,r,r,r,r")
> + [(set (match_operand:SWI48 0 "nonimmediate_operand"
> + "=r<nf_add_mem_constraint>,r<nf_mem_constraint>,r,r,r,r,r,r")
> (plus:SWI48
> (match_operand:SWI48 1 "nonimmediate_operand"
> "%0,0,0,r,r,rje,jM,r")
> (match_operand:SWI48 2 "x86_64_general_operand"
> "r,e,BM,0,le,r,e,BM")))]
> --
> 2.31.1