diff options
author | Hongtao Liu <hongtao.liu@intel.com> | 2019-10-26 02:40:19 +0000 |
---|---|---|
committer | Hongtao Liu <liuhongt@gcc.gnu.org> | 2019-10-26 02:40:19 +0000 |
commit | 8bbf3dea78325c39d7750e815024eef960415592 (patch) | |
tree | 7cbd19b6deb34d157c7af30b9da0f4ee81c0e8c8 /gcc | |
parent | 011464ede0edbcb5512bf24374fe8805f654d82e (diff) | |
download | gcc-8bbf3dea78325c39d7750e815024eef960415592.zip gcc-8bbf3dea78325c39d7750e815024eef960415592.tar.gz gcc-8bbf3dea78325c39d7750e815024eef960415592.tar.bz2 |
Adjust predicates and constraints of scalar insns.
Changelog
gcc/
* config/i386/sse.md
(<sse>_vm<plusminus_insn><mode>3<mask_scalar_name><round_scalar_name>,
<sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name><round_scalar_name>,
<sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>,
<sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name>,
<sse>_vmmaskcmp<mode>3):
Change predicates from vector_operand to nonimmediate_operand,
constraints xBm to xm, since scalar operations don't need
memory address alignment.
(avx512f_vmcmp<mode>3<round_saeonly_name>,
avx512f_vmcmp<mode>3_mask<round_saeonly_name>): Replace
round_saeonly_nimm_predicate with
round_saeonly_nimm_scalar_predicate.
(fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>,
fmai_vmfnmadd_<mode><round_name>,fmai_vmfnmsub_<mode><round_name>,
*fmai_fmadd_<mode>, *fmai_fmsub_<mode>,
*fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>,
avx512f_vmfmadd_<mode>_mask3<round_name>,
avx512f_vmfmadd_<mode>_maskz_1<round_name>,
*avx512f_vmfmsub_<mode>_mask<round_name>,
avx512f_vmfmsub_<mode>_mask3<round_name>,
*avx512f_vmfmsub_<mode>_maskz_1<round_name>,
*avx512f_vmfnmadd_<mode>_mask<round_name>,
*avx512f_vmfnmadd_<mode>_mask3<round_name>,
*avx512f_vmfnmadd_<mode>_maskz_1<round_name>,
*avx512f_vmfnmsub_<mode>_mask<round_name>,
*avx512f_vmfnmsub_<mode>_mask3<round_name>,
*avx512f_vmfnmsub_<mode>_maskz_1<round_name>,
cvtusi2<ssescalarmodesuffix>32<round_name>,
cvtusi2<ssescalarmodesuffix>64<round_name>, ): Replace
round_nimm_predicate with round_nimm_scalr_predicate.
(avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
avx512f_sfixupimm<mode>_mask<round_saeonly_name>,
avx512er_vmrcp28<mode><round_saeonly_name>,
avx512er_vmrsqrt28<mode><round_saeonly_name>,
): Replace round_saeonly_nimm_predicate with
round_saeonly_nimm_scalar_predicate.
(avx512dq_vmfpclass<mode><mask_scalar_merge_name>): Replace
vector_operand with nonimmediate_operand.
* config/i386/subst.md (round_scalar_nimm_predicate,
round_saeonly_scalar_nimm_predicate): Replace
vector_operand with nonimmediate_operand.
From-SVN: r277470
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 45 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 108 | ||||
-rw-r--r-- | gcc/config/i386/subst.md | 4 |
3 files changed, 101 insertions, 56 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7015e1b..3dc1b7c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,50 @@ 2019-10-26 Hongtao Liu <hongtao.liu@intel.com> + * config/i386/sse.md + (<sse>_vm<plusminus_insn><mode>3<mask_scalar_name><round_scalar_name>, + <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name><round_scalar_name>, + <sse>_vmsqrt<mode>2<mask_scalar_name><round_scalar_name>, + <sse>_vm<code><mode>3<mask_scalar_name><round_saeonly_scalar_name>, + <sse>_vmmaskcmp<mode>3): + Change predicates from vector_operand to nonimmediate_operand, + constraints xBm to xm, since scalar operations don't need + memory address alignment. + (avx512f_vmcmp<mode>3<round_saeonly_name>, + avx512f_vmcmp<mode>3_mask<round_saeonly_name>): Replace + round_saeonly_nimm_predicate with + round_saeonly_nimm_scalar_predicate. + (fmai_vmfmadd_<mode><round_name>, fmai_vmfmsub_<mode><round_name>, + fmai_vmfnmadd_<mode><round_name>,fmai_vmfnmsub_<mode><round_name>, + *fmai_fmadd_<mode>, *fmai_fmsub_<mode>, + *fmai_fnmadd_<mode><round_name>, *fmai_fnmsub_<mode><round_name>, + avx512f_vmfmadd_<mode>_mask3<round_name>, + avx512f_vmfmadd_<mode>_maskz_1<round_name>, + *avx512f_vmfmsub_<mode>_mask<round_name>, + avx512f_vmfmsub_<mode>_mask3<round_name>, + *avx512f_vmfmsub_<mode>_maskz_1<round_name>, + *avx512f_vmfnmadd_<mode>_mask<round_name>, + *avx512f_vmfnmadd_<mode>_mask3<round_name>, + *avx512f_vmfnmadd_<mode>_maskz_1<round_name>, + *avx512f_vmfnmsub_<mode>_mask<round_name>, + *avx512f_vmfnmsub_<mode>_mask3<round_name>, + *avx512f_vmfnmsub_<mode>_maskz_1<round_name>, + cvtusi2<ssescalarmodesuffix>32<round_name>, + cvtusi2<ssescalarmodesuffix>64<round_name>, ): Replace + round_nimm_predicate with round_nimm_scalr_predicate. + (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>, + avx512f_sfixupimm<mode>_mask<round_saeonly_name>, + avx512er_vmrcp28<mode><round_saeonly_name>, + avx512er_vmrsqrt28<mode><round_saeonly_name>, + ): Replace round_saeonly_nimm_predicate with + round_saeonly_nimm_scalar_predicate. + (avx512dq_vmfpclass<mode><mask_scalar_merge_name>): Replace + vector_operand with nonimmediate_operand. + * config/i386/subst.md (round_scalar_nimm_predicate, + round_saeonly_scalar_nimm_predicate): Replace + vector_operand with nonimmediate_operand. + +2019-10-26 Hongtao Liu <hongtao.liu@intel.com> + PR target/89071 * config/i386/i386.md (*rcpsf2_sse): Add avx_partial_xmm_update, prefer m constraint for TARGET_AVX. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index ce0dccf..077c1d6 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -1863,7 +1863,7 @@ (vec_merge:VF_128 (plusminus:VF_128 (match_operand:VF_128 1 "register_operand" "0,v") - (match_operand:VF_128 2 "vector_operand" "xBm,<round_scalar_constraint>")) + (match_operand:VF_128 2 "nonimmediate_operand" "xm,<round_scalar_constraint>")) (match_dup 1) (const_int 1)))] "TARGET_SSE" @@ -1940,7 +1940,7 @@ (vec_merge:VF_128 (multdiv:VF_128 (match_operand:VF_128 1 "register_operand" "0,v") - (match_operand:VF_128 2 "vector_operand" "xBm,<round_scalar_constraint>")) + (match_operand:VF_128 2 "nonimmediate_operand" "xm,<round_scalar_constraint>")) (match_dup 1) (const_int 1)))] "TARGET_SSE" @@ -2135,7 +2135,7 @@ [(set (match_operand:VF_128 0 "register_operand" "=x,v") (vec_merge:VF_128 (sqrt:VF_128 - (match_operand:VF_128 1 "vector_operand" "xBm,<round_scalar_constraint>")) + (match_operand:VF_128 1 "nonimmediate_operand" "xm,<round_scalar_constraint>")) (match_operand:VF_128 2 "register_operand" "0,v") (const_int 1)))] "TARGET_SSE" @@ -2368,7 +2368,7 @@ (vec_merge:VF_128 (smaxmin:VF_128 (match_operand:VF_128 1 "register_operand" "0,v") - (match_operand:VF_128 2 "vector_operand" "xBm,<round_saeonly_scalar_constraint>")) + (match_operand:VF_128 2 "nonimmediate_operand" "xm,<round_saeonly_scalar_constraint>")) (match_dup 1) (const_int 1)))] "TARGET_SSE" @@ -3012,7 +3012,7 @@ (vec_merge:VF_128 (match_operator:VF_128 3 "sse_comparison_operator" [(match_operand:VF_128 1 "register_operand" "0,x") - (match_operand:VF_128 2 "vector_operand" "xBm,xm")]) + (match_operand:VF_128 2 "nonimmediate_operand" "xm,xm")]) (match_dup 1) (const_int 1)))] "TARGET_SSE" @@ -3097,7 +3097,7 @@ (and:<avx512fmaskmode> (unspec:<avx512fmaskmode> [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>") + (match_operand:VF_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>") (match_operand:SI 3 "const_0_to_31_operand" "n")] UNSPEC_PCMP) (const_int 1)))] @@ -3113,7 +3113,7 @@ (and:<avx512fmaskmode> (unspec:<avx512fmaskmode> [(match_operand:VF_128 1 "register_operand" "v") - (match_operand:VF_128 2 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>") + (match_operand:VF_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>") (match_operand:SI 3 "const_0_to_31_operand" "n")] UNSPEC_PCMP) (and:<avx512fmaskmode> @@ -4742,8 +4742,8 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand") - (match_operand:VF_128 2 "<round_nimm_predicate>") - (match_operand:VF_128 3 "<round_nimm_predicate>")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>") + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>")) (match_dup 1) (const_int 1)))] "TARGET_FMA") @@ -4753,9 +4753,9 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand") - (match_operand:VF_128 2 "<round_nimm_predicate>") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>"))) (match_dup 1) (const_int 1)))] "TARGET_FMA") @@ -4765,9 +4765,9 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>")) (match_operand:VF_128 1 "register_operand") - (match_operand:VF_128 3 "<round_nimm_predicate>")) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>")) (match_dup 1) (const_int 1)))] "TARGET_FMA") @@ -4777,10 +4777,10 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>")) (match_operand:VF_128 1 "register_operand") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>"))) (match_dup 1) (const_int 1)))] "TARGET_FMA") @@ -4790,8 +4790,8 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>, v") - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>, v") + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" @@ -4806,9 +4806,9 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" @@ -4823,9 +4823,9 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")) (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" @@ -4840,10 +4840,10 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")) (match_operand:VF_128 1 "register_operand" "0,0") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))) (match_dup 1) (const_int 1)))] "TARGET_FMA || TARGET_AVX512F" @@ -4859,8 +4859,8 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v") - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v") + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")) (match_dup 1) (match_operand:QI 4 "register_operand" "Yk,Yk")) (match_dup 1) @@ -4877,8 +4877,8 @@ (vec_merge:VF_128 (vec_merge:VF_128 (fma:VF_128 - (match_operand:VF_128 1 "<round_nimm_predicate>" "%v") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>") + (match_operand:VF_128 1 "<round_nimm_scalar_predicate>" "%v") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>") (match_operand:VF_128 3 "register_operand" "0")) (match_dup 3) (match_operand:QI 4 "register_operand" "Yk")) @@ -4909,8 +4909,8 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v") - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v") + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")) (match_operand:VF_128 4 "const0_operand" "C,C") (match_operand:QI 5 "register_operand" "Yk,Yk")) (match_dup 1) @@ -4928,9 +4928,9 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))) (match_dup 1) (match_operand:QI 4 "register_operand" "Yk,Yk")) (match_dup 1) @@ -4947,8 +4947,8 @@ (vec_merge:VF_128 (vec_merge:VF_128 (fma:VF_128 - (match_operand:VF_128 1 "<round_nimm_predicate>" "%v") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>") + (match_operand:VF_128 1 "<round_nimm_scalar_predicate>" "%v") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>") (neg:VF_128 (match_operand:VF_128 3 "register_operand" "0"))) (match_dup 3) @@ -4966,9 +4966,9 @@ (vec_merge:VF_128 (fma:VF_128 (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))) (match_operand:VF_128 4 "const0_operand" "C,C") (match_operand:QI 5 "register_operand" "Yk,Yk")) (match_dup 1) @@ -4986,9 +4986,9 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")) (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")) (match_dup 1) (match_operand:QI 4 "register_operand" "Yk,Yk")) (match_dup 1) @@ -5006,8 +5006,8 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>")) - (match_operand:VF_128 1 "<round_nimm_predicate>" "%v") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>")) + (match_operand:VF_128 1 "<round_nimm_scalar_predicate>" "%v") (match_operand:VF_128 3 "register_operand" "0")) (match_dup 3) (match_operand:QI 4 "register_operand" "Yk")) @@ -5024,9 +5024,9 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")) (match_operand:VF_128 1 "register_operand" "0,0") - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>")) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")) (match_operand:VF_128 4 "const0_operand" "C,C") (match_operand:QI 5 "register_operand" "Yk,Yk")) (match_dup 1) @@ -5044,10 +5044,10 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")) (match_operand:VF_128 1 "register_operand" "0,0") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))) (match_dup 1) (match_operand:QI 4 "register_operand" "Yk,Yk")) (match_dup 1) @@ -5065,8 +5065,8 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>")) - (match_operand:VF_128 1 "<round_nimm_predicate>" "%v") + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>")) + (match_operand:VF_128 1 "<round_nimm_scalar_predicate>" "%v") (neg:VF_128 (match_operand:VF_128 3 "register_operand" "0"))) (match_dup 3) @@ -5084,10 +5084,10 @@ (vec_merge:VF_128 (fma:VF_128 (neg:VF_128 - (match_operand:VF_128 2 "<round_nimm_predicate>" "<round_constraint>,v")) + (match_operand:VF_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")) (match_operand:VF_128 1 "register_operand" "0,0") (neg:VF_128 - (match_operand:VF_128 3 "<round_nimm_predicate>" "v,<round_constraint>"))) + (match_operand:VF_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))) (match_operand:VF_128 4 "const0_operand" "C,C") (match_operand:QI 5 "register_operand" "Yk,Yk")) (match_dup 1) @@ -5355,7 +5355,7 @@ (vec_merge:VF_128 (vec_duplicate:VF_128 (unsigned_float:<ssescalarmode> - (match_operand:SI 2 "<round_nimm_predicate>" "<round_constraint3>"))) + (match_operand:SI 2 "<round_nimm_scalar_predicate>" "<round_constraint3>"))) (match_operand:VF_128 1 "register_operand" "v") (const_int 1)))] "TARGET_AVX512F && <round_modev4sf_condition>" @@ -5369,7 +5369,7 @@ (vec_merge:VF_128 (vec_duplicate:VF_128 (unsigned_float:<ssescalarmode> - (match_operand:DI 2 "<round_nimm_predicate>" "<round_constraint3>"))) + (match_operand:DI 2 "<round_nimm_scalar_predicate>" "<round_constraint3>"))) (match_operand:VF_128 1 "register_operand" "v") (const_int 1)))] "TARGET_AVX512F && TARGET_64BIT" @@ -9708,7 +9708,7 @@ (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "0") (match_operand:VF_128 2 "register_operand" "v") - (match_operand:<sseintvecmode> 3 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>") + (match_operand:<sseintvecmode> 3 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>") (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_FIXUPIMM) (match_dup 1) @@ -9725,7 +9725,7 @@ (unspec:VF_128 [(match_operand:VF_128 1 "register_operand" "0") (match_operand:VF_128 2 "register_operand" "v") - (match_operand:<sseintvecmode> 3 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>") + (match_operand:<sseintvecmode> 3 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>") (match_operand:SI 4 "const_0_to_255_operand")] UNSPEC_FIXUPIMM) (match_dup 1) @@ -18642,7 +18642,7 @@ [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 - [(match_operand:VF_128 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] + [(match_operand:VF_128 1 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")] UNSPEC_RCP28) (match_operand:VF_128 2 "register_operand" "v") (const_int 1)))] @@ -18668,7 +18668,7 @@ [(set (match_operand:VF_128 0 "register_operand" "=v") (vec_merge:VF_128 (unspec:VF_128 - [(match_operand:VF_128 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] + [(match_operand:VF_128 1 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")] UNSPEC_RSQRT28) (match_operand:VF_128 2 "register_operand" "v") (const_int 1)))] @@ -21888,7 +21888,7 @@ [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k") (and:<avx512fmaskmode> (unspec:<avx512fmaskmode> - [(match_operand:VF_128 1 "vector_operand" "vm") + [(match_operand:VF_128 1 "nonimmediate_operand" "vm") (match_operand:QI 2 "const_0_to_255_operand" "n")] UNSPEC_FPCLASS) (const_int 1)))] diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md index dd58905..0d37606 100644 --- a/gcc/config/i386/subst.md +++ b/gcc/config/i386/subst.md @@ -271,7 +271,7 @@ (define_subst_attr "round_scalar_mask_op3" "round_scalar" "" "<round_scalar_mask_operand3>") (define_subst_attr "round_scalar_constraint" "round_scalar" "vm" "v") (define_subst_attr "round_scalar_prefix" "round_scalar" "vex" "evex") -(define_subst_attr "round_scalar_nimm_predicate" "round_scalar" "vector_operand" "register_operand") +(define_subst_attr "round_scalar_nimm_predicate" "round_scalar" "nonimmediate_operand" "register_operand") (define_subst "round_scalar" [(set (match_operand:SUBST_V 0) @@ -296,7 +296,7 @@ (define_subst_attr "round_saeonly_scalar_mask_op4" "round_saeonly_scalar" "" "<round_saeonly_scalar_mask_operand4>") (define_subst_attr "round_saeonly_scalar_constraint" "round_saeonly_scalar" "vm" "v") (define_subst_attr "round_saeonly_scalar_prefix" "round_saeonly_scalar" "vex" "evex") -(define_subst_attr "round_saeonly_scalar_nimm_predicate" "round_saeonly_scalar" "vector_operand" "register_operand") +(define_subst_attr "round_saeonly_scalar_nimm_predicate" "round_saeonly_scalar" "nonimmediate_operand" "register_operand") (define_subst "round_saeonly_scalar" [(set (match_operand:SUBST_V 0) |