diff options
author | sofiane <sofiane@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-18 09:08:56 +0000 |
---|---|---|
committer | sofiane <sofiane@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-18 09:08:56 +0000 |
commit | 6b6abc9c2a6016e977e26eb6bdbdc105cf899b84 (patch) | |
tree | 7f34aff6fa9f7d2365591f4df600a02471b25162 | |
parent | 80880eb66680ee4f0f40a230fcc6c68e202df74f (diff) | |
download | gcc-6b6abc9c2a6016e977e26eb6bdbdc105cf899b84.tar.gz |
* config/arm/arm.md (attribute "type"): Rename "simple_alu_imm" to
"arlo_imm". Rename "alu_reg" to "arlo_reg". Rename "simple_alu_shift" to
"extend". Split "alu_shift" into "shift" and "arlo_shift". Split
"alu_shift_reg" into "shift_reg" and "arlo_shift_reg". List types
in alphabetical order.
(attribute "core_cycles"): Update for attribute changes.
(arm_addsi3): Likewise.
(addsi3_compare0): Likewise.
(addsi3_compare0_scratch): Likewise.
(addsi3_compare_op1): Likewise.
(addsi3_compare_op2): Likewise.
(compare_addsi2_op0): Likewise.
(compare_addsi2_op1): Likewise.
(addsi3_carryin_shift_<optab>): Likewise.
(subsi3_carryin_shift): Likewise.
(rsbsi3_carryin_shift): Likewise.
(arm_subsi3_insn): Likewise.
(subsi3_compare0): Likewise.
(subsi3_compare): Likewise.
(arm_andsi3_insn): Likewise.
(thumb1_andsi3_insn): Likewise.
(andsi3_compare0): Likewise.
(andsi3_compare0_scratch): Likewise.
(zeroextractsi_compare0_scratch
(andsi_not_shiftsi_si): Likewise.
(iorsi3_insn): Likewise.
(iorsi3_compare0): Likewise.
(iorsi3_compare0_scratch): Likewise.
(arm_xorsi3): Likewise.
(thumb1_xorsi3_insn): Likewise.
(xorsi3_compare0): Likewise.
(xorsi3_compare0_scratch): Likewise.
(satsi_<SAT:code>_shift): Likewise.
(rrx): Likewise.
(arm_shiftsi3): Likewise.
(shiftsi3_compare0): Likewise.
(not_shiftsi): Likewise.
(not_shiftsi_compare0): Likewise.
(not_shiftsi_compare0_scratch): Likewise.
(arm_one_cmplsi2): Likewise.
(thumb_one_complsi2): Likewise.
(notsi_compare0): Likewise.
(notsi_compare0_scratch): Likewise.
(thumb1_zero_extendhisi2): Likewise.
(arm_zero_extendhisi2): Likewise.
(arm_zero_extendhisi2_v6): Likewise.
(arm_zero_extendhisi2addsi): Likewise.
(thumb1_zero_extendqisi2): Likewise.
(thumb1_zero_extendqisi2_v6): Likewise.
(arm_zero_extendqisi2): Likewise.
(arm_zero_extendqisi2_v6): Likewise.
(arm_zero_extendqisi2addsi): Likewise.
(thumb1_extendhisi2): Likewise.
(arm_extendhisi2): Likewise.
(arm_extendhisi2_v6): Likewise.
(arm_extendqisi): Likewise.
(arm_extendqisi_v6): Likewise.
(arm_extendqisi2addsi): Likewise.
(thumb1_extendqisi2): Likewise.
(thumb1_movdi_insn): Likewise.
(arm_movsi_insn): Likewise.
(movsi_compare0): Likewise.
(movhi_insn_arch4): Likewise.
(movhi_bytes): Likewise.
(arm_movqi_insn): Likewise.
(thumb1_movqi_insn): Likewise.
(arm32_movhf): Likewise.
(thumb1_movhf): Likewise.
(arm_movsf_soft_insn): Likewise.
(thumb1_movsf_insn): Likewise.
(movdf_soft_insn): Likewise.
(thumb_movdf_insn): Likewise.
(arm_cmpsi_insn): Likewise.
(cmpsi_shiftsi): Likewise.
(cmpsi_shiftsi_swp): Likewise.
(arm_cmpsi_negshiftsi_si): Likewise.
(movsicc_insn): Likewise.
(movsfcc_soft_insn): Likewise.
(arith_shiftsi): Likewise.
(arith_shiftsi_compare0
(arith_shiftsi_compare0_scratch
(sub_shiftsi): Likewise.
(sub_shiftsi_compare0
(sub_shiftsi_compare0_scratch
(and_scc): Likewise.
(cond_move): Likewise.
(if_plus_move): Likewise.
(if_move_plus): Likewise.
(if_move_not): Likewise.
(if_not_move): Likewise.
(if_shift_move): Likewise.
(if_move_shift): Likewise.
(if_shift_shift): Likewise.
(if_not_arith): Likewise.
(if_arith_not): Likewise.
(cond_move_not): Likewise.
(thumb1_ashlsi3): Set type attribute.
(thumb1_ashrsi3): Likewise.
(thumb1_lshrsi3): Likewise.
(thumb1_rotrsi3): Likewise.
(shiftsi3_compare0_scratch): Likewise.
* config/arm/neon.md (neon_mov<mode>): Update for attribute changes.
(neon_mov<mode>): Likewise.
* config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Update for attribute
changes.
(thumb2_movsi_insn): Likewise.
(thumb2_cmpsi_neg_shiftsi): Likewise.
(thumb2_extendqisi_v6): Likewise.
(thumb2_zero_extendhisi2_v6): Likewise.
(thumb2_zero_extendqisi2_v6): Likewise.
(thumb2_shiftsi3_short): Likewise.
(thumb2_addsi3_compare0_scratch): Likewise.
(orsi_not_shiftsi_si): Likewise.
* config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes.
* config/arm/arm-fixed.md (arm_ssatsihi_shift): Update for attribute
changes.
* config/arm/arm1020e.md (1020alu_op): Update for attribute changes.
(1020alu_shift_op): Likewise.
(1020alu_shift_reg_op): Likewise.
* config/arm/arm1026ejs.md (alu_op): Update for attribute changes.
(alu_shift_op): Likewise.
(alu_shift_reg_op): Likewise.
* config/arm/arm1136jfs.md (11_alu_op): Update for attribute changes.
(11_alu_shift_op): Likewise.
(11_alu_shift_reg_op): Likewise.
* config/arm/arm926ejs.md (9_alu_op): Update for attribute changes.
(9_alu_shift_reg_op): Likewise.
* config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute changes.
(cortex_a15_alu_shift): Likewise.
(cortex_a15_alu_shift_reg): Likewise.
* config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute changes.
(cortex_a5_alu_shift): Likewise.
* config/arm/cortex-a53.md (cortex_a53_alu) : Update for attribute
changes.
(cortex_a53_alu_shift): Likewise.
* config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute
changes.
(cortex_a7_alu_reg): Likewise.
(cortex_a7_alu_shift): Likewise.
* config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute changes.
(cortex_a8_alu_shift): Likewise.
(cortex_a8_alu_shift_reg): Likewise.
(cortex_a8_mov): Likewise.
* config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute changes.
(cortex_a9_dp_shift): Likewise.
* config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute changes.
* config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute changes.
(cortex_r4_mov): Likewise.
(cortex_r4_alu_shift): Likewise.
(cortex_r4_alu_shift_reg): Likewise.
* config/arm/fa526.md (526_alu_op): Update for attribute changes.
(526_alu_shift_op): Likewise.
* config/arm/fa606te.md (606te_alu_op): Update for attribute changes.
* config/arm/fa626te.md (626te_alu_op): Update for attribute changes.
(626te_alu_shift_op): Likewise.
* config/arm/fa726te.md (726te_shift_op): Update for attribute changes.
(726te_alu_op): Likewise.
(726te_alu_shift_op): Likewise.
(726te_alu_shift_reg_op): Likewise.
* config/arm/fmp626.md (mp626_alu_op): Update for attribute changes.
(mp626_alu_shift_op): Likewise.
* config/arm/marvell-pj4.md (pj4_alu_e1): Update for attribute changes.
(pj4_alu_e1_conds): Likewise.
(pj4_alu): Likewise.
(pj4_alu_conds): Likewise.
(pj4_shift): Likewise.
(pj4_shift_conds): Likewise.
(pj4_alu_shift): Likewise.
(pj4_alu_shift_conds): Likewise.
* config/arm/arm.c (xscale_sched_adjust_cost): Update for attribute changes.
(cortexa7_older_only): Likewise.
(cortexa7_younger): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201024 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 175 | ||||
-rw-r--r-- | gcc/config/arm/arm-fixed.md | 2 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 10 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 376 | ||||
-rw-r--r-- | gcc/config/arm/arm1020e.md | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm1026ejs.md | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm1136jfs.md | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm926ejs.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a15.md | 6 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a5.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a53.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a7.md | 8 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a8.md | 8 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a9.md | 6 | ||||
-rw-r--r-- | gcc/config/arm/cortex-m4.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/cortex-r4.md | 8 | ||||
-rw-r--r-- | gcc/config/arm/fa526.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/fa606te.md | 2 | ||||
-rw-r--r-- | gcc/config/arm/fa626te.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/fa726te.md | 6 | ||||
-rw-r--r-- | gcc/config/arm/fmp626.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/marvell-pj4.md | 16 | ||||
-rw-r--r-- | gcc/config/arm/neon.md | 4 | ||||
-rw-r--r-- | gcc/config/arm/thumb2.md | 20 | ||||
-rw-r--r-- | gcc/config/arm/vfp.md | 2 |
25 files changed, 439 insertions, 256 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5e11ece80a..f77bae41c8b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,178 @@ +2013-07-18 Sofiane Naci <sofiane.naci@arm.com> + + * config/arm/arm.md (attribute "type"): Rename "simple_alu_imm" to + "arlo_imm". Rename "alu_reg" to "arlo_reg". Rename "simple_alu_shift" to + "extend". Split "alu_shift" into "shift" and "arlo_shift". Split + "alu_shift_reg" into "shift_reg" and "arlo_shift_reg". List types + in alphabetical order. + (attribute "core_cycles"): Update for attribute changes. + (arm_addsi3): Likewise. + (addsi3_compare0): Likewise. + (addsi3_compare0_scratch): Likewise. + (addsi3_compare_op1): Likewise. + (addsi3_compare_op2): Likewise. + (compare_addsi2_op0): Likewise. + (compare_addsi2_op1): Likewise. + (addsi3_carryin_shift_<optab>): Likewise. + (subsi3_carryin_shift): Likewise. + (rsbsi3_carryin_shift): Likewise. + (arm_subsi3_insn): Likewise. + (subsi3_compare0): Likewise. + (subsi3_compare): Likewise. + (arm_andsi3_insn): Likewise. + (thumb1_andsi3_insn): Likewise. + (andsi3_compare0): Likewise. + (andsi3_compare0_scratch): Likewise. + (zeroextractsi_compare0_scratch + (andsi_not_shiftsi_si): Likewise. + (iorsi3_insn): Likewise. + (iorsi3_compare0): Likewise. + (iorsi3_compare0_scratch): Likewise. + (arm_xorsi3): Likewise. + (thumb1_xorsi3_insn): Likewise. + (xorsi3_compare0): Likewise. + (xorsi3_compare0_scratch): Likewise. + (satsi_<SAT:code>_shift): Likewise. + (rrx): Likewise. + (arm_shiftsi3): Likewise. + (shiftsi3_compare0): Likewise. + (not_shiftsi): Likewise. + (not_shiftsi_compare0): Likewise. + (not_shiftsi_compare0_scratch): Likewise. + (arm_one_cmplsi2): Likewise. + (thumb_one_complsi2): Likewise. + (notsi_compare0): Likewise. + (notsi_compare0_scratch): Likewise. + (thumb1_zero_extendhisi2): Likewise. + (arm_zero_extendhisi2): Likewise. + (arm_zero_extendhisi2_v6): Likewise. + (arm_zero_extendhisi2addsi): Likewise. + (thumb1_zero_extendqisi2): Likewise. + (thumb1_zero_extendqisi2_v6): Likewise. + (arm_zero_extendqisi2): Likewise. + (arm_zero_extendqisi2_v6): Likewise. + (arm_zero_extendqisi2addsi): Likewise. + (thumb1_extendhisi2): Likewise. + (arm_extendhisi2): Likewise. + (arm_extendhisi2_v6): Likewise. + (arm_extendqisi): Likewise. + (arm_extendqisi_v6): Likewise. + (arm_extendqisi2addsi): Likewise. + (thumb1_extendqisi2): Likewise. + (thumb1_movdi_insn): Likewise. + (arm_movsi_insn): Likewise. + (movsi_compare0): Likewise. + (movhi_insn_arch4): Likewise. + (movhi_bytes): Likewise. + (arm_movqi_insn): Likewise. + (thumb1_movqi_insn): Likewise. + (arm32_movhf): Likewise. + (thumb1_movhf): Likewise. + (arm_movsf_soft_insn): Likewise. + (thumb1_movsf_insn): Likewise. + (movdf_soft_insn): Likewise. + (thumb_movdf_insn): Likewise. + (arm_cmpsi_insn): Likewise. + (cmpsi_shiftsi): Likewise. + (cmpsi_shiftsi_swp): Likewise. + (arm_cmpsi_negshiftsi_si): Likewise. + (movsicc_insn): Likewise. + (movsfcc_soft_insn): Likewise. + (arith_shiftsi): Likewise. + (arith_shiftsi_compare0 + (arith_shiftsi_compare0_scratch + (sub_shiftsi): Likewise. + (sub_shiftsi_compare0 + (sub_shiftsi_compare0_scratch + (and_scc): Likewise. + (cond_move): Likewise. + (if_plus_move): Likewise. + (if_move_plus): Likewise. + (if_move_not): Likewise. + (if_not_move): Likewise. + (if_shift_move): Likewise. + (if_move_shift): Likewise. + (if_shift_shift): Likewise. + (if_not_arith): Likewise. + (if_arith_not): Likewise. + (cond_move_not): Likewise. + (thumb1_ashlsi3): Set type attribute. + (thumb1_ashrsi3): Likewise. + (thumb1_lshrsi3): Likewise. + (thumb1_rotrsi3): Likewise. + (shiftsi3_compare0_scratch): Likewise. + * config/arm/neon.md (neon_mov<mode>): Update for attribute changes. + (neon_mov<mode>): Likewise. + * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Update for attribute + changes. + (thumb2_movsi_insn): Likewise. + (thumb2_cmpsi_neg_shiftsi): Likewise. + (thumb2_extendqisi_v6): Likewise. + (thumb2_zero_extendhisi2_v6): Likewise. + (thumb2_zero_extendqisi2_v6): Likewise. + (thumb2_shiftsi3_short): Likewise. + (thumb2_addsi3_compare0_scratch): Likewise. + (orsi_not_shiftsi_si): Likewise. + * config/arm/vfp.md (arm_movsi_vfp): Update for attribute changes. + * config/arm/arm-fixed.md (arm_ssatsihi_shift): Update for attribute + changes. + * config/arm/arm1020e.md (1020alu_op): Update for attribute changes. + (1020alu_shift_op): Likewise. + (1020alu_shift_reg_op): Likewise. + * config/arm/arm1026ejs.md (alu_op): Update for attribute changes. + (alu_shift_op): Likewise. + (alu_shift_reg_op): Likewise. + * config/arm/arm1136jfs.md (11_alu_op): Update for attribute changes. + (11_alu_shift_op): Likewise. + (11_alu_shift_reg_op): Likewise. + * config/arm/arm926ejs.md (9_alu_op): Update for attribute changes. + (9_alu_shift_reg_op): Likewise. + * config/arm/cortex-a15.md (cortex_a15_alu): Update for attribute changes. + (cortex_a15_alu_shift): Likewise. + (cortex_a15_alu_shift_reg): Likewise. + * config/arm/cortex-a5.md (cortex_a5_alu): Update for attribute changes. + (cortex_a5_alu_shift): Likewise. + * config/arm/cortex-a53.md (cortex_a53_alu) : Update for attribute + changes. + (cortex_a53_alu_shift): Likewise. + * config/arm/cortex-a7.md (cortex_a7_alu_imm): Update for attribute + changes. + (cortex_a7_alu_reg): Likewise. + (cortex_a7_alu_shift): Likewise. + * config/arm/cortex-a8.md (cortex_a8_alu): Update for attribute changes. + (cortex_a8_alu_shift): Likewise. + (cortex_a8_alu_shift_reg): Likewise. + (cortex_a8_mov): Likewise. + * config/arm/cortex-a9.md (cortex_a9_dp): Update for attribute changes. + (cortex_a9_dp_shift): Likewise. + * config/arm/cortex-m4.md (cortex_m4_alu): Update for attribute changes. + * config/arm/cortex-r4.md (cortex_r4_alu): Update for attribute changes. + (cortex_r4_mov): Likewise. + (cortex_r4_alu_shift): Likewise. + (cortex_r4_alu_shift_reg): Likewise. + * config/arm/fa526.md (526_alu_op): Update for attribute changes. + (526_alu_shift_op): Likewise. + * config/arm/fa606te.md (606te_alu_op): Update for attribute changes. + * config/arm/fa626te.md (626te_alu_op): Update for attribute changes. + (626te_alu_shift_op): Likewise. + * config/arm/fa726te.md (726te_shift_op): Update for attribute changes. + (726te_alu_op): Likewise. + (726te_alu_shift_op): Likewise. + (726te_alu_shift_reg_op): Likewise. + * config/arm/fmp626.md (mp626_alu_op): Update for attribute changes. + (mp626_alu_shift_op): Likewise. + * config/arm/marvell-pj4.md (pj4_alu_e1): Update for attribute changes. + (pj4_alu_e1_conds): Likewise. + (pj4_alu): Likewise. + (pj4_alu_conds): Likewise. + (pj4_shift): Likewise. + (pj4_shift_conds): Likewise. + (pj4_alu_shift): Likewise. + (pj4_alu_shift_conds): Likewise. + * config/arm/arm.c (xscale_sched_adjust_cost): Update for attribute changes. + (cortexa7_older_only): Likewise. + (cortexa7_younger): Likewise. + 2013-07-18 David Malcolm <dmalcolm@redhat.com> * ipa-pure-const.c (generate_summary): Rename to... diff --git a/gcc/config/arm/arm-fixed.md b/gcc/config/arm/arm-fixed.md index 12bbbaf9083..82a7add9f3e 100644 --- a/gcc/config/arm/arm-fixed.md +++ b/gcc/config/arm/arm-fixed.md @@ -385,7 +385,7 @@ (set_attr "predicable_short_it" "no") (set_attr "insn" "sat") (set_attr "shift" "1") - (set_attr "type" "alu_shift")]) + (set_attr "type" "arlo_shift")]) (define_insn "arm_usatsihi" [(set (match_operand:HI 0 "s_register_operand" "=r") diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 35096e83b20..d1926d8d1a9 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -8653,7 +8653,7 @@ xscale_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost) instruction we depend on is another ALU instruction, then we may have to account for an additional stall. */ if (shift_opnum != 0 - && (attr_type == TYPE_ALU_SHIFT || attr_type == TYPE_ALU_SHIFT_REG)) + && (attr_type == TYPE_ARLO_SHIFT || attr_type == TYPE_ARLO_SHIFT_REG)) { rtx shifted_operand; int opno; @@ -8939,7 +8939,9 @@ cortexa7_older_only (rtx insn) switch (get_attr_type (insn)) { - case TYPE_ALU_REG: + case TYPE_ARLO_REG: + case TYPE_SHIFT: + case TYPE_SHIFT_REG: case TYPE_LOAD_BYTE: case TYPE_LOAD1: case TYPE_STORE1: @@ -8985,8 +8987,8 @@ cortexa7_younger (FILE *file, int verbose, rtx insn) switch (get_attr_type (insn)) { - case TYPE_SIMPLE_ALU_IMM: - case TYPE_SIMPLE_ALU_SHIFT: + case TYPE_ARLO_IMM: + case TYPE_EXTEND: case TYPE_BRANCH: case TYPE_CALL: return true; diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 0fcdeea609c..52b61d66e9d 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -257,15 +257,21 @@ ; ; Instruction classification: ; -; alu_reg any alu instruction that doesn't hit memory or fp -; regs or have a shifted source operand and does not have -; an immediate operand. This is also the default. -; alu_shift any data instruction that doesn't hit memory or fp. -; regs, but has a source operand shifted by a constant. -; alu_shift_reg any data instruction that doesn't hit memory or fp. +; arlo_imm any arithmetic or logical instruction that doesn't have +; a shifted operand and has an immediate operand. This +; excludes MOV, MVN and RSB(S) immediate. +; arlo_reg any arithmetic or logical instruction that doesn't have +; a shifted or an immediate operand. This excludes +; MOV and MVN but includes MOVT. This is also the default. +; arlo_shift any arithmetic or logical instruction that has a source +; operand shifted by a constant. This excludes +; simple shifts. +; arlo_shift_reg as arlo_shift, with the shift amount specified in a +; register. ; block blockage insn, this blocks all functional units. ; branch branch. ; call subroutine call. +; extend extend instruction (SXTB, SXTH, UXTB, UXTH). ; f_2_r transfer from float to core (no memory needed). ; f_cvt conversion between float and integral. ; f_flag transfer of co-processor flags to the CPSR. @@ -296,11 +302,9 @@ ; muls integer multiply, flag setting. ; r_2_f transfer from core to float. ; sdiv signed division. -; simple_alu_imm simple alu instruction that doesn't hit memory or fp -; regs or have a shifted source operand and has an -; immediate operand. This currently only tracks very basic -; immediate alu operations. -; simple_alu_shift simple alu instruction with a shifted source operand. +; shift simple shift operation (LSL, LSR, ASR, ROR) with an +; immediate. +; shift_reg simple shift by a register. ; smlad signed multiply accumulate dual. ; smladx signed multiply accumulate dual reverse. ; smlal signed multiply accumulate long. @@ -401,89 +405,92 @@ ; wmmx_wxor (define_attr "type" - "simple_alu_imm,\ - alu_reg,\ - simple_alu_shift,\ - alu_shift,\ - alu_shift_reg,\ + "arlo_imm,\ + arlo_reg,\ + arlo_shift,\ + arlo_shift_reg,\ block,\ - float,\ - fdivd,\ - fdivs,\ - fmuls,\ - fmuld,\ - fmacs,\ - fmacd,\ - ffmas,\ - ffmad,\ - f_rints,\ - f_rintd,\ - f_minmaxs,\ - f_minmaxd,\ - f_flag,\ - f_loads,\ - f_loadd,\ - f_stores,\ - f_stored,\ + branch,\ + call,\ + complex,\ + extend,\ f_2_r,\ - r_2_f,\ f_cvt,\ - f_sels,\ + f_flag,\ + f_loadd,\ + f_loads,\ + f_minmaxd,\ + f_minmaxs,\ + f_rintd,\ + f_rints,\ f_seld,\ - branch,\ - call,\ + f_sels,\ + f_stored,\ + f_stores,\ + faddd,\ + fadds,\ + fcmpd,\ + fcmps,\ + fconstd,\ + fconsts,\ + fcpys,\ + fdivd,\ + fdivs,\ + ffarithd,\ + ffariths,\ + ffmad,\ + ffmas,\ + float,\ + fmacd,\ + fmacs,\ + fmuld,\ + fmuls,\ load_byte,\ load1,\ load2,\ load3,\ load4,\ - store1,\ - store2,\ - store3,\ - store4,\ - fconsts,\ - fconstd,\ - fadds,\ - faddd,\ - ffariths,\ - ffarithd,\ - fcmps,\ - fcmpd,\ - fcpys,\ - smulxy,\ - smlaxy,\ - smlalxy,\ - smulwy,\ - smlawx,\ - mul,\ - muls,\ mla,\ mlas,\ - umull,\ - umulls,\ - umlal,\ - umlals,\ - smull,\ - smulls,\ + mul,\ + muls,\ + r_2_f,\ + sdiv,\ + shift,\ + shift_reg,\ + smlad,\ + smladx,\ smlal,\ + smlald,\ smlals,\ + smlalxy,\ + smlawx,\ smlawy,\ - smuad,\ - smuadx,\ - smlad,\ - smladx,\ - smusd,\ - smusdx,\ + smlaxy,\ smlsd,\ smlsdx,\ + smlsld,\ + smmla,\ smmul,\ smmulr,\ - smmla,\ - umaal,\ - smlald,\ - smlsld,\ - sdiv,\ + smuad,\ + smuadx,\ + smull,\ + smulls,\ + smulwy,\ + smulxy,\ + smusd,\ + smusdx,\ + store1,\ + store2,\ + store3,\ + store4,\ udiv,\ + umaal,\ + umlal,\ + umlals,\ + umull,\ + umulls,\ wmmx_tandc,\ wmmx_tbcst,\ wmmx_textrc,\ @@ -543,7 +550,7 @@ wmmx_wunpckih,\ wmmx_wunpckil,\ wmmx_wxor" - (const_string "alu_reg")) + (const_string "arlo_reg")) ; Is this an (integer side) multiply with a 32-bit (or smaller) result? (define_attr "mul32" "no,yes" @@ -686,8 +693,8 @@ ; than one on the main cpu execution unit. (define_attr "core_cycles" "single,multi" (if_then_else (eq_attr "type" - "simple_alu_imm, alu_reg,\ - simple_alu_shift, alu_shift, float, fdivd, fdivs,\ + "arlo_imm, arlo_reg,\ + extend, shift, arlo_shift, float, fdivd, fdivs,\ wmmx_wor, wmmx_wxor, wmmx_wand, wmmx_wandn, wmmx_wmov, wmmx_tmcrr,\ wmmx_tmrrc, wmmx_wldr, wmmx_wstr, wmmx_tmcr, wmmx_tmrc, wmmx_wadd,\ wmmx_wsub, wmmx_wmul, wmmx_wmac, wmmx_wavg2, wmmx_tinsr, wmmx_textrm,\ @@ -968,8 +975,8 @@ (set_attr "predicable" "yes") (set_attr "arch" "t2,*,*,*,t2,t2,*,*,a,t2,t2,*") (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") - (const_string "simple_alu_imm") - (const_string "alu_reg"))) + (const_string "arlo_imm") + (const_string "arlo_reg"))) ] ) @@ -1050,7 +1057,7 @@ sub%.\\t%0, %1, #%n2 add%.\\t%0, %1, %2" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm, simple_alu_imm, *")] + (set_attr "type" "arlo_imm,arlo_imm,*")] ) (define_insn "*addsi3_compare0_scratch" @@ -1066,7 +1073,7 @@ cmn%?\\t%0, %1" [(set_attr "conds" "set") (set_attr "predicable" "yes") - (set_attr "type" "simple_alu_imm, simple_alu_imm, *") + (set_attr "type" "arlo_imm,arlo_imm,*") ] ) @@ -1153,7 +1160,7 @@ sub%.\\t%0, %1, #%n2 add%.\\t%0, %1, %2" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,simple_alu_imm,*")] + (set_attr "type" "arlo_imm,arlo_imm,*")] ) (define_insn "*addsi3_compare_op2" @@ -1170,7 +1177,7 @@ add%.\\t%0, %1, %2 sub%.\\t%0, %1, #%n2" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,simple_alu_imm,*")] + (set_attr "type" "arlo_imm,arlo_imm,*")] ) (define_insn "*compare_addsi2_op0" @@ -1186,7 +1193,7 @@ cmn%?\\t%0, %1" [(set_attr "conds" "set") (set_attr "predicable" "yes") - (set_attr "type" "simple_alu_imm,simple_alu_imm,*")] + (set_attr "type" "arlo_imm,arlo_imm,*")] ) (define_insn "*compare_addsi2_op1" @@ -1202,7 +1209,7 @@ cmn%?\\t%0, %1" [(set_attr "conds" "set") (set_attr "predicable" "yes") - (set_attr "type" "simple_alu_imm,simple_alu_imm,*")] + (set_attr "type" "arlo_imm,arlo_imm,*")] ) (define_insn "*addsi3_carryin_<optab>" @@ -1244,8 +1251,8 @@ [(set_attr "conds" "use") (set_attr "predicable" "yes") (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) (define_insn "*addsi3_carryin_clobercc_<optab>" @@ -1322,8 +1329,8 @@ [(set_attr "conds" "use") (set_attr "predicable" "yes") (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) (define_insn "*rsbsi3_carryin_shift" @@ -1339,8 +1346,8 @@ [(set_attr "conds" "use") (set_attr "predicable" "yes") (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) ; transform ((x << y) - 1) to ~(~(x-1) << y) Where X is a constant. @@ -1607,7 +1614,7 @@ " [(set_attr "length" "4,4,4,4,16") (set_attr "predicable" "yes") - (set_attr "type" "*,simple_alu_imm,*,*,*")] + (set_attr "type" "*,arlo_imm,*,*,*")] ) (define_peephole2 @@ -1637,7 +1644,7 @@ sub%.\\t%0, %1, %2 rsb%.\\t%0, %2, %1" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,*,*")] + (set_attr "type" "arlo_imm,*,*")] ) (define_insn "subsi3_compare" @@ -1652,7 +1659,7 @@ sub%.\\t%0, %1, %2 rsb%.\\t%0, %2, %1" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,*,*")] + (set_attr "type" "arlo_imm,*,*")] ) (define_expand "subsf3" @@ -2588,7 +2595,7 @@ (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no,yes,no,no,no") (set_attr "type" - "simple_alu_imm,simple_alu_imm,*,*,simple_alu_imm")] + "arlo_imm,arlo_imm,*,*,arlo_imm")] ) (define_insn "*thumb1_andsi3_insn" @@ -2598,7 +2605,7 @@ "TARGET_THUMB1" "and\\t%0, %2" [(set_attr "length" "2") - (set_attr "type" "simple_alu_imm") + (set_attr "type" "arlo_imm") (set_attr "conds" "set")]) (define_insn "*andsi3_compare0" @@ -2615,7 +2622,7 @@ bic%.\\t%0, %1, #%B2 and%.\\t%0, %1, %2" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,simple_alu_imm,*")] + (set_attr "type" "arlo_imm,arlo_imm,*")] ) (define_insn "*andsi3_compare0_scratch" @@ -2631,7 +2638,7 @@ bic%.\\t%2, %0, #%B1 tst%?\\t%0, %1" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,simple_alu_imm,*")] + (set_attr "type" "arlo_imm,arlo_imm,*")] ) (define_insn "*zeroextractsi_compare0_scratch" @@ -2655,7 +2662,7 @@ [(set_attr "conds" "set") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") - (set_attr "type" "simple_alu_imm")] + (set_attr "type" "arlo_imm")] ) (define_insn_and_split "*ne_zeroextractsi" @@ -3205,8 +3212,8 @@ [(set_attr "predicable" "yes") (set_attr "shift" "2") (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) (define_insn "*andsi_notsi_si_compare0" @@ -3365,7 +3372,7 @@ (set_attr "arch" "32,t2,t2,32,32") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no,yes,no,no,no") - (set_attr "type" "simple_alu_imm,*,simple_alu_imm,*,*")] + (set_attr "type" "arlo_imm,*,arlo_imm,*,*")] ) (define_insn "*thumb1_iorsi3_insn" @@ -3400,7 +3407,7 @@ "TARGET_32BIT" "orr%.\\t%0, %1, %2" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,*")] + (set_attr "type" "arlo_imm,*")] ) (define_insn "*iorsi3_compare0_scratch" @@ -3412,7 +3419,7 @@ "TARGET_32BIT" "orr%.\\t%0, %1, %2" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm, *")] + (set_attr "type" "arlo_imm,*")] ) (define_expand "xordi3" @@ -3538,7 +3545,7 @@ [(set_attr "length" "4,4,4,16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no,yes,no,no") - (set_attr "type" "simple_alu_imm,*,*,*")] + (set_attr "type" "arlo_imm,*,*,*")] ) (define_insn "*thumb1_xorsi3_insn" @@ -3549,7 +3556,7 @@ "eor\\t%0, %2" [(set_attr "length" "2") (set_attr "conds" "set") - (set_attr "type" "simple_alu_imm")] + (set_attr "type" "arlo_imm")] ) (define_insn "*xorsi3_compare0" @@ -3562,7 +3569,7 @@ "TARGET_32BIT" "eor%.\\t%0, %1, %2" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,*")] + (set_attr "type" "arlo_imm,*")] ) (define_insn "*xorsi3_compare0_scratch" @@ -3573,7 +3580,7 @@ "TARGET_32BIT" "teq%?\\t%0, %1" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm, *")] + (set_attr "type" "arlo_imm,*")] ) ; By splitting (IOR (AND (NOT A) (NOT B)) C) as D = AND (IOR A B) (NOT C), @@ -4057,7 +4064,7 @@ [(set_attr "predicable" "yes") (set_attr "insn" "sat") (set_attr "shift" "3") - (set_attr "type" "alu_shift")]) + (set_attr "type" "arlo_shift")]) ;; Shift and rotation insns @@ -4160,6 +4167,7 @@ "TARGET_THUMB1" "lsl\\t%0, %1, %2" [(set_attr "length" "2") + (set_attr "type" "shift,shift_reg") (set_attr "conds" "set")]) (define_expand "ashrdi3" @@ -4243,7 +4251,7 @@ "mov\\t%0, %1, rrx" [(set_attr "conds" "use") (set_attr "insn" "mov") - (set_attr "type" "alu_shift")] + (set_attr "type" "arlo_shift")] ) (define_expand "ashrsi3" @@ -4265,6 +4273,7 @@ "TARGET_THUMB1" "asr\\t%0, %1, %2" [(set_attr "length" "2") + (set_attr "type" "shift,shift_reg") (set_attr "conds" "set")]) (define_expand "lshrdi3" @@ -4361,6 +4370,7 @@ "TARGET_THUMB1" "lsr\\t%0, %1, %2" [(set_attr "length" "2") + (set_attr "type" "shift,shift_reg") (set_attr "conds" "set")]) (define_expand "rotlsi3" @@ -4406,68 +4416,64 @@ (match_operand:SI 2 "register_operand" "l")))] "TARGET_THUMB1" "ror\\t%0, %0, %2" - [(set_attr "length" "2")] + [(set_attr "type" "shift_reg") + (set_attr "length" "2")] ) (define_insn "*arm_shiftsi3" - [(set (match_operand:SI 0 "s_register_operand" "=r") + [(set (match_operand:SI 0 "s_register_operand" "=r,r") (match_operator:SI 3 "shift_operator" - [(match_operand:SI 1 "s_register_operand" "r") - (match_operand:SI 2 "reg_or_int_operand" "rM")]))] + [(match_operand:SI 1 "s_register_operand" "r,r") + (match_operand:SI 2 "reg_or_int_operand" "M,r")]))] "TARGET_32BIT" "* return arm_output_shift(operands, 0);" [(set_attr "predicable" "yes") (set_attr "shift" "1") - (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (set_attr "type" "arlo_shift,arlo_shift_reg")] ) (define_insn "*shiftsi3_compare" [(set (reg:CC CC_REGNUM) (compare:CC (match_operator:SI 3 "shift_operator" - [(match_operand:SI 1 "s_register_operand" "r") - (match_operand:SI 2 "arm_rhs_operand" "rM")]) + [(match_operand:SI 1 "s_register_operand" "r,r") + (match_operand:SI 2 "arm_rhs_operand" "M,r")]) (const_int 0))) - (set (match_operand:SI 0 "s_register_operand" "=r") + (set (match_operand:SI 0 "s_register_operand" "=r,r") (match_op_dup 3 [(match_dup 1) (match_dup 2)]))] "TARGET_32BIT" "* return arm_output_shift(operands, 1);" [(set_attr "conds" "set") (set_attr "shift" "1") - (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (set_attr "type" "arlo_shift,arlo_shift_reg")] ) (define_insn "*shiftsi3_compare0" [(set (reg:CC_NOOV CC_REGNUM) (compare:CC_NOOV (match_operator:SI 3 "shift_operator" - [(match_operand:SI 1 "s_register_operand" "r") - (match_operand:SI 2 "arm_rhs_operand" "rM")]) + [(match_operand:SI 1 "s_register_operand" "r,r") + (match_operand:SI 2 "arm_rhs_operand" "M,r")]) (const_int 0))) - (set (match_operand:SI 0 "s_register_operand" "=r") + (set (match_operand:SI 0 "s_register_operand" "=r,r") (match_op_dup 3 [(match_dup 1) (match_dup 2)]))] "TARGET_32BIT" "* return arm_output_shift(operands, 1);" [(set_attr "conds" "set") (set_attr "shift" "1") - (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (set_attr "type" "arlo_shift,arlo_shift_reg")] ) (define_insn "*shiftsi3_compare0_scratch" [(set (reg:CC_NOOV CC_REGNUM) (compare:CC_NOOV (match_operator:SI 3 "shift_operator" - [(match_operand:SI 1 "s_register_operand" "r") - (match_operand:SI 2 "arm_rhs_operand" "rM")]) + [(match_operand:SI 1 "s_register_operand" "r,r") + (match_operand:SI 2 "arm_rhs_operand" "M,r")]) (const_int 0))) - (clobber (match_scratch:SI 0 "=r"))] + (clobber (match_scratch:SI 0 "=r,r"))] "TARGET_32BIT" "* return arm_output_shift(operands, 1);" [(set_attr "conds" "set") - (set_attr "shift" "1")] + (set_attr "shift" "1") + (set_attr "type" "shift,shift_reg")] ) (define_insn "*not_shiftsi" @@ -4482,7 +4488,7 @@ (set_attr "shift" "1") (set_attr "insn" "mvn") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*not_shiftsi_compare0" [(set (reg:CC_NOOV CC_REGNUM) @@ -4499,7 +4505,7 @@ (set_attr "shift" "1") (set_attr "insn" "mvn") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*not_shiftsi_compare0_scratch" [(set (reg:CC_NOOV CC_REGNUM) @@ -4515,7 +4521,7 @@ (set_attr "shift" "1") (set_attr "insn" "mvn") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) ;; We don't really have extzv, but defining this using shifts helps ;; to reduce register pressure later on. @@ -5536,7 +5542,7 @@ [(if_then_else (eq_attr "is_arch6" "yes") (const_int 2) (const_int 4)) (const_int 4)]) - (set_attr "type" "simple_alu_shift, load_byte")] + (set_attr "type" "extend,load_byte")] ) (define_insn "*arm_zero_extendhisi2" @@ -5546,7 +5552,7 @@ "@ # ldr%(h%)\\t%0, %1" - [(set_attr "type" "alu_shift,load_byte") + [(set_attr "type" "arlo_shift,load_byte") (set_attr "predicable" "yes")] ) @@ -5558,7 +5564,7 @@ uxth%?\\t%0, %1 ldr%(h%)\\t%0, %1" [(set_attr "predicable" "yes") - (set_attr "type" "simple_alu_shift,load_byte")] + (set_attr "type" "extend,load_byte")] ) (define_insn "*arm_zero_extendhisi2addsi" @@ -5567,7 +5573,7 @@ (match_operand:SI 2 "s_register_operand" "r")))] "TARGET_INT_SIMD" "uxtah%?\\t%0, %2, %1" - [(set_attr "type" "alu_shift") + [(set_attr "type" "arlo_shift") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")] ) @@ -5617,7 +5623,7 @@ # ldrb\\t%0, %1" [(set_attr "length" "4,2") - (set_attr "type" "alu_shift,load_byte") + (set_attr "type" "arlo_shift,load_byte") (set_attr "pool_range" "*,32")] ) @@ -5629,7 +5635,7 @@ uxtb\\t%0, %1 ldrb\\t%0, %1" [(set_attr "length" "2") - (set_attr "type" "simple_alu_shift,load_byte")] + (set_attr "type" "extend,load_byte")] ) (define_insn "*arm_zero_extendqisi2" @@ -5640,7 +5646,7 @@ # ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2" [(set_attr "length" "8,4") - (set_attr "type" "alu_shift,load_byte") + (set_attr "type" "arlo_shift,load_byte") (set_attr "predicable" "yes")] ) @@ -5651,7 +5657,7 @@ "@ uxtb%(%)\\t%0, %1 ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2" - [(set_attr "type" "simple_alu_shift,load_byte") + [(set_attr "type" "extend,load_byte") (set_attr "predicable" "yes")] ) @@ -5664,7 +5670,7 @@ [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "insn" "xtab") - (set_attr "type" "alu_shift")] + (set_attr "type" "arlo_shift")] ) (define_split @@ -5827,7 +5833,7 @@ [(if_then_else (eq_attr "is_arch6" "yes") (const_int 2) (const_int 4)) (const_int 4)]) - (set_attr "type" "simple_alu_shift,load_byte") + (set_attr "type" "extend,load_byte") (set_attr "pool_range" "*,1018")] ) @@ -5886,7 +5892,7 @@ # ldr%(sh%)\\t%0, %1" [(set_attr "length" "8,4") - (set_attr "type" "alu_shift,load_byte") + (set_attr "type" "arlo_shift,load_byte") (set_attr "predicable" "yes") (set_attr "pool_range" "*,256") (set_attr "neg_pool_range" "*,244")] @@ -5900,7 +5906,7 @@ "@ sxth%?\\t%0, %1 ldr%(sh%)\\t%0, %1" - [(set_attr "type" "simple_alu_shift,load_byte") + [(set_attr "type" "extend,load_byte") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "pool_range" "*,256") @@ -5987,7 +5993,7 @@ # ldr%(sb%)\\t%0, %1" [(set_attr "length" "8,4") - (set_attr "type" "alu_shift,load_byte") + (set_attr "type" "arlo_shift,load_byte") (set_attr "predicable" "yes") (set_attr "pool_range" "*,256") (set_attr "neg_pool_range" "*,244")] @@ -6001,7 +6007,7 @@ "@ sxtb%?\\t%0, %1 ldr%(sb%)\\t%0, %1" - [(set_attr "type" "simple_alu_shift,load_byte") + [(set_attr "type" "extend,load_byte") (set_attr "predicable" "yes") (set_attr "pool_range" "*,256") (set_attr "neg_pool_range" "*,244")] @@ -6013,7 +6019,7 @@ (match_operand:SI 2 "s_register_operand" "r")))] "TARGET_INT_SIMD" "sxtab%?\\t%0, %2, %1" - [(set_attr "type" "alu_shift") + [(set_attr "type" "arlo_shift") (set_attr "insn" "xtab") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")] @@ -6115,7 +6121,7 @@ (const_int 2) (if_then_else (eq_attr "is_arch6" "yes") (const_int 4) (const_int 6))]) - (set_attr "type" "simple_alu_shift,load_byte,load_byte")] + (set_attr "type" "extend,load_byte,load_byte")] ) (define_expand "extendsfdf2" @@ -6490,7 +6496,7 @@ movw%?\\t%0, %1 ldr%?\\t%0, %1 str%?\\t%1, %0" - [(set_attr "type" "*,simple_alu_imm,simple_alu_imm,simple_alu_imm,load1,store1") + [(set_attr "type" "*,arlo_imm,arlo_imm,arlo_imm,load1,store1") (set_attr "insn" "mov,mov,mvn,mov,*,*") (set_attr "predicable" "yes") (set_attr "pool_range" "*,*,*,*,4096,*") @@ -6793,7 +6799,7 @@ cmp%?\\t%0, #0 sub%.\\t%0, %1, #0" [(set_attr "conds" "set") - (set_attr "type" "simple_alu_imm,simple_alu_imm")] + (set_attr "type" "arlo_imm,arlo_imm")] ) ;; Subroutine to store a half word from a register into memory. @@ -7212,9 +7218,9 @@ (set_attr "neg_pool_range" "*,*,*,244") (set_attr_alternative "type" [(if_then_else (match_operand 1 "const_int_operand" "") - (const_string "simple_alu_imm" ) + (const_string "arlo_imm" ) (const_string "*")) - (const_string "simple_alu_imm") + (const_string "arlo_imm") (const_string "store1") (const_string "load1")])] ) @@ -7229,7 +7235,7 @@ mvn%?\\t%0, #%B1\\t%@ movhi" [(set_attr "predicable" "yes") (set_attr "insn" "mov, mov,mvn") - (set_attr "type" "simple_alu_imm,*,simple_alu_imm")] + (set_attr "type" "arlo_imm,*,arlo_imm")] ) (define_expand "thumb_movhi_clobber" @@ -7368,7 +7374,7 @@ str%(b%)\\t%1, %0 ldr%(b%)\\t%0, %1 str%(b%)\\t%1, %0" - [(set_attr "type" "*,*,simple_alu_imm,simple_alu_imm,simple_alu_imm,load1, store1, load1, store1") + [(set_attr "type" "*,*,arlo_imm,arlo_imm,arlo_imm,load1, store1, load1, store1") (set_attr "insn" "mov,mov,mov,mov,mvn,*,*,*,*") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,yes,yes,no,no,no,no,no,no") @@ -7390,7 +7396,7 @@ mov\\t%0, %1 mov\\t%0, %1" [(set_attr "length" "2") - (set_attr "type" "simple_alu_imm,load1,store1,*,*,simple_alu_imm") + (set_attr "type" "arlo_imm,load1,store1,*,*,arlo_imm") (set_attr "insn" "*,*,*,mov,mov,mov") (set_attr "pool_range" "*,32,*,*,*,*") (set_attr "conds" "clob,nocond,nocond,nocond,nocond,clob")]) @@ -8481,7 +8487,7 @@ (set_attr "arch" "t2,t2,any,any") (set_attr "length" "2,2,4,4") (set_attr "predicable" "yes") - (set_attr "type" "*,*,*,simple_alu_imm")] + (set_attr "type" "*,*,*,arlo_imm")] ) (define_insn "*cmpsi_shiftsi" @@ -8495,7 +8501,7 @@ [(set_attr "conds" "set") (set_attr "shift" "1") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*cmpsi_shiftsi_swp" [(set (reg:CC_SWP CC_REGNUM) @@ -8508,7 +8514,7 @@ [(set_attr "conds" "set") (set_attr "shift" "1") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*arm_cmpsi_negshiftsi_si" [(set (reg:CC_Z CC_REGNUM) @@ -8521,8 +8527,8 @@ "cmn%?\\t%0, %2%S1" [(set_attr "conds" "set") (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg"))) + (const_string "arlo_shift") + (const_string "arlo_shift_reg"))) (set_attr "predicable" "yes")] ) @@ -9174,13 +9180,13 @@ (set_attr "insn" "mov,mvn,mov,mvn,mov,mov,mvn,mvn") (set_attr_alternative "type" [(if_then_else (match_operand 2 "const_int_operand" "") - (const_string "simple_alu_imm") + (const_string "arlo_imm") (const_string "*")) - (const_string "simple_alu_imm") + (const_string "arlo_imm") (if_then_else (match_operand 1 "const_int_operand" "") - (const_string "simple_alu_imm") + (const_string "arlo_imm") (const_string "*")) - (const_string "simple_alu_imm") + (const_string "arlo_imm") (const_string "*") (const_string "*") (const_string "*") @@ -10062,7 +10068,7 @@ (if_then_else (match_operand:SI 3 "mult_operator" "") (const_string "no") (const_string "yes"))]) - (set_attr "type" "alu_shift,alu_shift,alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift,arlo_shift,arlo_shift_reg")]) (define_split [(set (match_operand:SI 0 "s_register_operand" "") @@ -10099,7 +10105,7 @@ [(set_attr "conds" "set") (set_attr "shift" "4") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*arith_shiftsi_compare0_scratch" [(set (reg:CC_NOOV CC_REGNUM) @@ -10116,7 +10122,7 @@ [(set_attr "conds" "set") (set_attr "shift" "4") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*sub_shiftsi" [(set (match_operand:SI 0 "s_register_operand" "=r,r") @@ -10129,7 +10135,7 @@ [(set_attr "predicable" "yes") (set_attr "shift" "3") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*sub_shiftsi_compare0" [(set (reg:CC_NOOV CC_REGNUM) @@ -10147,7 +10153,7 @@ [(set_attr "conds" "set") (set_attr "shift" "3") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn "*sub_shiftsi_compare0_scratch" [(set (reg:CC_NOOV CC_REGNUM) @@ -10163,7 +10169,7 @@ [(set_attr "conds" "set") (set_attr "shift" "3") (set_attr "arch" "32,a") - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "arlo_shift,arlo_shift_reg")]) (define_insn_and_split "*and_scc" @@ -11171,9 +11177,9 @@ (set_attr "length" "4,4,8,8") (set_attr_alternative "type" [(if_then_else (match_operand 3 "const_int_operand" "") - (const_string "simple_alu_imm" ) + (const_string "arlo_imm" ) (const_string "*")) - (const_string "simple_alu_imm") + (const_string "arlo_imm") (const_string "*") (const_string "*")])] ) @@ -11213,9 +11219,9 @@ (set_attr "length" "4,4,8,8") (set_attr_alternative "type" [(if_then_else (match_operand 3 "const_int_operand" "") - (const_string "simple_alu_imm" ) + (const_string "arlo_imm" ) (const_string "*")) - (const_string "simple_alu_imm") + (const_string "arlo_imm") (const_string "*") (const_string "*")])] ) @@ -11474,8 +11480,8 @@ (set_attr "length" "4,8,8") (set_attr "insn" "mov") (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) (define_insn "*ifcompare_move_shift" @@ -11514,8 +11520,8 @@ (set_attr "length" "4,8,8") (set_attr "insn" "mov") (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) (define_insn "*ifcompare_shift_shift" @@ -11557,8 +11563,8 @@ (set (attr "type") (if_then_else (and (match_operand 2 "const_int_operand" "") (match_operand 4 "const_int_operand" "")) - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) (define_insn "*ifcompare_not_arith" diff --git a/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md index 94e8c35f839..7c8c72bcfc7 100644 --- a/gcc/config/arm/arm1020e.md +++ b/gcc/config/arm/arm1020e.md @@ -66,13 +66,13 @@ ;; ALU operations with no shifted operand (define_insn_reservation "1020alu_op" 1 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "1020a_e,1020a_m,1020a_w") ;; ALU operations with a shift-by-constant operand (define_insn_reservation "1020alu_shift_op" 1 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "simple_alu_shift,alu_shift")) + (eq_attr "type" "extend,arlo_shift")) "1020a_e,1020a_m,1020a_w") ;; ALU operations with a shift-by-register operand @@ -81,7 +81,7 @@ ;; the execute stage. (define_insn_reservation "1020alu_shift_reg_op" 2 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "alu_shift_reg")) + (eq_attr "type" "arlo_shift_reg")) "1020a_e*2,1020a_m,1020a_w") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/arm1026ejs.md b/gcc/config/arm/arm1026ejs.md index 67b985ce68e..4b7e12b780b 100644 --- a/gcc/config/arm/arm1026ejs.md +++ b/gcc/config/arm/arm1026ejs.md @@ -66,13 +66,13 @@ ;; ALU operations with no shifted operand (define_insn_reservation "alu_op" 1 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "a_e,a_m,a_w") ;; ALU operations with a shift-by-constant operand (define_insn_reservation "alu_shift_op" 1 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "simple_alu_shift,alu_shift")) + (eq_attr "type" "extend,arlo_shift")) "a_e,a_m,a_w") ;; ALU operations with a shift-by-register operand @@ -81,7 +81,7 @@ ;; the execute stage. (define_insn_reservation "alu_shift_reg_op" 2 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "alu_shift_reg")) + (eq_attr "type" "arlo_shift_reg")) "a_e*2,a_m,a_w") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/arm1136jfs.md b/gcc/config/arm/arm1136jfs.md index 3030182acca..106100a8e6d 100644 --- a/gcc/config/arm/arm1136jfs.md +++ b/gcc/config/arm/arm1136jfs.md @@ -75,13 +75,13 @@ ;; ALU operations with no shifted operand (define_insn_reservation "11_alu_op" 2 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "e_1,e_2,e_3,e_wb") ;; ALU operations with a shift-by-constant operand (define_insn_reservation "11_alu_shift_op" 2 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "simple_alu_shift,alu_shift")) + (eq_attr "type" "extend,arlo_shift")) "e_1,e_2,e_3,e_wb") ;; ALU operations with a shift-by-register operand @@ -90,7 +90,7 @@ ;; the shift stage. (define_insn_reservation "11_alu_shift_reg_op" 3 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "alu_shift_reg")) + (eq_attr "type" "arlo_shift_reg")) "e_1*2,e_2,e_3,e_wb") ;; alu_ops can start sooner, if there is no shifter dependency diff --git a/gcc/config/arm/arm926ejs.md b/gcc/config/arm/arm926ejs.md index 4db404e766f..b9ebee32984 100644 --- a/gcc/config/arm/arm926ejs.md +++ b/gcc/config/arm/arm926ejs.md @@ -58,7 +58,7 @@ ;; ALU operations with no shifted operand (define_insn_reservation "9_alu_op" 1 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "alu_reg,simple_alu_imm,simple_alu_shift,alu_shift")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,extend,arlo_shift")) "e,m,w") ;; ALU operations with a shift-by-register operand @@ -67,7 +67,7 @@ ;; the execute stage. (define_insn_reservation "9_alu_shift_reg_op" 2 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "alu_shift_reg")) + (eq_attr "type" "arlo_shift_reg")) "e*2,m,w") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/cortex-a15.md b/gcc/config/arm/cortex-a15.md index 981d055c668..52dd1f19b82 100644 --- a/gcc/config/arm/cortex-a15.md +++ b/gcc/config/arm/cortex-a15.md @@ -61,14 +61,14 @@ ;; Simple ALU without shift (define_insn_reservation "cortex_a15_alu" 2 (and (eq_attr "tune" "cortexa15") - (and (eq_attr "type" "alu_reg,simple_alu_imm") + (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (eq_attr "neon_type" "none"))) "ca15_issue1,(ca15_sx1,ca15_sx1_alu)|(ca15_sx2,ca15_sx2_alu)") ;; ALU ops with immediate shift (define_insn_reservation "cortex_a15_alu_shift" 3 (and (eq_attr "tune" "cortexa15") - (and (eq_attr "type" "simple_alu_shift,alu_shift") + (and (eq_attr "type" "extend,arlo_shift") (eq_attr "neon_type" "none"))) "ca15_issue1,(ca15_sx1,ca15_sx1+ca15_sx1_shf,ca15_sx1_alu)\ |(ca15_sx2,ca15_sx2+ca15_sx2_shf,ca15_sx2_alu)") @@ -76,7 +76,7 @@ ;; ALU ops with register controlled shift (define_insn_reservation "cortex_a15_alu_shift_reg" 3 (and (eq_attr "tune" "cortexa15") - (and (eq_attr "type" "alu_shift_reg") + (and (eq_attr "type" "arlo_shift_reg") (eq_attr "neon_type" "none"))) "(ca15_issue2,ca15_sx1+ca15_sx2,ca15_sx1_shf,ca15_sx2_alu)\ |(ca15_issue1,(ca15_issue1+ca15_sx2,ca15_sx1+ca15_sx2_shf)\ diff --git a/gcc/config/arm/cortex-a5.md b/gcc/config/arm/cortex-a5.md index 963d5babd7b..e59e673d62c 100644 --- a/gcc/config/arm/cortex-a5.md +++ b/gcc/config/arm/cortex-a5.md @@ -58,12 +58,12 @@ (define_insn_reservation "cortex_a5_alu" 2 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "cortex_a5_ex1") (define_insn_reservation "cortex_a5_alu_shift" 2 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "simple_alu_shift,alu_shift,alu_shift_reg")) + (eq_attr "type" "extend,arlo_shift,arlo_shift_reg")) "cortex_a5_ex1") ;; Forwarding path for unshifted operands. diff --git a/gcc/config/arm/cortex-a53.md b/gcc/config/arm/cortex-a53.md index e67fe55ecd3..7cee6c4788b 100644 --- a/gcc/config/arm/cortex-a53.md +++ b/gcc/config/arm/cortex-a53.md @@ -67,12 +67,12 @@ (define_insn_reservation "cortex_a53_alu" 2 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "cortex_a53_slot_any") (define_insn_reservation "cortex_a53_alu_shift" 2 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "alu_shift,alu_shift_reg")) + (eq_attr "type" "arlo_shift,arlo_shift_reg")) "cortex_a53_slot_any") ;; Forwarding path for unshifted operands. diff --git a/gcc/config/arm/cortex-a7.md b/gcc/config/arm/cortex-a7.md index 960174fb90a..3d41543f968 100644 --- a/gcc/config/arm/cortex-a7.md +++ b/gcc/config/arm/cortex-a7.md @@ -88,8 +88,8 @@ ;; ALU instruction with an immediate operand can dual-issue. (define_insn_reservation "cortex_a7_alu_imm" 2 (and (eq_attr "tune" "cortexa7") - (and (ior (eq_attr "type" "simple_alu_imm") - (ior (eq_attr "type" "simple_alu_shift") + (and (ior (eq_attr "type" "arlo_imm") + (ior (eq_attr "type" "extend") (and (eq_attr "insn" "mov") (not (eq_attr "length" "8"))))) (eq_attr "neon_type" "none"))) @@ -99,13 +99,13 @@ ;; with a younger immediate-based instruction. (define_insn_reservation "cortex_a7_alu_reg" 2 (and (eq_attr "tune" "cortexa7") - (and (eq_attr "type" "alu_reg") + (and (eq_attr "type" "arlo_reg,shift,shift_reg") (eq_attr "neon_type" "none"))) "cortex_a7_ex1") (define_insn_reservation "cortex_a7_alu_shift" 2 (and (eq_attr "tune" "cortexa7") - (and (eq_attr "type" "alu_shift,alu_shift_reg") + (and (eq_attr "type" "arlo_shift,arlo_shift_reg") (eq_attr "neon_type" "none"))) "cortex_a7_ex1") diff --git a/gcc/config/arm/cortex-a8.md b/gcc/config/arm/cortex-a8.md index 8d3e98734ce..067ff1c8b1e 100644 --- a/gcc/config/arm/cortex-a8.md +++ b/gcc/config/arm/cortex-a8.md @@ -85,7 +85,7 @@ ;; (source read in E2 and destination available at the end of that cycle). (define_insn_reservation "cortex_a8_alu" 2 (and (eq_attr "tune" "cortexa8") - (ior (and (and (eq_attr "type" "alu_reg,simple_alu_imm") + (ior (and (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (eq_attr "neon_type" "none")) (not (eq_attr "insn" "mov,mvn"))) (eq_attr "insn" "clz"))) @@ -93,13 +93,13 @@ (define_insn_reservation "cortex_a8_alu_shift" 2 (and (eq_attr "tune" "cortexa8") - (and (eq_attr "type" "simple_alu_shift,alu_shift") + (and (eq_attr "type" "extend,arlo_shift") (not (eq_attr "insn" "mov,mvn")))) "cortex_a8_default") (define_insn_reservation "cortex_a8_alu_shift_reg" 2 (and (eq_attr "tune" "cortexa8") - (and (eq_attr "type" "alu_shift_reg") + (and (eq_attr "type" "arlo_shift_reg") (not (eq_attr "insn" "mov,mvn")))) "cortex_a8_default") @@ -107,7 +107,7 @@ (define_insn_reservation "cortex_a8_mov" 1 (and (eq_attr "tune" "cortexa8") - (and (eq_attr "type" "alu_reg,simple_alu_imm,simple_alu_shift,alu_shift,alu_shift_reg") + (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,extend,arlo_shift,arlo_shift_reg") (eq_attr "insn" "mov,mvn"))) "cortex_a8_default") diff --git a/gcc/config/arm/cortex-a9.md b/gcc/config/arm/cortex-a9.md index 05c114dc366..7670f80fc32 100644 --- a/gcc/config/arm/cortex-a9.md +++ b/gcc/config/arm/cortex-a9.md @@ -80,9 +80,9 @@ cortex_a9_p1_e2 + cortex_a9_p0_e1 + cortex_a9_p1_e1") ;; which can go down E2 without any problem. (define_insn_reservation "cortex_a9_dp" 2 (and (eq_attr "tune" "cortexa9") - (ior (and (eq_attr "type" "alu_reg,simple_alu_imm") + (ior (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (eq_attr "neon_type" "none")) - (and (and (eq_attr "type" "alu_shift_reg, simple_alu_shift,alu_shift") + (and (and (eq_attr "type" "arlo_shift_reg,extend,arlo_shift") (eq_attr "insn" "mov")) (eq_attr "neon_type" "none")))) "cortex_a9_p0_default|cortex_a9_p1_default") @@ -90,7 +90,7 @@ cortex_a9_p1_e2 + cortex_a9_p0_e1 + cortex_a9_p1_e1") ;; An instruction using the shifter will go down E1. (define_insn_reservation "cortex_a9_dp_shift" 3 (and (eq_attr "tune" "cortexa9") - (and (eq_attr "type" "alu_shift_reg, simple_alu_shift,alu_shift") + (and (eq_attr "type" "arlo_shift_reg,extend,arlo_shift") (not (eq_attr "insn" "mov")))) "cortex_a9_p0_shift | cortex_a9_p1_shift") diff --git a/gcc/config/arm/cortex-m4.md b/gcc/config/arm/cortex-m4.md index dc3a3299572..775b59283af 100644 --- a/gcc/config/arm/cortex-m4.md +++ b/gcc/config/arm/cortex-m4.md @@ -31,8 +31,8 @@ ;; ALU and multiply is one cycle. (define_insn_reservation "cortex_m4_alu" 1 (and (eq_attr "tune" "cortexm4") - (ior (eq_attr "type" "alu_reg,simple_alu_imm,simple_alu_shift,\ - alu_shift,alu_shift_reg") + (ior (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,extend,\ + arlo_shift,arlo_shift_reg") (ior (eq_attr "mul32" "yes") (eq_attr "mul64" "yes")))) "cortex_m4_ex") diff --git a/gcc/config/arm/cortex-r4.md b/gcc/config/arm/cortex-r4.md index 6d37079f2b3..bc3602c4dda 100644 --- a/gcc/config/arm/cortex-r4.md +++ b/gcc/config/arm/cortex-r4.md @@ -78,24 +78,24 @@ ;; for the purposes of the dual-issue constraints above. (define_insn_reservation "cortex_r4_alu" 2 (and (eq_attr "tune_cortexr4" "yes") - (and (eq_attr "type" "alu_reg,simple_alu_imm") + (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (not (eq_attr "insn" "mov")))) "cortex_r4_alu") (define_insn_reservation "cortex_r4_mov" 2 (and (eq_attr "tune_cortexr4" "yes") - (and (eq_attr "type" "alu_reg,simple_alu_imm") + (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (eq_attr "insn" "mov"))) "cortex_r4_mov") (define_insn_reservation "cortex_r4_alu_shift" 2 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "simple_alu_shift,alu_shift")) + (eq_attr "type" "extend,arlo_shift")) "cortex_r4_alu") (define_insn_reservation "cortex_r4_alu_shift_reg" 2 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "alu_shift_reg")) + (eq_attr "type" "arlo_shift_reg")) "cortex_r4_alu_shift_reg") ;; An ALU instruction followed by an ALU instruction with no early dep. diff --git a/gcc/config/arm/fa526.md b/gcc/config/arm/fa526.md index efc6a1db959..869b25129be 100644 --- a/gcc/config/arm/fa526.md +++ b/gcc/config/arm/fa526.md @@ -62,12 +62,12 @@ ;; ALU operations (define_insn_reservation "526_alu_op" 1 (and (eq_attr "tune" "fa526") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "fa526_core") (define_insn_reservation "526_alu_shift_op" 2 (and (eq_attr "tune" "fa526") - (eq_attr "type" "simple_alu_shift,alu_shift,alu_shift_reg")) + (eq_attr "type" "extend,arlo_shift,arlo_shift_reg")) "fa526_core") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/fa606te.md b/gcc/config/arm/fa606te.md index dec26c5c3ac..c22b286dceb 100644 --- a/gcc/config/arm/fa606te.md +++ b/gcc/config/arm/fa606te.md @@ -62,7 +62,7 @@ ;; ALU operations (define_insn_reservation "606te_alu_op" 1 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "alu_reg,simple_alu_imm,simple_alu_shift,alu_shift,alu_shift_reg")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg,extend,arlo_shift,arlo_shift_reg")) "fa606te_core") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/fa626te.md b/gcc/config/arm/fa626te.md index 818ad607b47..7d58e67d509 100644 --- a/gcc/config/arm/fa626te.md +++ b/gcc/config/arm/fa626te.md @@ -68,12 +68,12 @@ ;; ALU operations (define_insn_reservation "626te_alu_op" 1 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "fa626te_core") (define_insn_reservation "626te_alu_shift_op" 2 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "simple_alu_shift,alu_shift,alu_shift_reg")) + (eq_attr "type" "extend,arlo_shift,arlo_shift_reg")) "fa626te_core") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/fa726te.md b/gcc/config/arm/fa726te.md index 8790b035aa5..880b2b8b277 100644 --- a/gcc/config/arm/fa726te.md +++ b/gcc/config/arm/fa726te.md @@ -85,7 +85,7 @@ ;; Other ALU instructions 2 cycles. (define_insn_reservation "726te_alu_op" 1 (and (eq_attr "tune" "fa726te") - (and (eq_attr "type" "alu_reg,simple_alu_imm") + (and (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (not (eq_attr "insn" "mov,mvn")))) "fa726te_issue+(fa726te_alu0_pipe|fa726te_alu1_pipe)") @@ -95,13 +95,13 @@ ;; it takes 3 cycles. (define_insn_reservation "726te_alu_shift_op" 3 (and (eq_attr "tune" "fa726te") - (and (eq_attr "type" "simple_alu_shift,alu_shift") + (and (eq_attr "type" "extend,arlo_shift") (not (eq_attr "insn" "mov,mvn")))) "fa726te_issue+(fa726te_alu0_pipe|fa726te_alu1_pipe)") (define_insn_reservation "726te_alu_shift_reg_op" 3 (and (eq_attr "tune" "fa726te") - (and (eq_attr "type" "alu_shift_reg") + (and (eq_attr "type" "arlo_shift_reg") (not (eq_attr "insn" "mov,mvn")))) "fa726te_issue+(fa726te_alu0_pipe|fa726te_alu1_pipe)") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/fmp626.md b/gcc/config/arm/fmp626.md index f3b7dadcba2..279f7fb0bb0 100644 --- a/gcc/config/arm/fmp626.md +++ b/gcc/config/arm/fmp626.md @@ -63,12 +63,12 @@ ;; ALU operations (define_insn_reservation "mp626_alu_op" 1 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "alu_reg,simple_alu_imm")) + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg")) "fmp626_core") (define_insn_reservation "mp626_alu_shift_op" 2 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "simple_alu_shift,alu_shift,alu_shift_reg")) + (eq_attr "type" "extend,arlo_shift,arlo_shift_reg")) "fmp626_core") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/marvell-pj4.md b/gcc/config/arm/marvell-pj4.md index 4004fa59409..3386ec3209b 100644 --- a/gcc/config/arm/marvell-pj4.md +++ b/gcc/config/arm/marvell-pj4.md @@ -41,54 +41,54 @@ (define_insn_reservation "pj4_alu_e1" 1 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "simple_alu_imm,alu_reg") + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (not (eq_attr "conds" "set")) (eq_attr "insn" "mov,mvn")) "pj4_is,(pj4_alu1,pj4_w1+pj4_cp)|(pj4_alu2,pj4_w2+pj4_cp)") (define_insn_reservation "pj4_alu_e1_conds" 4 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "simple_alu_imm,alu_reg") + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (eq_attr "conds" "set") (eq_attr "insn" "mov,mvn")) "pj4_is,(pj4_alu1,pj4_w1+pj4_cp)|(pj4_alu2,pj4_w2+pj4_cp)") (define_insn_reservation "pj4_alu" 1 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "simple_alu_imm,alu_reg") + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (not (eq_attr "conds" "set")) (not (eq_attr "insn" "mov,mvn"))) "pj4_is,(pj4_alu1,pj4_w1+pj4_cp)|(pj4_alu2,pj4_w2+pj4_cp)") (define_insn_reservation "pj4_alu_conds" 4 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "simple_alu_imm,alu_reg") + (eq_attr "type" "arlo_imm,arlo_reg,shift,shift_reg") (eq_attr "conds" "set") (not (eq_attr "insn" "mov,mvn"))) "pj4_is,(pj4_alu1,pj4_w1+pj4_cp)|(pj4_alu2,pj4_w2+pj4_cp)") (define_insn_reservation "pj4_shift" 1 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "alu_shift,alu_shift_reg,simple_alu_shift") + (eq_attr "type" "arlo_shift,arlo_shift_reg,extend") (not (eq_attr "conds" "set")) (eq_attr "shift" "1")) "pj4_is,(pj4_alu1,pj4_w1+pj4_cp)|(pj4_alu2,pj4_w2+pj4_cp)") (define_insn_reservation "pj4_shift_conds" 4 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "alu_shift,alu_shift_reg,simple_alu_shift") + (eq_attr "type" "arlo_shift,arlo_shift_reg,extend") (eq_attr "conds" "set") (eq_attr "shift" "1")) "pj4_is,(pj4_alu1,pj4_w1+pj4_cp)|(pj4_alu2,pj4_w2+pj4_cp)") (define_insn_reservation "pj4_alu_shift" 1 (and (eq_attr "tune" "marvell_pj4") (not (eq_attr "conds" "set")) - (eq_attr "type" "alu_shift,alu_shift_reg,simple_alu_shift")) + (eq_attr "type" "arlo_shift,arlo_shift_reg,extend")) "pj4_is,(pj4_alu1,nothing,pj4_w1+pj4_cp)|(pj4_alu2,nothing,pj4_w2+pj4_cp)") (define_insn_reservation "pj4_alu_shift_conds" 4 (and (eq_attr "tune" "marvell_pj4") (eq_attr "conds" "set") - (eq_attr "type" "alu_shift,alu_shift_reg,simple_alu_shift")) + (eq_attr "type" "arlo_shift,arlo_shift_reg,extend")) "pj4_is,(pj4_alu1,nothing,pj4_w1+pj4_cp)|(pj4_alu2,nothing,pj4_w2+pj4_cp)") (define_bypass 2 "pj4_alu_shift,pj4_shift" diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 2761adb286a..bcc93de0da4 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -61,7 +61,7 @@ } } [(set_attr "neon_type" "neon_int_1,*,neon_vmov,*,neon_mrrc,neon_mcr_2_mcrr,*,*,*") - (set_attr "type" "*,f_stored,*,f_loadd,*,*,alu_reg,load2,store2") + (set_attr "type" "*,f_stored,*,f_loadd,*,*,arlo_reg,load2,store2") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,4,4,4,4,4,8,8,8") (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") @@ -107,7 +107,7 @@ } [(set_attr "neon_type" "neon_int_1,neon_stm_2,neon_vmov,neon_ldm_2,\ neon_mrrc,neon_mcr_2_mcrr,*,*,*") - (set_attr "type" "*,*,*,*,*,*,alu_reg,load4,store4") + (set_attr "type" "*,*,*,*,*,*,arlo_reg,load4,store4") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,8,4,8,8,8,16,8,16") (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index cd5837480b8..e36b4367699 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -35,7 +35,7 @@ "bic%?\\t%0, %1, %2%S4" [(set_attr "predicable" "yes") (set_attr "shift" "2") - (set_attr "type" "alu_shift")] + (set_attr "type" "arlo_shift")] ) (define_insn_and_split "*thumb2_smaxsi3" @@ -283,7 +283,7 @@ ldr%?\\t%0, %1 str%?\\t%1, %0 str%?\\t%1, %0" - [(set_attr "type" "*,simple_alu_imm,simple_alu_imm,simple_alu_imm,*,load1,load1,store1,store1") + [(set_attr "type" "*,arlo_imm,arlo_imm,arlo_imm,*,load1,load1,store1,store1") (set_attr "length" "2,4,2,4,4,4,4,4,4") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,no,yes,no,no,no,no,no,no") @@ -336,7 +336,7 @@ "cmn%?\\t%0, %1%S3" [(set_attr "conds" "set") (set_attr "shift" "1") - (set_attr "type" "alu_shift")] + (set_attr "type" "arlo_shift")] ) (define_insn_and_split "*thumb2_mov_scc" @@ -815,7 +815,7 @@ "@ sxtb%?\\t%0, %1 ldr%(sb%)\\t%0, %1" - [(set_attr "type" "simple_alu_shift,load_byte") + [(set_attr "type" "extend,load_byte") (set_attr "predicable" "yes") (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] @@ -828,7 +828,7 @@ "@ uxth%?\\t%0, %1 ldr%(h%)\\t%0, %1" - [(set_attr "type" "simple_alu_shift,load_byte") + [(set_attr "type" "extend,load_byte") (set_attr "predicable" "yes") (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] @@ -841,7 +841,7 @@ "@ uxtb%(%)\\t%0, %1 ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2" - [(set_attr "type" "simple_alu_shift,load_byte") + [(set_attr "type" "extend,load_byte") (set_attr "predicable" "yes") (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] @@ -933,8 +933,8 @@ (set_attr "shift" "1") (set_attr "length" "2") (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") - (const_string "alu_shift") - (const_string "alu_shift_reg")))] + (const_string "arlo_shift") + (const_string "arlo_shift_reg")))] ) (define_insn "*thumb2_mov<mode>_shortim" @@ -1056,7 +1056,7 @@ " [(set_attr "conds" "set") (set_attr "length" "2,2,4,4") - (set_attr "type" "simple_alu_imm,*,simple_alu_imm,*")] + (set_attr "type" "arlo_imm,*,arlo_imm,*")] ) (define_insn "*thumb2_mulsi_short" @@ -1180,7 +1180,7 @@ "orn%?\\t%0, %1, %2%S4" [(set_attr "predicable" "yes") (set_attr "shift" "2") - (set_attr "type" "alu_shift")] + (set_attr "type" "arlo_shift")] ) (define_peephole2 diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 9ac887e9b19..abebb0fc144 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -53,7 +53,7 @@ } " [(set_attr "predicable" "yes") - (set_attr "type" "*,*,simple_alu_imm,simple_alu_imm,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") + (set_attr "type" "*,*,arlo_imm,arlo_imm,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*") (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*") (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*") |