aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/subst.md
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2022-05-30 21:38:16 +0200
committerUros Bizjak <ubizjak@gmail.com>2022-05-30 21:38:16 +0200
commit3595231d9f5aec301422b152809b1322bdb525fe (patch)
treee97f6acfe7aac15b95aac5dfaf5d074fa52b19ff /gcc/config/i386/subst.md
parentc89298404071e3b42eb7e2bfbdbaa45573538b53 (diff)
downloadgcc-3595231d9f5aec301422b152809b1322bdb525fe.zip
gcc-3595231d9f5aec301422b152809b1322bdb525fe.tar.gz
gcc-3595231d9f5aec301422b152809b1322bdb525fe.tar.bz2
i386: Remove constraints when used with constant integer predicates, take 2
const_int_operand and other const*_operand predicates do not need constraints when the constraint is inherited from the range of constant integer predicate. Remove the constraint in case all alternatives use the same inherited constraint. However, when there are operands, commitative with a non-constant operand, the operand effectively matches e.g. nonimmediate_operand|const_int_operand rather than just const_int_operand. We should keep the constraint for const_int_operand that are in a % pair. See PR 105624. 2022-05-30 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/i386.md: Remove constraints when used with const_int_operand, const0_operand, const_1_operand, constm1_operand, const8_operand, const128_operand, const248_operand, const123_operand, const2367_operand, const1248_operand, const359_operand, const_4_or_8_to_11_operand, const48_operand, const_0_to_1_operand, const_0_to_3_operand, const_0_to_4_operand, const_0_to_5_operand, const_0_to_7_operand, const_0_to_15_operand, const_0_to_31_operand, const_0_to_63_operand, const_0_to_127_operand, const_0_to_255_operand, const_0_to_255_mul_8_operand, const_1_to_31_operand, const_1_to_63_operand, const_2_to_3_operand, const_4_to_5_operand, const_4_to_7_operand, const_6_to_7_operand, const_8_to_9_operand, const_8_to_11_operand, const_8_to_15_operand, const_10_to_11_operand, const_12_to_13_operand, const_12_to_15_operand, const_14_to_15_operand, const_16_to_19_operand, const_16_to_31_operand, const_20_to_23_operand, const_24_to_27_operand and const_28_to_31_operand. * config/i386/mmx.md: Ditto. * config/i386/sse.md: Ditto. * config/i386/subst.md: Ditto. * config/i386/sync.md: Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/pr105624.c: New test.
Diffstat (limited to 'gcc/config/i386/subst.md')
-rw-r--r--gcc/config/i386/subst.md10
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md
index bb86f82..0b75882 100644
--- a/gcc/config/i386/subst.md
+++ b/gcc/config/i386/subst.md
@@ -137,7 +137,7 @@
[(set (match_dup 0)
(vec_merge:SUBST_V
(match_dup 1)
- (match_operand:SUBST_V 2 "const0_operand" "C")
+ (match_operand:SUBST_V 2 "const0_operand")
(match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))
])
@@ -155,7 +155,7 @@
(vec_merge:SUBST_V
(vec_merge:SUBST_V
(match_dup 1)
- (match_operand:SUBST_V 3 "const0_operand" "C")
+ (match_operand:SUBST_V 3 "const0_operand")
(match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
(match_dup 2)
(const_int 1)))])
@@ -171,7 +171,7 @@
[(set (match_dup 0)
(vec_merge:SUBST_CV
(match_dup 1)
- (match_operand:SUBST_CV 2 "const0_operand" "C")
+ (match_operand:SUBST_CV 2 "const0_operand")
(unspec:<avx512fmaskmode>
[(match_operand:<avx512fmaskcmode> 3 "register_operand" "Yk")]
UNSPEC_COMPLEX_MASK)))
@@ -372,7 +372,7 @@
(vec_merge:SUBST_CV
(vec_merge:SUBST_CV
(match_dup 1)
- (match_operand:SUBST_CV 3 "const0_operand" "C")
+ (match_operand:SUBST_CV 3 "const0_operand")
(unspec:<avx512fmaskmode>
[(match_operand:<avx512fmaskcmode> 4 "register_operand" "Yk")]
UNSPEC_COMPLEX_MASK))
@@ -478,5 +478,5 @@
[(set (match_dup 0)
(vec_merge:SUBST_V
(match_dup 1)
- (match_operand:SUBST_V 2 "const0_operand" "C")
+ (match_operand:SUBST_V 2 "const0_operand")
(match_operand:<avx512fmaskhalfmode> 3 "register_operand" "Yk")))])