aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/aarch64/predicates.md
diff options
context:
space:
mode:
authorAlex Coplan <alex.coplan@arm.com>2020-09-07 15:23:44 +0100
committerAlex Coplan <alex.coplan@arm.com>2020-09-07 15:24:03 +0100
commit2f8ae301f6a125f50b0a758047fcddae7b68daa8 (patch)
treebcc37e23e37f8ab11506078ad01dc66ccd84cd2d /gcc/config/aarch64/predicates.md
parentd4febc75e8dfab23bd3132d5747eded918f85107 (diff)
downloadgcc-2f8ae301f6a125f50b0a758047fcddae7b68daa8.zip
gcc-2f8ae301f6a125f50b0a758047fcddae7b68daa8.tar.gz
gcc-2f8ae301f6a125f50b0a758047fcddae7b68daa8.tar.bz2
aarch64: Remove redundant mult patterns
Following on from the previous commit to fix up the syntax for add/sub/adds/subs and friends with a sign/zero-extended operand, this patch removes the "mult" variants of these patterns which are all redundant. This patch removes the following patterns from the AArch64 backend: *adds_mul_imm_<mode> *subs_mul_imm_<mode> *adds_<optab><mode>_multp2 *subs_<optab><mode>_multp2 *add_mul_imm_<mode> *add_<optab><ALLX:mode>_mult_<GPI:mode> *add_<optab><SHORT:mode>_mult_si_uxtw *add_<optab><mode>_multp2 *add_<optab>si_multp2_uxtw *add_uxt<mode>_multp2 *add_uxtsi_multp2_uxtw *sub_mul_imm_<mode> *sub_mul_imm_si_uxtw *sub_<optab><mode>_multp2 *sub_<optab>si_multp2_uxtw *sub_uxt<mode>_multp2 *sub_uxtsi_multp2_uxtw *neg_mul_imm_<mode>2 *neg_mul_imm_si2_uxtw Together with the following predicates which were used only by these patterns: aarch64_pwr_imm3 aarch64_pwr_2_si aarch64_pwr_2_di These patterns are all redundant since multiplications by powers of two should be represented as shfits outside a (mem). --- gcc/ChangeLog: * config/aarch64/aarch64.md (*adds_mul_imm_<mode>): Delete. (*subs_mul_imm_<mode>): Delete. (*adds_<optab><mode>_multp2): Delete. (*subs_<optab><mode>_multp2): Delete. (*add_mul_imm_<mode>): Delete. (*add_<optab><ALLX:mode>_mult_<GPI:mode>): Delete. (*add_<optab><SHORT:mode>_mult_si_uxtw): Delete. (*add_<optab><mode>_multp2): Delete. (*add_<optab>si_multp2_uxtw): Delete. (*add_uxt<mode>_multp2): Delete. (*add_uxtsi_multp2_uxtw): Delete. (*sub_mul_imm_<mode>): Delete. (*sub_mul_imm_si_uxtw): Delete. (*sub_<optab><mode>_multp2): Delete. (*sub_<optab>si_multp2_uxtw): Delete. (*sub_uxt<mode>_multp2): Delete. (*sub_uxtsi_multp2_uxtw): Delete. (*neg_mul_imm_<mode>2): Delete. (*neg_mul_imm_si2_uxtw): Delete. * config/aarch64/predicates.md (aarch64_pwr_imm3): Delete. (aarch64_pwr_2_si): Delete. (aarch64_pwr_2_di): Delete.
Diffstat (limited to 'gcc/config/aarch64/predicates.md')
-rw-r--r--gcc/config/aarch64/predicates.md15
1 files changed, 0 insertions, 15 deletions
diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md
index 1754b1e..91b5148 100644
--- a/gcc/config/aarch64/predicates.md
+++ b/gcc/config/aarch64/predicates.md
@@ -235,21 +235,6 @@
(and (match_code "const_int")
(match_test "IN_RANGE (UINTVAL (op), 0, 0xffffff)")))
-(define_predicate "aarch64_pwr_imm3"
- (and (match_code "const_int")
- (match_test "INTVAL (op) != 0
- && (unsigned) exact_log2 (INTVAL (op)) <= 4")))
-
-(define_predicate "aarch64_pwr_2_si"
- (and (match_code "const_int")
- (match_test "INTVAL (op) != 0
- && (unsigned) exact_log2 (INTVAL (op)) < 32")))
-
-(define_predicate "aarch64_pwr_2_di"
- (and (match_code "const_int")
- (match_test "INTVAL (op) != 0
- && (unsigned) exact_log2 (INTVAL (op)) < 64")))
-
(define_predicate "aarch64_mem_pair_offset"
(and (match_code "const_int")
(match_test "aarch64_offset_7bit_signed_scaled_p (mode, INTVAL (op))")))