aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHongtao Liu <hongtao.liu@intel.com>2019-10-26 02:40:19 +0000
committerHongtao Liu <liuhongt@gcc.gnu.org>2019-10-26 02:40:19 +0000
commit8bbf3dea78325c39d7750e815024eef960415592 (patch)
tree7cbd19b6deb34d157c7af30b9da0f4ee81c0e8c8 /gcc
parent011464ede0edbcb5512bf24374fe8805f654d82e (diff)
downloadgcc-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/ChangeLog45
-rw-r--r--gcc/config/i386/sse.md108
-rw-r--r--gcc/config/i386/subst.md4
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)