From 89b2133e2b7ef072e5b378a82c697269d8cd1db9 Mon Sep 17 00:00:00 2001 From: James Greenhalgh Date: Tue, 12 Sep 2017 14:48:34 +0000 Subject: [PATCH] [Mechanical Patch ARM/AArch64 1/2] Rename load/store scheduling types to encode data size In the AArch64 backend and scheduling models there is some confusion as to what the load1/load2 etc. scheduling types refer to. This leads to us using load1/load2 in two contexts - for a variety of 32-bit, 64-bit and 128-bit loads in AArch32 and 128-bit loads in AArch64. That leads to an undesirable confusion in scheduling. Fixing it is easy, but mechanical and boring. Essentially, s/load1/load_4/ s/load2/load_8/ s/load3/load_12/ s/load4/load_16/ s/store1/store_4/ s/store2/store_8/ s/store3/store_12/ s/store4/store_16/ Across all sorts of pipeline models, and the two backends. I have intentionally not modified any of the patterns which now look obviously incorrect. I'll be doing a second pass over the AArch64 back-end in patch 2/2 which will fix these bugs. --- gcc/ * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16 and store1/2/3/4 to store_4/8/12/16. * config/aarch64/aarch64.md: Update for rename. * config/arm/arm.md: Likewise.: Likewise. * config/arm/arm.c: Likewise. * config/arm/thumb1.md: Likewise. * config/arm/thumb2.md: Likewise. * config/arm/vfp.md: Likewise. * config/arm/arm-generic.md: Likewise. * config/arm/arm1020e.md: Likewise. * config/arm/arm1026ejs.md: Likewise. * config/arm/arm1136jfs.md: Likewise. * config/arm/arm926ejs.md: Likewise. * config/arm/cortex-a15.md: Likewise. * config/arm/cortex-a17.md: Likewise. * config/arm/cortex-a5.md: Likewise. * config/arm/cortex-a53.md: Likewise. * config/arm/cortex-a57.md: Likewise. * config/arm/cortex-a7.md: Likewise. * config/arm/cortex-a8.md: Likewise. * config/arm/cortex-a9.md: Likewise. * config/arm/cortex-m4.md: Likewise. * config/arm/cortex-m7.md: Likewise. * config/arm/cortex-r4.md: Likewise. * config/arm/exynos-m1.md: Likewise. * config/arm/fa526.md: Likewise. * config/arm/fa606te.md: Likewise. * config/arm/fa626te.md: Likewise. * config/arm/fa726te.md: Likewise. * config/arm/fmp626.md: Likewise. * config/arm/iwmmxt.md: Likewise. * config/arm/ldmstm.md: Likewise. * config/arm/marvell-pj4.md: Likewise. * config/arm/xgene1.md: Likewise. * config/aarch64/thunderx.md: Likewise. * config/aarch64/thunderx2t99.md: Likewise. * config/aarch64/falkor.md: Likewise. From-SVN: r252025 --- gcc/ChangeLog | 40 +++++++++++++ gcc/config/aarch64/aarch64.md | 70 +++++++++++------------ gcc/config/aarch64/falkor.md | 4 +- gcc/config/aarch64/thunderx.md | 6 +- gcc/config/aarch64/thunderx2t99.md | 8 +-- gcc/config/arm/arm-generic.md | 26 ++++----- gcc/config/arm/arm.c | 4 +- gcc/config/arm/arm.md | 78 ++++++++++++------------- gcc/config/arm/arm1020e.md | 12 ++-- gcc/config/arm/arm1026ejs.md | 12 ++-- gcc/config/arm/arm1136jfs.md | 12 ++-- gcc/config/arm/arm926ejs.md | 16 +++--- gcc/config/arm/cortex-a15.md | 8 +-- gcc/config/arm/cortex-a17.md | 12 ++-- gcc/config/arm/cortex-a5.md | 16 +++--- gcc/config/arm/cortex-a53.md | 12 ++-- gcc/config/arm/cortex-a57.md | 8 +-- gcc/config/arm/cortex-a7.md | 16 +++--- gcc/config/arm/cortex-a8.md | 8 +-- gcc/config/arm/cortex-a9.md | 8 +-- gcc/config/arm/cortex-m4.md | 18 +++--- gcc/config/arm/cortex-m7.md | 12 ++-- gcc/config/arm/cortex-r4.md | 8 +-- gcc/config/arm/exynos-m1.md | 8 +-- gcc/config/arm/fa526.md | 16 +++--- gcc/config/arm/fa606te.md | 18 +++--- gcc/config/arm/fa626te.md | 12 ++-- gcc/config/arm/fa726te.md | 12 ++-- gcc/config/arm/fmp626.md | 12 ++-- gcc/config/arm/iwmmxt.md | 8 +-- gcc/config/arm/ldmstm.md | 114 ++++++++++++++++++------------------- gcc/config/arm/marvell-pj4.md | 12 ++-- gcc/config/arm/thumb1.md | 18 +++--- gcc/config/arm/thumb2.md | 8 +-- gcc/config/arm/types.md | 34 +++++------ gcc/config/arm/vfp.md | 34 +++++------ gcc/config/arm/xgene1.md | 10 ++-- 37 files changed, 385 insertions(+), 345 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a4fbc2a..fae4772 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,43 @@ +2017-09-12 James Greenhalgh + + * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16 + and store1/2/3/4 to store_4/8/12/16. + * config/aarch64/aarch64.md: Update for rename. + * config/arm/arm.md: Likewise.: Likewise. + * config/arm/arm.c: Likewise. + * config/arm/thumb1.md: Likewise. + * config/arm/thumb2.md: Likewise. + * config/arm/vfp.md: Likewise. + * config/arm/arm-generic.md: Likewise. + * config/arm/arm1020e.md: Likewise. + * config/arm/arm1026ejs.md: Likewise. + * config/arm/arm1136jfs.md: Likewise. + * config/arm/arm926ejs.md: Likewise. + * config/arm/cortex-a15.md: Likewise. + * config/arm/cortex-a17.md: Likewise. + * config/arm/cortex-a5.md: Likewise. + * config/arm/cortex-a53.md: Likewise. + * config/arm/cortex-a57.md: Likewise. + * config/arm/cortex-a7.md: Likewise. + * config/arm/cortex-a8.md: Likewise. + * config/arm/cortex-a9.md: Likewise. + * config/arm/cortex-m4.md: Likewise. + * config/arm/cortex-m7.md: Likewise. + * config/arm/cortex-r4.md: Likewise. + * config/arm/exynos-m1.md: Likewise. + * config/arm/fa526.md: Likewise. + * config/arm/fa606te.md: Likewise. + * config/arm/fa626te.md: Likewise. + * config/arm/fa726te.md: Likewise. + * config/arm/fmp626.md: Likewise. + * config/arm/iwmmxt.md: Likewise. + * config/arm/ldmstm.md: Likewise. + * config/arm/marvell-pj4.md: Likewise. + * config/arm/xgene1.md: Likewise. + * config/aarch64/thunderx.md: Likewise. + * config/aarch64/thunderx2t99.md: Likewise. + * config/aarch64/falkor.md: Likewise. + 2017-09-12 Martin Liska * attribs.c (private_lookup_attribute): New function. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index bb7f2c0..7cbb458 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -558,7 +558,7 @@ operands[0] = gen_rtx_MEM (DImode, operands[0]); return pftype[INTVAL(operands[1])][locality]; } - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) (define_insn "trap" @@ -902,7 +902,7 @@ gcc_unreachable (); } } - [(set_attr "type" "mov_reg,mov_imm,neon_move,load1,load1,store1,store1,\ + [(set_attr "type" "mov_reg,mov_imm,neon_move,load_4,load_4,store_4,store_4,\ neon_to_gp,neon_from_gp,neon_dup") (set_attr "simd" "*,*,yes,*,*,*,*,yes,yes,yes")] ) @@ -959,7 +959,7 @@ aarch64_expand_mov_immediate (operands[0], operands[1]); DONE; }" - [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\ + [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,load_4,load_4,store_4,store_4,\ adr,adr,f_mcr,f_mrc,fmov,neon_move") (set_attr "fp" "*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*") (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes")] @@ -994,8 +994,8 @@ aarch64_expand_mov_immediate (operands[0], operands[1]); DONE; }" - [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,mov_imm,load1,\ - load1,store1,store1,adr,adr,f_mcr,f_mrc,fmov,neon_move") + [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,mov_imm,load_4,\ + load_4,store_4,store_4,adr,adr,f_mcr,f_mrc,fmov,neon_move") (set_attr "fp" "*,*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*") (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes")] ) @@ -1039,7 +1039,7 @@ ldr\\t%q0, %1 str\\t%q1, %0" [(set_attr "type" "multiple,f_mcr,f_mrc,neon_logic_q, \ - load2,store2,store2,f_loadd,f_stored") + load_8,store_8,store_8,f_loadd,f_stored") (set_attr "length" "8,8,8,4,4,4,4,4,4") (set_attr "simd" "*,*,*,yes,*,*,*,*,*") (set_attr "fp" "*,*,*,*,*,*,*,yes,yes")] @@ -1094,7 +1094,7 @@ strh\\t%w1, %0 mov\\t%w0, %w1" [(set_attr "type" "neon_move,f_mcr,neon_to_gp,neon_move,fconsts, \ - neon_move,f_loads,f_stores,load1,store1,mov_reg") + neon_move,f_loads,f_stores,load_4,store_4,mov_reg") (set_attr "simd" "yes,*,yes,yes,*,yes,*,*,*,*,*") (set_attr "fp16" "*,yes,*,*,yes,*,*,*,*,*,*")] ) @@ -1118,7 +1118,7 @@ mov\\t%w0, %w1 mov\\t%w0, %1" [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconsts,neon_move,\ - f_loads,f_stores,load1,store1,mov_reg,\ + f_loads,f_stores,load_4,store_4,mov_reg,\ fconsts") (set_attr "simd" "yes,*,*,*,*,yes,*,*,*,*,*,*")] ) @@ -1142,7 +1142,7 @@ mov\\t%x0, %x1 mov\\t%x0, %1" [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconstd,neon_move,\ - f_loadd,f_stored,load1,store1,mov_reg,\ + f_loadd,f_stored,load_4,store_4,mov_reg,\ fconstd") (set_attr "simd" "yes,*,*,*,*,yes,*,*,*,*,*,*")] ) @@ -1187,7 +1187,7 @@ stp\\t%1, %H1, %0 stp\\txzr, xzr, %0" [(set_attr "type" "logic_reg,multiple,f_mcr,f_mrc,neon_move_q,f_mcr,\ - f_loadd,f_stored,load2,store2,store2") + f_loadd,f_stored,load_8,store_8,store_8") (set_attr "length" "4,8,8,8,4,4,4,4,4,4,4") (set_attr "simd" "yes,*,*,*,yes,*,*,*,*,*,*")] ) @@ -1235,7 +1235,7 @@ "@ ldp\\t%w0, %w2, %1 ldp\\t%s0, %s2, %1" - [(set_attr "type" "load2,neon_load1_2reg") + [(set_attr "type" "load_8,neon_load1_2reg") (set_attr "fp" "*,yes")] ) @@ -1251,7 +1251,7 @@ "@ ldp\\t%x0, %x2, %1 ldp\\t%d0, %d2, %1" - [(set_attr "type" "load2,neon_load1_2reg") + [(set_attr "type" "load_8,neon_load1_2reg") (set_attr "fp" "*,yes")] ) @@ -1270,7 +1270,7 @@ "@ stp\\t%w1, %w3, %0 stp\\t%s1, %s3, %0" - [(set_attr "type" "store2,neon_store1_2reg") + [(set_attr "type" "store_8,neon_store1_2reg") (set_attr "fp" "*,yes")] ) @@ -1286,7 +1286,7 @@ "@ stp\\t%x1, %x3, %0 stp\\t%d1, %d3, %0" - [(set_attr "type" "store2,neon_store1_2reg") + [(set_attr "type" "store_8,neon_store1_2reg") (set_attr "fp" "*,yes")] ) @@ -1304,7 +1304,7 @@ "@ ldp\\t%s0, %s2, %1 ldp\\t%w0, %w2, %1" - [(set_attr "type" "neon_load1_2reg,load2") + [(set_attr "type" "neon_load1_2reg,load_8") (set_attr "fp" "yes,*")] ) @@ -1320,7 +1320,7 @@ "@ ldp\\t%d0, %d2, %1 ldp\\t%x0, %x2, %1" - [(set_attr "type" "neon_load1_2reg,load2") + [(set_attr "type" "neon_load1_2reg,load_8") (set_attr "fp" "yes,*")] ) @@ -1338,7 +1338,7 @@ "@ stp\\t%s1, %s3, %0 stp\\t%w1, %w3, %0" - [(set_attr "type" "neon_store1_2reg,store2") + [(set_attr "type" "neon_store1_2reg,store_8") (set_attr "fp" "yes,*")] ) @@ -1354,7 +1354,7 @@ "@ stp\\t%d1, %d3, %0 stp\\t%x1, %x3, %0" - [(set_attr "type" "neon_store1_2reg,store2") + [(set_attr "type" "neon_store1_2reg,store_8") (set_attr "fp" "yes,*")] ) @@ -1372,7 +1372,7 @@ (match_operand:P 5 "const_int_operand" "n"))))])] "INTVAL (operands[5]) == GET_MODE_SIZE (mode)" "ldp\\t%2, %3, [%1], %4" - [(set_attr "type" "load2")] + [(set_attr "type" "load_8")] ) (define_insn "loadwb_pair_" @@ -1405,7 +1405,7 @@ (match_operand:GPI 3 "register_operand" "r"))])] "INTVAL (operands[5]) == INTVAL (operands[4]) + GET_MODE_SIZE (mode)" "stp\\t%2, %3, [%0, %4]!" - [(set_attr "type" "store2")] + [(set_attr "type" "store_8")] ) (define_insn "storewb_pair_" @@ -1441,7 +1441,7 @@ "@ sxtw\t%0, %w1 ldrsw\t%0, %1" - [(set_attr "type" "extend,load1")] + [(set_attr "type" "extend,load_4")] ) (define_insn "*load_pair_extendsidi2_aarch64" @@ -1454,7 +1454,7 @@ XEXP (operands[1], 0), GET_MODE_SIZE (SImode)))" "ldpsw\\t%0, %2, %1" - [(set_attr "type" "load2")] + [(set_attr "type" "load_8")] ) (define_insn "*zero_extendsidi2_aarch64" @@ -1464,7 +1464,7 @@ "@ uxtw\t%0, %w1 ldr\t%w0, %1" - [(set_attr "type" "extend,load1")] + [(set_attr "type" "extend,load_4")] ) (define_insn "*load_pair_zero_extendsidi2_aarch64" @@ -1477,7 +1477,7 @@ XEXP (operands[1], 0), GET_MODE_SIZE (SImode)))" "ldp\\t%w0, %w2, %1" - [(set_attr "type" "load2")] + [(set_attr "type" "load_8")] ) (define_expand "2" @@ -1493,7 +1493,7 @@ "@ sxt\t%0, %w1 ldrs\t%0, %1" - [(set_attr "type" "extend,load1")] + [(set_attr "type" "extend,load_4")] ) (define_insn "*zero_extend2_aarch64" @@ -1504,7 +1504,7 @@ and\t%0, %1, ldr\t%w0, %1 ldr\t%0, %1" - [(set_attr "type" "logic_imm,load1,load1")] + [(set_attr "type" "logic_imm,load_4,load_4")] ) (define_expand "qihi2" @@ -1520,7 +1520,7 @@ "@ sxtb\t%w0, %w1 ldrsb\t%w0, %1" - [(set_attr "type" "extend,load1")] + [(set_attr "type" "extend,load_4")] ) (define_insn "*zero_extendqihi2_aarch64" @@ -1530,7 +1530,7 @@ "@ and\t%w0, %w1, 255 ldrb\t%w0, %1" - [(set_attr "type" "logic_imm,load1")] + [(set_attr "type" "logic_imm,load_4")] ) ;; ------------------------------------------------------------------- @@ -5355,7 +5355,7 @@ UNSPEC_GOTSMALLPIC))] "" "ldr\\t%0, [%1, #:got_lo12:%a2]" - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) (define_insn "ldr_got_small_sidi" @@ -5367,7 +5367,7 @@ UNSPEC_GOTSMALLPIC)))] "TARGET_ILP32" "ldr\\t%w0, [%1, #:got_lo12:%a2]" - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) (define_insn "ldr_got_small_28k_" @@ -5378,7 +5378,7 @@ UNSPEC_GOTSMALLPIC28K))] "" "ldr\\t%0, [%1, #::%a2]" - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) (define_insn "ldr_got_small_28k_sidi" @@ -5390,7 +5390,7 @@ UNSPEC_GOTSMALLPIC28K)))] "TARGET_ILP32" "ldr\\t%w0, [%1, #:gotpage_lo14:%a2]" - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) (define_insn "ldr_got_tiny" @@ -5399,7 +5399,7 @@ UNSPEC_GOTTINYPIC))] "" "ldr\\t%0, %L1" - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) (define_insn "aarch64_load_tp_hard" @@ -5440,7 +5440,7 @@ UNSPEC_GOTSMALLTLS))] "" "adrp\\t%0, %A1\;ldr\\t%0, [%0, #%L1]" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set_attr "length" "8")] ) @@ -5451,7 +5451,7 @@ UNSPEC_GOTSMALLTLS)))] "" "adrp\\t%0, %A1\;ldr\\t%w0, [%0, #%L1]" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set_attr "length" "8")] ) diff --git a/gcc/config/aarch64/falkor.md b/gcc/config/aarch64/falkor.md index b422ab3..66efc8c 100644 --- a/gcc/config/aarch64/falkor.md +++ b/gcc/config/aarch64/falkor.md @@ -581,7 +581,7 @@ (define_insn_reservation "falkor_ld_3_ld" 3 (and (eq_attr "tune" "falkor") - (eq_attr "type" "load1,load2")) + (eq_attr "type" "load_4,load_8")) "falkor_ld") ;; Miscellaneous Data-Processing Instructions @@ -663,7 +663,7 @@ (define_insn_reservation "falkor_st_0_st_sd" 0 (and (eq_attr "tune" "falkor") - (eq_attr "type" "store1,store2")) + (eq_attr "type" "store_4,store_8")) "falkor_st+falkor_sd") ;; Muliply bypasses. diff --git a/gcc/config/aarch64/thunderx.md b/gcc/config/aarch64/thunderx.md index b67671d..c18da2f 100644 --- a/gcc/config/aarch64/thunderx.md +++ b/gcc/config/aarch64/thunderx.md @@ -94,13 +94,13 @@ ;; Stores take one cycle in pipe 0 (define_insn_reservation "thunderx_store" 1 (and (eq_attr "tune" "thunderx") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "thunderx_pipe0") ;; Store pair are single issued (define_insn_reservation "thunderx_storepair" 1 (and (eq_attr "tune" "thunderx") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "thunderx_pipe0 + thunderx_pipe1") ;; Prefetch are single issued @@ -112,7 +112,7 @@ ;; loads (and load pairs) from L1 take 3 cycles in pipe 0 (define_insn_reservation "thunderx_load" 3 (and (eq_attr "tune" "thunderx") - (eq_attr "type" "load1, load2")) + (eq_attr "type" "load_4, load_8")) "thunderx_pipe0") (define_insn_reservation "thunderx_brj" 1 diff --git a/gcc/config/aarch64/thunderx2t99.md b/gcc/config/aarch64/thunderx2t99.md index 7134884..41a45ca 100644 --- a/gcc/config/aarch64/thunderx2t99.md +++ b/gcc/config/aarch64/thunderx2t99.md @@ -123,22 +123,22 @@ (define_insn_reservation "thunderx2t99_load_basic" 4 (and (eq_attr "tune" "thunderx2t99") - (eq_attr "type" "load1")) + (eq_attr "type" "load_4")) "thunderx2t99_ls01") (define_insn_reservation "thunderx2t99_loadpair" 5 (and (eq_attr "tune" "thunderx2t99") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "thunderx2t99_i012,thunderx2t99_ls01") (define_insn_reservation "thunderx2t99_store_basic" 1 (and (eq_attr "tune" "thunderx2t99") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "thunderx2t99_ls01,thunderx2t99_sd") (define_insn_reservation "thunderx2t99_storepair_basic" 1 (and (eq_attr "tune" "thunderx2t99") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "thunderx2t99_ls01,thunderx2t99_sd") ;; FP data processing instructions. diff --git a/gcc/config/arm/arm-generic.md b/gcc/config/arm/arm-generic.md index 52c8b2e..0a45608 100644 --- a/gcc/config/arm/arm-generic.md +++ b/gcc/config/arm/arm-generic.md @@ -47,69 +47,69 @@ (define_insn_reservation "store_wbuf" 5 (and (eq_attr "generic_sched" "yes") (and (eq_attr "model_wbuf" "yes") - (eq_attr "type" "store1"))) + (eq_attr "type" "store_4"))) "core+write_buf*3+write_blockage*5") (define_insn_reservation "store2_wbuf" 7 (and (eq_attr "generic_sched" "yes") (and (eq_attr "model_wbuf" "yes") - (eq_attr "type" "store2"))) + (eq_attr "type" "store_8"))) "core+write_buf*4+write_blockage*7") (define_insn_reservation "store3_wbuf" 9 (and (eq_attr "generic_sched" "yes") (and (eq_attr "model_wbuf" "yes") - (eq_attr "type" "store3"))) + (eq_attr "type" "store_12"))) "core+write_buf*5+write_blockage*9") (define_insn_reservation "store4_wbuf" 11 (and (eq_attr "generic_sched" "yes") (and (eq_attr "model_wbuf" "yes") - (eq_attr "type" "store4"))) + (eq_attr "type" "store_16"))) "core+write_buf*6+write_blockage*11") (define_insn_reservation "store2" 3 (and (eq_attr "generic_sched" "yes") (and (eq_attr "model_wbuf" "no") - (eq_attr "type" "store2"))) + (eq_attr "type" "store_8"))) "core*3") (define_insn_reservation "store3" 4 (and (eq_attr "generic_sched" "yes") (and (eq_attr "model_wbuf" "no") - (eq_attr "type" "store3"))) + (eq_attr "type" "store_12"))) "core*4") (define_insn_reservation "store4" 5 (and (eq_attr "generic_sched" "yes") (and (eq_attr "model_wbuf" "no") - (eq_attr "type" "store4"))) + (eq_attr "type" "store_16"))) "core*5") (define_insn_reservation "store_ldsched" 1 (and (eq_attr "generic_sched" "yes") (and (eq_attr "ldsched" "yes") - (eq_attr "type" "store1"))) + (eq_attr "type" "store_4"))) "core") (define_insn_reservation "load_ldsched_xscale" 3 (and (eq_attr "generic_sched" "yes") (and (eq_attr "ldsched" "yes") - (and (eq_attr "type" "load_byte,load1") + (and (eq_attr "type" "load_byte,load_4") (eq_attr "tune" "xscale,iwmmxt,iwmmxt2")))) "core") (define_insn_reservation "load_ldsched" 2 (and (eq_attr "generic_sched" "yes") (and (eq_attr "ldsched" "yes") - (and (eq_attr "type" "load_byte,load1") + (and (eq_attr "type" "load_byte,load_4") (eq_attr "tune" "!xscale,iwmmxt,iwmmxt2")))) "core") (define_insn_reservation "load_or_store" 2 (and (eq_attr "generic_sched" "yes") (and (eq_attr "ldsched" "!yes") - (eq_attr "type" "load_byte,load1,load2,load3,load4,store1"))) + (eq_attr "type" "load_byte,load_4,load_8,load_12,load_16,store_4"))) "core*2") (define_insn_reservation "mult" 16 @@ -140,8 +140,8 @@ (define_insn_reservation "multi_cycle" 32 (and (eq_attr "generic_sched" "yes") (and (eq_attr "core_cycles" "multi") - (and (eq_attr "type" "!load_byte,load1,load2,load3,load4,\ - store1,store2,store3,store4") + (and (eq_attr "type" "!load_byte,load_4,load_8,load_12,load_16,\ + store_4,store_8,store_12,store_16") (not (ior (eq_attr "mul32" "yes") (eq_attr "mul64" "yes")))))) "core*32") diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 36c9e0b..c8c4301 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -11311,8 +11311,8 @@ cortexa7_older_only (rtx_insn *insn) case TYPE_SHIFT_IMM: case TYPE_SHIFT_REG: case TYPE_LOAD_BYTE: - case TYPE_LOAD1: - case TYPE_STORE1: + case TYPE_LOAD_4: + case TYPE_STORE_4: case TYPE_FFARITHS: case TYPE_FADDS: case TYPE_FFARITHD: diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index df73e73..6c4e361 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -314,7 +314,7 @@ ; to stall the processor. Used with model_wbuf above. (define_attr "write_conflict" "no,yes" (if_then_else (eq_attr "type" - "block,call,load1") + "block,call,load_4") (const_string "yes") (const_string "no"))) @@ -3819,7 +3819,7 @@ "" [(set_attr "conds" "clob") (set_attr "length" "8,8,12") - (set_attr "type" "store1")] + (set_attr "type" "store_4")] ) (define_expand "uminsi3" @@ -3852,7 +3852,7 @@ "" [(set_attr "conds" "clob") (set_attr "length" "8,8,12") - (set_attr "type" "store1")] + (set_attr "type" "store_4")] ) (define_insn "*store_minmaxsi" @@ -3877,7 +3877,7 @@ (if_then_else (eq_attr "is_thumb" "yes") (const_int 14) (const_int 12))) - (set_attr "type" "store1")] + (set_attr "type" "store_4")] ) ; Reject the frame pointer in operand[1], since reloading this after @@ -4544,7 +4544,7 @@ (set_attr "length" "2,4") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,no") - (set_attr "type" "load1")]) + (set_attr "type" "load_4")]) (define_insn "unaligned_loadhis" [(set (match_operand:SI 0 "s_register_operand" "=l,r") @@ -4582,7 +4582,7 @@ (set_attr "length" "2,4") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,no") - (set_attr "type" "store1")]) + (set_attr "type" "store_4")]) (define_insn "unaligned_storehi" [(set (match_operand:HI 0 "memory_operand" "=Uw,m") @@ -4594,7 +4594,7 @@ (set_attr "length" "2,4") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,no") - (set_attr "type" "store1")]) + (set_attr "type" "store_4")]) (define_insn "*extv_reg" @@ -5935,7 +5935,7 @@ } " [(set_attr "length" "8,12,16,8,8") - (set_attr "type" "multiple,multiple,multiple,load2,store2") + (set_attr "type" "multiple,multiple,multiple,load_8,store_8") (set_attr "arm_pool_range" "*,*,*,1020,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") (set_attr "thumb2_pool_range" "*,*,*,4094,*") @@ -6156,7 +6156,7 @@ movw%?\\t%0, %1 ldr%?\\t%0, %1 str%?\\t%1, %0" - [(set_attr "type" "mov_reg,mov_imm,mvn_imm,mov_imm,load1,store1") + [(set_attr "type" "mov_reg,mov_imm,mvn_imm,mov_imm,load_4,store_4") (set_attr "predicable" "yes") (set_attr "arch" "*,*,*,v6t2,*,*") (set_attr "pool_range" "*,*,*,*,4096,*") @@ -6286,7 +6286,7 @@ (set (match_dup 0) (unspec:SI [(match_dup 0) (match_dup 3) (match_dup 2)] UNSPEC_PIC_BASE))] "operands[3] = TARGET_THUMB ? GEN_INT (4) : GEN_INT (8);" - [(set_attr "type" "load1,load1,load1") + [(set_attr "type" "load_4,load_4,load_4") (set_attr "pool_range" "4096,4094,1022") (set_attr "neg_pool_range" "4084,0,0") (set_attr "arch" "a,t2,t1") @@ -6302,7 +6302,7 @@ (unspec:SI [(match_operand:SI 1 "" "mX")] UNSPEC_PIC_SYM))] "TARGET_32BIT && flag_pic" "ldr%?\\t%0, %1" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set (attr "pool_range") (if_then_else (eq_attr "is_thumb" "no") (const_int 4096) @@ -6318,7 +6318,7 @@ (unspec:SI [(match_operand:SI 1 "" "mX")] UNSPEC_PIC_SYM))] "TARGET_THUMB1 && flag_pic" "ldr\\t%0, %1" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set (attr "pool_range") (const_int 1018))] ) @@ -6367,7 +6367,7 @@ return \"ldr%?\\t%0, [%|pc, %1]\t\t@ tls_load_dot_plus_eight\"; " [(set_attr "predicable" "yes") - (set_attr "type" "load1")] + (set_attr "type" "load_4")] ) ;; PIC references to local variables can generate pic_add_dot_plus_eight @@ -6398,7 +6398,7 @@ UNSPEC_PIC_OFFSET))))] "TARGET_VXWORKS_RTP && TARGET_ARM && flag_pic" "ldr%?\\t%0, [%1,%2]" - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) (define_expand "builtin_setjmp_receiver" @@ -6814,8 +6814,8 @@ (const_string "mov_reg")) (const_string "mvn_imm") (const_string "mov_imm") - (const_string "store1") - (const_string "load1")])] + (const_string "store_4") + (const_string "load_4")])] ) (define_insn "*movhi_bytes" @@ -6949,7 +6949,7 @@ strb%?\\t%1, %0 ldrb%?\\t%0, %1 strb%?\\t%1, %0" - [(set_attr "type" "mov_reg,mov_reg,mov_imm,mov_imm,mvn_imm,load1,store1,load1,store1") + [(set_attr "type" "mov_reg,mov_reg,mov_imm,mov_imm,mvn_imm,load_4,store_4,load_4,store_4") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,yes,no,yes,no,no,no,no,no") (set_attr "arch" "t2,any,any,t2,any,t2,t2,any,any") @@ -7016,7 +7016,7 @@ } " [(set_attr "conds" "unconditional") - (set_attr "type" "load1,store1,mov_reg,multiple") + (set_attr "type" "load_4,store_4,mov_reg,multiple") (set_attr "length" "4,4,4,8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")] @@ -7073,7 +7073,7 @@ str%?\\t%1, %0\\t%@ float" [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") - (set_attr "type" "mov_reg,load1,store1") + (set_attr "type" "mov_reg,load_4,store_4") (set_attr "arm_pool_range" "*,4096,*") (set_attr "thumb2_pool_range" "*,4094,*") (set_attr "arm_neg_pool_range" "*,4084,*") @@ -7162,7 +7162,7 @@ } " [(set_attr "length" "8,12,16,8,8") - (set_attr "type" "multiple,multiple,multiple,load2,store2") + (set_attr "type" "multiple,multiple,multiple,load_8,store_8") (set_attr "arm_pool_range" "*,*,*,1020,*") (set_attr "thumb2_pool_range" "*,*,*,1018,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") @@ -8489,7 +8489,7 @@ } return output_return_instruction (const_true_rtx, true, false, false); }" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set_attr "length" "12") (set_attr "predicable" "yes")] ) @@ -8513,7 +8513,7 @@ }" [(set_attr "conds" "use") (set_attr "length" "12") - (set_attr "type" "load1")] + (set_attr "type" "load_4")] ) (define_insn "*cond_return_inverted" @@ -8535,7 +8535,7 @@ }" [(set_attr "conds" "use") (set_attr "length" "12") - (set_attr "type" "load1")] + (set_attr "type" "load_4")] ) (define_insn "*arm_simple_return" @@ -8718,7 +8718,7 @@ (unspec:SI [(const_int 0)] UNSPEC_PROBE_STACK))] "TARGET_32BIT" "str%?\\tr0, %0" - [(set_attr "type" "store1") + [(set_attr "type" "store_4") (set_attr "predicable" "yes")] ) @@ -8828,7 +8828,7 @@ (match_operand:SI 0 "memory_operand" "m"))] "TARGET_ARM" "ldr%?\\t%|pc, %0\\t%@ indirect memory jump" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set_attr "pool_range" "4096") (set_attr "neg_pool_range" "4084") (set_attr "predicable" "yes")] @@ -10739,7 +10739,7 @@ }" [(set_attr "length" "12") (set_attr "predicable" "yes") - (set_attr "type" "load1")] + (set_attr "type" "load_4")] ) ; This pattern is never tried by combine, so do it as a peephole @@ -11086,7 +11086,7 @@ return \"\"; }" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set (attr "length") (symbol_ref "arm_attr_length_push_multi (operands[2], operands[1])"))] ) @@ -11122,7 +11122,7 @@ return \"\"; } " - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes") (set (attr "length") (symbol_ref "arm_attr_length_pop_multi (operands, @@ -11155,7 +11155,7 @@ return \"\"; } " - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes") (set (attr "length") (symbol_ref "arm_attr_length_pop_multi (operands, /*return_pc=*/true, @@ -11178,7 +11178,7 @@ return \"\"; } " - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes") (set (attr "length") (symbol_ref "arm_attr_length_pop_multi (operands, /*return_pc=*/true, @@ -11192,7 +11192,7 @@ (mem:SI (post_inc:SI (match_operand:SI 0 "s_register_operand" "+rk"))))] "TARGET_32BIT && (reload_in_progress || reload_completed)" "ldr%?\t%|pc, [%0], #4" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set_attr "predicable" "yes")] ) ;; Pop for floating point registers (as used in epilogue RTL) @@ -11225,7 +11225,7 @@ return \"\"; } " - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "conds" "unconditional") (set_attr "predicable" "no")] ) @@ -11407,7 +11407,7 @@ (match_operand:SI 2 "" ""))] "TARGET_32BIT && arm_arch5e" "pld\\t%a0" - [(set_attr "type" "load1")] + [(set_attr "type" "load_4")] ) ;; General predication pattern @@ -11794,7 +11794,7 @@ operands[1], INTVAL (operands[2]), false, true))" "ldrd%?\t%0, %3, [%1, %2]" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -11808,7 +11808,7 @@ && (operands_ok_ldrd_strd (operands[0], operands[2], operands[1], 0, false, true))" "ldrd%?\t%0, %2, [%1]" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -11822,7 +11822,7 @@ && (operands_ok_ldrd_strd (operands[0], operands[2], operands[1], -4, false, true))" "ldrd%?\t%0, %2, [%1, #-4]" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -11839,7 +11839,7 @@ operands[0], INTVAL (operands[1]), false, false))" "strd%?\t%2, %4, [%0, %1]" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -11853,7 +11853,7 @@ && (operands_ok_ldrd_strd (operands[1], operands[2], operands[0], 0, false, false))" "strd%?\t%1, %2, [%0]" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -11867,7 +11867,7 @@ && (operands_ok_ldrd_strd (operands[1], operands[2], operands[0], -4, false, false))" "strd%?\t%1, %2, [%0, #-4]" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) diff --git a/gcc/config/arm/arm1020e.md b/gcc/config/arm/arm1020e.md index bae76e5..d91241f 100644 --- a/gcc/config/arm/arm1020e.md +++ b/gcc/config/arm/arm1020e.md @@ -176,12 +176,12 @@ (define_insn_reservation "1020load1_op" 2 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "load_byte,load1")) + (eq_attr "type" "load_byte,load_4")) "1020a_e+1020l_e,1020l_m,1020l_w") (define_insn_reservation "1020store1_op" 0 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "1020a_e+1020l_e,1020l_m,1020l_w") ;; A load's result can be stored by an immediately following store @@ -211,22 +211,22 @@ (define_insn_reservation "1020load2_op" 2 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "1020a_e+1020l_e,1020l_m,1020l_w") (define_insn_reservation "1020store2_op" 0 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "1020a_e+1020l_e,1020l_m,1020l_w") (define_insn_reservation "1020load34_op" 3 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "1020a_e+1020l_e,1020l_e+1020l_m,1020l_m,1020l_w") (define_insn_reservation "1020store34_op" 0 (and (eq_attr "tune" "arm1020e,arm1022e") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "1020a_e+1020l_e,1020l_e+1020l_m,1020l_m,1020l_w") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/arm1026ejs.md b/gcc/config/arm/arm1026ejs.md index 2fe6248..951c2a4 100644 --- a/gcc/config/arm/arm1026ejs.md +++ b/gcc/config/arm/arm1026ejs.md @@ -176,12 +176,12 @@ (define_insn_reservation "load1_op" 2 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "load_byte,load1")) + (eq_attr "type" "load_byte,load_4")) "a_e+l_e,l_m,a_w+l_w") (define_insn_reservation "store1_op" 0 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "a_e+l_e,l_m,a_w+l_w") ;; A load's result can be stored by an immediately following store @@ -206,22 +206,22 @@ (define_insn_reservation "load2_op" 2 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "a_e+l_e,l_m,a_w+l_w") (define_insn_reservation "store2_op" 0 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "a_e+l_e,l_m,a_w+l_w") (define_insn_reservation "load34_op" 3 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "a_e+l_e,a_e+l_e+l_m,a_e+l_m,a_w+l_w") (define_insn_reservation "store34_op" 0 (and (eq_attr "tune" "arm1026ejs") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "a_e+l_e,a_e+l_e+l_m,a_e+l_m,a_w+l_w") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/arm1136jfs.md b/gcc/config/arm/arm1136jfs.md index d086e83..e434c36 100644 --- a/gcc/config/arm/arm1136jfs.md +++ b/gcc/config/arm/arm1136jfs.md @@ -294,7 +294,7 @@ (define_insn_reservation "11_load1" 3 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "load1")) + (eq_attr "type" "load_4")) "l_a+e_1,l_dc1,l_dc2,l_wb") ;; Load byte results are not available until the writeback stage, where @@ -307,7 +307,7 @@ (define_insn_reservation "11_store1" 0 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "l_a+e_1,l_dc1,l_dc2,l_wb") ;; Load/store double words into adjacent registers. The timing and @@ -315,12 +315,12 @@ ;; aligned. This model assumes that it is. (define_insn_reservation "11_load2" 3 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "l_a+e_1,l_dc1,l_dc2,l_wb") (define_insn_reservation "11_store2" 0 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "l_a+e_1,l_dc1,l_dc2,l_wb") ;; Load/store multiple registers. Two registers are stored per cycle. @@ -328,12 +328,12 @@ ;; optimistically schedule a low latency. (define_insn_reservation "11_load34" 4 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "l_a+e_1,l_dc1*2,l_dc2,l_wb") (define_insn_reservation "11_store34" 0 (and (eq_attr "tune" "arm1136js,arm1136jfs") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "l_a+e_1,l_dc1*2,l_dc2,l_wb") ;; A store can start immediately after an alu op, if that alu op does diff --git a/gcc/config/arm/arm926ejs.md b/gcc/config/arm/arm926ejs.md index 61e9379..cc5dbee 100644 --- a/gcc/config/arm/arm926ejs.md +++ b/gcc/config/arm/arm926ejs.md @@ -133,43 +133,43 @@ ;; most common and (b) the pessimistic assumption will lead to fewer stalls. (define_insn_reservation "9_load1_op" 3 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "load1,load_byte")) + (eq_attr "type" "load_4,load_byte")) "e*2,m,w") (define_insn_reservation "9_store1_op" 0 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "e,m,w") ;; multiple word loads and stores (define_insn_reservation "9_load2_op" 3 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "e,m*2,w") (define_insn_reservation "9_load3_op" 4 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "e,m*3,w") (define_insn_reservation "9_load4_op" 5 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "e,m*4,w") (define_insn_reservation "9_store2_op" 0 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "e,m*2,w") (define_insn_reservation "9_store3_op" 0 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "e,m*3,w") (define_insn_reservation "9_store4_op" 0 (and (eq_attr "tune" "arm926ejs") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "e,m*4,w") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/cortex-a15.md b/gcc/config/arm/cortex-a15.md index c4853c7..78b5e3a 100644 --- a/gcc/config/arm/cortex-a15.md +++ b/gcc/config/arm/cortex-a15.md @@ -139,25 +139,25 @@ ;; Loads of up to two words. (define_insn_reservation "cortex_a15_load1" 4 (and (eq_attr "tune" "cortexa15") - (eq_attr "type" "load_byte,load1,load2")) + (eq_attr "type" "load_byte,load_4,load_8")) "ca15_issue1,ca15_ls,ca15_ldr,nothing") ;; Loads of three or four words. (define_insn_reservation "cortex_a15_load3" 5 (and (eq_attr "tune" "cortexa15") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "ca15_issue2,ca15_ls1+ca15_ls2,ca15_ldr,ca15_ldr,nothing") ;; Stores of up to two words. (define_insn_reservation "cortex_a15_store1" 0 (and (eq_attr "tune" "cortexa15") - (eq_attr "type" "store1,store2")) + (eq_attr "type" "store_4,store_8")) "ca15_issue1,ca15_ls,ca15_str") ;; Stores of three or four words. (define_insn_reservation "cortex_a15_store3" 0 (and (eq_attr "tune" "cortexa15") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "ca15_issue2,ca15_ls1+ca15_ls2,ca15_str,ca15_str") ;; We include Neon.md here to ensure that the branch can block the Neon units. diff --git a/gcc/config/arm/cortex-a17.md b/gcc/config/arm/cortex-a17.md index 1190e33..d83cca1 100644 --- a/gcc/config/arm/cortex-a17.md +++ b/gcc/config/arm/cortex-a17.md @@ -127,37 +127,37 @@ ;; Loads of up to two words. (define_insn_reservation "cortex_a17_load1" 4 (and (eq_attr "tune" "cortexa17") - (eq_attr "type" "load_byte,load1,load2")) + (eq_attr "type" "load_byte,load_4,load_8")) "ca17_ls0|ca17_ls1") ;; Loads of three words. (define_insn_reservation "cortex_a17_load3" 4 (and (eq_attr "tune" "cortexa17") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "ca17_ls0+ca17_ls1") ;; Loads of four words. (define_insn_reservation "cortex_a17_load4" 4 (and (eq_attr "tune" "cortexa17") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "ca17_ls0+ca17_ls1") ;; Stores of up to two words. (define_insn_reservation "cortex_a17_store1" 0 (and (eq_attr "tune" "cortexa17") - (eq_attr "type" "store1,store2")) + (eq_attr "type" "store_4,store_8")) "ca17_ls0|ca17_ls1") ;; Stores of three words (define_insn_reservation "cortex_a17_store3" 0 (and (eq_attr "tune" "cortexa17") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "ca17_ls0+ca17_ls1") ;; Stores of four words. (define_insn_reservation "cortex_a17_store4" 0 (and (eq_attr "tune" "cortexa17") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "ca17_ls0+ca17_ls1") (define_insn_reservation "cortex_a17_call" 0 diff --git a/gcc/config/arm/cortex-a5.md b/gcc/config/arm/cortex-a5.md index da54601..a7a521f 100644 --- a/gcc/config/arm/cortex-a5.md +++ b/gcc/config/arm/cortex-a5.md @@ -106,45 +106,45 @@ (define_insn_reservation "cortex_a5_load1" 2 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "load_byte,load1")) + (eq_attr "type" "load_byte,load_4")) "cortex_a5_ex1") (define_insn_reservation "cortex_a5_store1" 0 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "cortex_a5_ex1") (define_insn_reservation "cortex_a5_load2" 3 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") (define_insn_reservation "cortex_a5_store2" 0 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") (define_insn_reservation "cortex_a5_load3" 4 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ cortex_a5_ex1") (define_insn_reservation "cortex_a5_store3" 0 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ cortex_a5_ex1") (define_insn_reservation "cortex_a5_load4" 5 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") (define_insn_reservation "cortex_a5_store4" 0 (and (eq_attr "tune" "cortexa5") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") diff --git a/gcc/config/arm/cortex-a53.md b/gcc/config/arm/cortex-a53.md index 6734e37..11cba68 100644 --- a/gcc/config/arm/cortex-a53.md +++ b/gcc/config/arm/cortex-a53.md @@ -141,13 +141,13 @@ (define_insn_reservation "cortex_a53_load1" 4 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "load_byte,load1,load_acq")) + (eq_attr "type" "load_byte,load_4,load_acq")) "cortex_a53_slot_any+cortex_a53_ls_agen, cortex_a53_load") (define_insn_reservation "cortex_a53_store1" 2 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "store1,store_rel")) + (eq_attr "type" "store_4,store_rel")) "cortex_a53_slot_any+cortex_a53_ls_agen, cortex_a53_store") @@ -155,14 +155,14 @@ (define_insn_reservation "cortex_a53_load2" 4 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "cortex_a53_single_issue+cortex_a53_ls_agen, cortex_a53_load+cortex_a53_slot0, cortex_a53_load") (define_insn_reservation "cortex_a53_store2" 2 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "cortex_a53_slot_any+cortex_a53_ls_agen, cortex_a53_store") @@ -170,14 +170,14 @@ (define_insn_reservation "cortex_a53_load3plus" 6 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "cortex_a53_single_issue+cortex_a53_ls_agen, cortex_a53_load+cortex_a53_slot0, cortex_a53_load") (define_insn_reservation "cortex_a53_store3plus" 2 (and (eq_attr "tune" "cortexa53") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "cortex_a53_slot_any+cortex_a53_ls_agen, cortex_a53_store+cortex_a53_slot0, cortex_a53_store") diff --git a/gcc/config/arm/cortex-a57.md b/gcc/config/arm/cortex-a57.md index ebf4a49..d86beea 100644 --- a/gcc/config/arm/cortex-a57.md +++ b/gcc/config/arm/cortex-a57.md @@ -357,25 +357,25 @@ ;; Loads of up to two words. (define_insn_reservation "cortex_a57_load1" 5 (and (eq_attr "tune" "cortexa57") - (eq_attr "type" "load_byte,load1,load2")) + (eq_attr "type" "load_byte,load_4,load_8")) "ca57_load_model") ;; Loads of three or four words. (define_insn_reservation "cortex_a57_load3" 5 (and (eq_attr "tune" "cortexa57") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "ca57_ls_issue*2,ca57_load_model") ;; Stores of up to two words. (define_insn_reservation "cortex_a57_store1" 0 (and (eq_attr "tune" "cortexa57") - (eq_attr "type" "store1,store2")) + (eq_attr "type" "store_4,store_8")) "ca57_store_model") ;; Stores of three or four words. (define_insn_reservation "cortex_a57_store3" 0 (and (eq_attr "tune" "cortexa57") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "ca57_ls_issue*2,ca57_store_model") ;; Advanced SIMD Unit - Integer Arithmetic Instructions. diff --git a/gcc/config/arm/cortex-a7.md b/gcc/config/arm/cortex-a7.md index acb9f1a..0dbe0a7 100644 --- a/gcc/config/arm/cortex-a7.md +++ b/gcc/config/arm/cortex-a7.md @@ -196,42 +196,42 @@ (define_insn_reservation "cortex_a7_load1" 2 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "load_byte,load1")) + (eq_attr "type" "load_byte,load_4")) "cortex_a7_ex1") (define_insn_reservation "cortex_a7_store1" 0 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "cortex_a7_ex1") (define_insn_reservation "cortex_a7_load2" 2 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "cortex_a7_both") (define_insn_reservation "cortex_a7_store2" 0 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "cortex_a7_both") (define_insn_reservation "cortex_a7_load3" 3 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "cortex_a7_both, cortex_a7_ex1") (define_insn_reservation "cortex_a7_store3" 0 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "cortex_a7_both, cortex_a7_ex1") (define_insn_reservation "cortex_a7_load4" 3 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "cortex_a7_both, cortex_a7_both") (define_insn_reservation "cortex_a7_store4" 0 (and (eq_attr "tune" "cortexa7") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "cortex_a7_both, cortex_a7_both") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/cortex-a8.md b/gcc/config/arm/cortex-a8.md index 1fabb3c..ceec5be 100644 --- a/gcc/config/arm/cortex-a8.md +++ b/gcc/config/arm/cortex-a8.md @@ -198,7 +198,7 @@ ;; We assume 64-bit alignment for doubleword loads. (define_insn_reservation "cortex_a8_load1_2" 3 (and (eq_attr "tune" "cortexa8") - (eq_attr "type" "load1,load2,load_byte")) + (eq_attr "type" "load_4,load_8,load_byte")) "cortex_a8_load_store_1") (define_bypass 2 "cortex_a8_load1_2" @@ -221,7 +221,7 @@ ;; issued as two micro-ops. (define_insn_reservation "cortex_a8_load3_4" 5 (and (eq_attr "tune" "cortexa8") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "cortex_a8_load_store_2") (define_bypass 4 "cortex_a8_load3_4" @@ -238,12 +238,12 @@ (define_insn_reservation "cortex_a8_store1_2" 0 (and (eq_attr "tune" "cortexa8") - (eq_attr "type" "store1,store2")) + (eq_attr "type" "store_4,store_8")) "cortex_a8_load_store_1") (define_insn_reservation "cortex_a8_store3_4" 0 (and (eq_attr "tune" "cortexa8") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "cortex_a8_load_store_2") ;; An ALU instruction acting as a producer for a store instruction diff --git a/gcc/config/arm/cortex-a9.md b/gcc/config/arm/cortex-a9.md index 592a2bf..1140e18 100644 --- a/gcc/config/arm/cortex-a9.md +++ b/gcc/config/arm/cortex-a9.md @@ -107,7 +107,7 @@ cortex_a9_p1_e2 + cortex_a9_p0_e1 + cortex_a9_p1_e1") (define_insn_reservation "cortex_a9_load1_2" 4 (and (eq_attr "tune" "cortexa9") - (eq_attr "type" "load1, load2, load_byte, f_loads, f_loadd")) + (eq_attr "type" "load_4, load_8, load_byte, f_loads, f_loadd")) "cortex_a9_ls") ;; Loads multiples and store multiples can't be issued for 2 cycles in a @@ -116,12 +116,12 @@ cortex_a9_p1_e2 + cortex_a9_p0_e1 + cortex_a9_p1_e1") (define_insn_reservation "cortex_a9_load3_4" 5 (and (eq_attr "tune" "cortexa9") - (eq_attr "type" "load3, load4")) + (eq_attr "type" "load_12, load_16")) "cortex_a9_ls, cortex_a9_ls") (define_insn_reservation "cortex_a9_store1_2" 0 (and (eq_attr "tune" "cortexa9") - (eq_attr "type" "store1, store2, f_stores, f_stored")) + (eq_attr "type" "store_4, store_8, f_stores, f_stored")) "cortex_a9_ls") ;; Almost all our store multiples use an auto-increment @@ -130,7 +130,7 @@ cortex_a9_p1_e2 + cortex_a9_p0_e1 + cortex_a9_p1_e1") (define_insn_reservation "cortex_a9_store3_4" 0 (and (eq_attr "tune" "cortexa9") - (eq_attr "type" "store3, store4")) + (eq_attr "type" "store_12, store_16")) "cortex_a9_ls+(cortex_a9_p0_default | cortex_a9_p1_default), cortex_a9_ls") ;; We get 16*16 multiply / mac results in 3 cycles. diff --git a/gcc/config/arm/cortex-m4.md b/gcc/config/arm/cortex-m4.md index 9084729..123a2a0 100644 --- a/gcc/config/arm/cortex-m4.md +++ b/gcc/config/arm/cortex-m4.md @@ -50,51 +50,51 @@ ;; Byte, half-word and word load is two cycles. (define_insn_reservation "cortex_m4_load1" 2 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "load_byte,load1")) + (eq_attr "type" "load_byte,load_4")) "cortex_m4_a, cortex_m4_b") ;; str rx, [ry, #imm] is always one cycle. (define_insn_reservation "cortex_m4_store1_1" 1 (and (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) (match_test "arm_address_offset_is_imm (insn)")) "cortex_m4_a") ;; Other byte, half-word and word load is two cycles. (define_insn_reservation "cortex_m4_store1_2" 2 (and (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) (not (match_test "arm_address_offset_is_imm (insn)"))) "cortex_m4_a*2") (define_insn_reservation "cortex_m4_load2" 3 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "cortex_m4_ex*3") (define_insn_reservation "cortex_m4_store2" 3 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "cortex_m4_ex*3") (define_insn_reservation "cortex_m4_load3" 4 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "cortex_m4_ex*4") (define_insn_reservation "cortex_m4_store3" 4 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "cortex_m4_ex*4") (define_insn_reservation "cortex_m4_load4" 5 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "cortex_m4_ex*5") (define_insn_reservation "cortex_m4_store4" 5 (and (eq_attr "tune" "cortexm4") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "cortex_m4_ex*5") (define_bypass 1 "cortex_m4_load1" diff --git a/gcc/config/arm/cortex-m7.md b/gcc/config/arm/cortex-m7.md index 218b26f..e07d7cd 100644 --- a/gcc/config/arm/cortex-m7.md +++ b/gcc/config/arm/cortex-m7.md @@ -93,33 +93,33 @@ ;; The load instructions. (define_insn_reservation "cortex_m7_load1" 2 (and (eq_attr "tune" "cortexm7") - (eq_attr "type" "load_byte, load1")) + (eq_attr "type" "load_byte, load_4")) "cm7_i0|cm7_i1,cm7_lsu") (define_insn_reservation "cortex_m7_load2" 2 (and (eq_attr "tune" "cortexm7") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "cm7_all_units") (define_insn_reservation "cortex_m7_loadm" 2 (and (eq_attr "tune" "cortexm7") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "cm7_all_units*2") ;; The store instructions. (define_insn_reservation "cortex_m7_store1" 0 (and (eq_attr "tune" "cortexm7") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "cm7_i0|cm7_i1,cm7_lsu+cm7_wb") (define_insn_reservation "cortex_m7_store2" 0 (and (eq_attr "tune" "cortexm7") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "cm7_all_units") (define_insn_reservation "cortex_m7_storem" 0 (and (eq_attr "tune" "cortexm7") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "cm7_all_units*2") ;; The FPU instructions. diff --git a/gcc/config/arm/cortex-r4.md b/gcc/config/arm/cortex-r4.md index 29ddcc1..bc65689 100644 --- a/gcc/config/arm/cortex-r4.md +++ b/gcc/config/arm/cortex-r4.md @@ -234,12 +234,12 @@ (define_insn_reservation "cortex_r4_load_1_2" 3 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "load1,load2")) + (eq_attr "type" "load_4,load_8")) "cortex_r4_load_store") (define_insn_reservation "cortex_r4_load_3_4" 4 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "load3,load4")) + (eq_attr "type" "load_12,load_16")) "cortex_r4_load_store_2") ;; If a producing load is followed by an instruction consuming only @@ -289,11 +289,11 @@ (define_insn_reservation "cortex_r4_store_1_2" 0 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "store1,store2")) + (eq_attr "type" "store_4,store_8")) "cortex_r4_load_store") (define_insn_reservation "cortex_r4_store_3_4" 0 (and (eq_attr "tune_cortexr4" "yes") - (eq_attr "type" "store3,store4")) + (eq_attr "type" "store_12,store_16")) "cortex_r4_load_store_2") diff --git a/gcc/config/arm/exynos-m1.md b/gcc/config/arm/exynos-m1.md index b54d4c8..098a51f 100644 --- a/gcc/config/arm/exynos-m1.md +++ b/gcc/config/arm/exynos-m1.md @@ -432,25 +432,25 @@ ;; Loads of up to 2 words. (define_insn_reservation "exynos_m1_load" 4 (and (eq_attr "tune" "exynosm1") - (eq_attr "type" "load_byte, load1, load2")) + (eq_attr "type" "load_byte, load_4, load_8")) "em1_ld") ;; Loads of 3 or 4 words. (define_insn_reservation "exynos_m1_loadm" 6 (and (eq_attr "tune" "exynosm1") - (eq_attr "type" "load3, load4")) + (eq_attr "type" "load_12, load_16")) "(em1_ld * 3)") ;; Stores of up to 2 words. (define_insn_reservation "exynos_m1_store" 1 (and (eq_attr "tune" "exynosm1") - (eq_attr "type" "store1, store2")) + (eq_attr "type" "store_4, store_8")) "em1_st") ;; Stores of 3 or 4 words. (define_insn_reservation "exynos_m1_storem" 3 (and (eq_attr "tune" "exynosm1") - (eq_attr "type" "store3, store4")) + (eq_attr "type" "store_12, store_16")) "(em1_st * 3)") ;; Advanced SIMD Unit diff --git a/gcc/config/arm/fa526.md b/gcc/config/arm/fa526.md index 86f78e7..1cf63d6 100644 --- a/gcc/config/arm/fa526.md +++ b/gcc/config/arm/fa526.md @@ -108,42 +108,42 @@ (define_insn_reservation "526_load1_op" 3 (and (eq_attr "tune" "fa526") - (eq_attr "type" "load1,load_byte")) + (eq_attr "type" "load_4,load_byte")) "fa526_core") (define_insn_reservation "526_load2_op" 4 (and (eq_attr "tune" "fa526") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "fa526_core*2") (define_insn_reservation "526_load3_op" 5 (and (eq_attr "tune" "fa526") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "fa526_core*3") (define_insn_reservation "526_load4_op" 6 (and (eq_attr "tune" "fa526") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "fa526_core*4") (define_insn_reservation "526_store1_op" 0 (and (eq_attr "tune" "fa526") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "fa526_core") (define_insn_reservation "526_store2_op" 1 (and (eq_attr "tune" "fa526") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "fa526_core*2") (define_insn_reservation "526_store3_op" 2 (and (eq_attr "tune" "fa526") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "fa526_core*3") (define_insn_reservation "526_store4_op" 3 (and (eq_attr "tune" "fa526") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "fa526_core*4") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/fa606te.md b/gcc/config/arm/fa606te.md index 3fadbe1..d4b3e25 100644 --- a/gcc/config/arm/fa606te.md +++ b/gcc/config/arm/fa606te.md @@ -111,48 +111,48 @@ (define_insn_reservation "606te_load1_op" 2 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "load1,load_byte")) + (eq_attr "type" "load_4,load_byte")) "fa606te_core") (define_insn_reservation "606te_load2_op" 3 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "fa606te_core*2") (define_insn_reservation "606te_load3_op" 4 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "load3")) + (eq_attr "type" "load_12")) "fa606te_core*3") (define_insn_reservation "606te_load4_op" 5 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "fa606te_core*4") (define_insn_reservation "606te_store1_op" 0 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "fa606te_core") (define_insn_reservation "606te_store2_op" 1 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "fa606te_core*2") (define_insn_reservation "606te_store3_op" 2 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "store3")) + (eq_attr "type" "store_12")) "fa606te_core*3") (define_insn_reservation "606te_store4_op" 3 (and (eq_attr "tune" "fa606te") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "fa606te_core*4") ;;(define_insn_reservation "606te_ldm_op" 9 ;; (and (eq_attr "tune" "fa606te") -;; (eq_attr "type" "load2,load3,load4,store2,store3,store4")) +;; (eq_attr "type" "load_8,load_12,load_16,store_8,store_12,store_16")) ;; "fa606te_core*7") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/fa626te.md b/gcc/config/arm/fa626te.md index 5fa895a..ca6096d 100644 --- a/gcc/config/arm/fa626te.md +++ b/gcc/config/arm/fa626te.md @@ -123,32 +123,32 @@ (define_insn_reservation "626te_load1_op" 3 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "load1,load_byte")) + (eq_attr "type" "load_4,load_byte")) "fa626te_core") (define_insn_reservation "626te_load2_op" 4 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "load2,load3")) + (eq_attr "type" "load_8,load_12")) "fa626te_core*2") (define_insn_reservation "626te_load3_op" 5 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "fa626te_core*3") (define_insn_reservation "626te_store1_op" 0 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "fa626te_core") (define_insn_reservation "626te_store2_op" 1 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "store2,store3")) + (eq_attr "type" "store_8,store_12")) "fa626te_core*2") (define_insn_reservation "626te_store3_op" 2 (and (eq_attr "tune" "fa626,fa626te") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "fa626te_core*3") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/gcc/config/arm/fa726te.md b/gcc/config/arm/fa726te.md index 7437280..b06a6f5 100644 --- a/gcc/config/arm/fa726te.md +++ b/gcc/config/arm/fa726te.md @@ -144,13 +144,13 @@ (define_insn_reservation "726te_load1_op" 3 (and (eq_attr "tune" "fa726te") - (eq_attr "type" "load1,load_byte")) + (eq_attr "type" "load_4,load_byte")) "(fa726te_issue+fa726te_lsu_pipe_e+fa726te_lsu_pipe_w)\ | (fa726te_issue+fa726te_lsu1_pipe_e+fa726te_lsu1_pipe_w,fa726te_blockage)") (define_insn_reservation "726te_store1_op" 1 (and (eq_attr "tune" "fa726te") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "fa726te_blockage*2") ;; Load/Store Multiple blocks all pipelines in EX stages until WB. @@ -161,22 +161,22 @@ ;; the pipe 1 is stalled. (define_insn_reservation "726te_ldm2_op" 4 (and (eq_attr "tune" "fa726te") - (eq_attr "type" "load2,load3")) + (eq_attr "type" "load_8,load_12")) "fa726te_blockage*4") (define_insn_reservation "726te_ldm3_op" 5 (and (eq_attr "tune" "fa726te") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "fa726te_blockage*5") (define_insn_reservation "726te_stm2_op" 2 (and (eq_attr "tune" "fa726te") - (eq_attr "type" "store2,store3")) + (eq_attr "type" "store_8,store_12")) "fa726te_blockage*3") (define_insn_reservation "726te_stm3_op" 3 (and (eq_attr "tune" "fa726te") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "fa726te_blockage*4") (define_bypass 1 "726te_load1_op,726te_ldm2_op,726te_ldm3_op" "726te_store1_op,\ diff --git a/gcc/config/arm/fmp626.md b/gcc/config/arm/fmp626.md index 4225a46..2833920 100644 --- a/gcc/config/arm/fmp626.md +++ b/gcc/config/arm/fmp626.md @@ -115,32 +115,32 @@ (define_insn_reservation "mp626_load1_op" 5 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "load1,load_byte")) + (eq_attr "type" "load_4,load_byte")) "fmp626_core") (define_insn_reservation "mp626_load2_op" 6 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "load2,load3")) + (eq_attr "type" "load_8,load_12")) "fmp626_core*2") (define_insn_reservation "mp626_load3_op" 7 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "load4")) + (eq_attr "type" "load_16")) "fmp626_core*3") (define_insn_reservation "mp626_store1_op" 0 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "fmp626_core") (define_insn_reservation "mp626_store2_op" 1 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "store2,store3")) + (eq_attr "type" "store_8,store_12")) "fmp626_core*2") (define_insn_reservation "mp626_store3_op" 2 (and (eq_attr "tune" "fmp626") - (eq_attr "type" "store4")) + (eq_attr "type" "store_16")) "fmp626_core*3") (define_bypass 1 "mp626_load1_op,mp626_load2_op,mp626_load3_op" diff --git a/gcc/config/arm/iwmmxt.md b/gcc/config/arm/iwmmxt.md index e25b819..ab5ae65 100644 --- a/gcc/config/arm/iwmmxt.md +++ b/gcc/config/arm/iwmmxt.md @@ -155,7 +155,7 @@ (const_int 8) (const_int 4))] (const_int 4))) - (set_attr "type" "*,*,*,load2,store2,*,*,*,*,*,f_mcrr,f_mrrc,\ + (set_attr "type" "*,*,*,load_8,store_8,*,*,*,*,*,f_mcrr,f_mrrc,\ ffarithd,f_loadd,f_stored") (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,*,*,*,*,*,*,1020,*") (set_attr "arm_neg_pool_range" "*,*,*,1008,*,*,*,*,*,*,*,*,*,1008,*")] @@ -188,7 +188,7 @@ default: gcc_unreachable (); }" - [(set_attr "type" "*,*,*,*,load1,store1,*,*,*,*,f_mcr,f_mrc,\ + [(set_attr "type" "*,*,*,*,load_4,store_4,*,*,*,*,f_mcr,f_mrc,\ fmov,f_loads,f_stores") (set_attr "length" "*,*,*,*,*, *,*,*, 16, *,*,*,*,*,*") (set_attr "pool_range" "*,*,*,*,4096, *,*,*,1024, *,*,*,*,1020,*") @@ -227,7 +227,7 @@ case 4: return \"tmcr%?\\t%0, %1\"; default: return \"tmrc%?\\t%0, %1\"; }" - [(set_attr "type" "*,*,load1,store1,*,*") + [(set_attr "type" "*,*,load_4,store_4,*,*") (set_attr "pool_range" "*,*,4096, *,*,*") (set_attr "neg_pool_range" "*,*,4084, *,*,*")] ) @@ -249,7 +249,7 @@ }" [(set_attr "predicable" "yes") (set_attr "length" "4, 4, 4,4,4,8, 8,8") - (set_attr "type" "wmmx_wmov,wmmx_wstr,wmmx_wldr,wmmx_tmrrc,wmmx_tmcrr,*,load1,store1") + (set_attr "type" "wmmx_wmov,wmmx_wstr,wmmx_wldr,wmmx_tmrrc,wmmx_tmcrr,*,load_4,store_4") (set_attr "pool_range" "*, *, 256,*,*,*, 256,*") (set_attr "neg_pool_range" "*, *, 244,*,*,*, 244,*")] ) diff --git a/gcc/config/arm/ldmstm.md b/gcc/config/arm/ldmstm.md index 303303e..01fbb55 100644 --- a/gcc/config/arm/ldmstm.md +++ b/gcc/config/arm/ldmstm.md @@ -36,7 +36,7 @@ (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "ldm%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -55,7 +55,7 @@ (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" "ldmia\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "load4")]) + [(set_attr "type" "load_16")]) (define_insn "*ldm4_ia_update" [(match_parallel 0 "load_multiple_operation" @@ -74,7 +74,7 @@ (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "ldmia%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -95,7 +95,7 @@ (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" "ldmia\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "load4")]) + [(set_attr "type" "load_16")]) (define_insn "*stm4_" [(match_parallel 0 "store_multiple_operation" @@ -109,7 +109,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -127,7 +127,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stmia%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -145,7 +145,7 @@ (match_operand:SI 4 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" "stmia\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "store4")]) + [(set_attr "type" "store_16")]) (define_insn "*ldm4_ib" [(match_parallel 0 "load_multiple_operation" @@ -163,7 +163,7 @@ (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldmib%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes")]) (define_insn "*ldm4_ib_update" @@ -184,7 +184,7 @@ (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "ldmib%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes")]) (define_insn "*stm4_ib" @@ -199,7 +199,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stmib%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes")]) (define_insn "*stm4_ib_update" @@ -216,7 +216,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stmib%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes")]) (define_insn "*ldm4_da" @@ -234,7 +234,7 @@ (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldmda%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes")]) (define_insn "*ldm4_da_update" @@ -254,7 +254,7 @@ (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "ldmda%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes")]) (define_insn "*stm4_da" @@ -269,7 +269,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stmda%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes")]) (define_insn "*stm4_da_update" @@ -286,7 +286,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stmda%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes")]) (define_insn "*ldm4_db" @@ -305,7 +305,7 @@ (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "ldmdb%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -327,7 +327,7 @@ (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "ldmdb%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "load4") + [(set_attr "type" "load_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -343,7 +343,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stmdb%?\t%5, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -361,7 +361,7 @@ (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stmdb%?\t%5!, {%1, %2, %3, %4}" - [(set_attr "type" "store4") + [(set_attr "type" "store_16") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -484,7 +484,7 @@ (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "ldm%?\t%4, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -500,7 +500,7 @@ (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" "ldmia\t%4, {%1, %2, %3}" - [(set_attr "type" "load3")]) + [(set_attr "type" "load_12")]) (define_insn "*ldm3_ia_update" [(match_parallel 0 "load_multiple_operation" @@ -516,7 +516,7 @@ (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "ldmia%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -534,7 +534,7 @@ (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" "ldmia\t%4!, {%1, %2, %3}" - [(set_attr "type" "load3")]) + [(set_attr "type" "load_12")]) (define_insn "*stm3_" [(match_parallel 0 "store_multiple_operation" @@ -546,7 +546,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%?\t%4, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -562,7 +562,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stmia%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -578,7 +578,7 @@ (match_operand:SI 3 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" "stmia\t%4!, {%1, %2, %3}" - [(set_attr "type" "store3")]) + [(set_attr "type" "store_12")]) (define_insn "*ldm3_ib" [(match_parallel 0 "load_multiple_operation" @@ -593,7 +593,7 @@ (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldmib%?\t%4, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes")]) (define_insn "*ldm3_ib_update" @@ -611,7 +611,7 @@ (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldmib%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes")]) (define_insn "*stm3_ib" @@ -624,7 +624,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stmib%?\t%4, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes")]) (define_insn "*stm3_ib_update" @@ -639,7 +639,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stmib%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes")]) (define_insn "*ldm3_da" @@ -654,7 +654,7 @@ (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldmda%?\t%4, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes")]) (define_insn "*ldm3_da_update" @@ -671,7 +671,7 @@ (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldmda%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes")]) (define_insn "*stm3_da" @@ -684,7 +684,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stmda%?\t%4, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes")]) (define_insn "*stm3_da_update" @@ -699,7 +699,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stmda%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes")]) (define_insn "*ldm3_db" @@ -715,7 +715,7 @@ (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "ldmdb%?\t%4, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -734,7 +734,7 @@ (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "ldmdb%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "load3") + [(set_attr "type" "load_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -748,7 +748,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stmdb%?\t%4, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -764,7 +764,7 @@ (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stmdb%?\t%4!, {%1, %2, %3}" - [(set_attr "type" "store3") + [(set_attr "type" "store_12") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -870,7 +870,7 @@ (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "ldm%?\t%3, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -883,7 +883,7 @@ (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2" "ldmia\t%3, {%1, %2}" - [(set_attr "type" "load2")]) + [(set_attr "type" "load_8")]) (define_insn "*ldm2_ia_update" [(match_parallel 0 "load_multiple_operation" @@ -896,7 +896,7 @@ (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "ldmia%?\t%3!, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -911,7 +911,7 @@ (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" "ldmia\t%3!, {%1, %2}" - [(set_attr "type" "load2")]) + [(set_attr "type" "load_8")]) (define_insn "*stm2_" [(match_parallel 0 "store_multiple_operation" @@ -921,7 +921,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stm%?\t%3, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -935,7 +935,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stmia%?\t%3!, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -949,7 +949,7 @@ (match_operand:SI 2 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" "stmia\t%3!, {%1, %2}" - [(set_attr "type" "store2")]) + [(set_attr "type" "store_8")]) (define_insn "*ldm2_ib" [(match_parallel 0 "load_multiple_operation" @@ -961,7 +961,7 @@ (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "ldmib%?\t%3, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes")]) (define_insn "*ldm2_ib_update" @@ -976,7 +976,7 @@ (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldmib%?\t%3!, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes")]) (define_insn "*stm2_ib" @@ -987,7 +987,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stmib%?\t%3, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes")]) (define_insn "*stm2_ib_update" @@ -1000,7 +1000,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stmib%?\t%3!, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes")]) (define_insn "*ldm2_da" @@ -1012,7 +1012,7 @@ (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "ldmda%?\t%3, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes")]) (define_insn "*ldm2_da_update" @@ -1026,7 +1026,7 @@ (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldmda%?\t%3!, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes")]) (define_insn "*stm2_da" @@ -1037,7 +1037,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stmda%?\t%3, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes")]) (define_insn "*stm2_da_update" @@ -1050,7 +1050,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stmda%?\t%3!, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes")]) (define_insn "*ldm2_db" @@ -1063,7 +1063,7 @@ (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "ldmdb%?\t%3, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -1079,7 +1079,7 @@ (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "ldmdb%?\t%3!, {%1, %2}" - [(set_attr "type" "load2") + [(set_attr "type" "load_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -1091,7 +1091,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stmdb%?\t%3, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) @@ -1105,7 +1105,7 @@ (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stmdb%?\t%3!, {%1, %2}" - [(set_attr "type" "store2") + [(set_attr "type" "store_8") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "no")]) diff --git a/gcc/config/arm/marvell-pj4.md b/gcc/config/arm/marvell-pj4.md index bed10f7..33e3432 100644 --- a/gcc/config/arm/marvell-pj4.md +++ b/gcc/config/arm/marvell-pj4.md @@ -138,31 +138,31 @@ (define_insn_reservation "pj4_ldr" 3 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "load_byte,load1")) + (eq_attr "type" "load_byte,load_4")) "pj4_is,pj4_alu1,nothing*2,pj4_cp") (define_insn_reservation "pj4_ldrd" 3 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "pj4_is,pj4_alu1,nothing*2,pj4_cpb") (define_insn_reservation "pj4_str" 1 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "pj4_is,pj4_alu1,nothing*2,pj4_cp") (define_insn_reservation "pj4_strd" 1 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "pj4_is,pj4_alu1,nothing*2,pj4_cpb") (define_insn_reservation "pj4_ldm" 4 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "load3,load4")) "pj4_isb,pj4_isb+pj4_alu1,pj4_alu1,nothing,pj4_cp,pj4_cp") + (eq_attr "type" "load_12,load_16")) "pj4_isb,pj4_isb+pj4_alu1,pj4_alu1,nothing,pj4_cp,pj4_cp") (define_insn_reservation "pj4_stm" 2 (and (eq_attr "tune" "marvell_pj4") - (eq_attr "type" "store3,store4")) "pj4_isb,pj4_isb+pj4_alu1,pj4_alu1,nothing,pj4_cp,pj4_cp") + (eq_attr "type" "store_12,store_16")) "pj4_isb,pj4_isb+pj4_alu1,pj4_alu1,nothing,pj4_cp,pj4_cp") ;; Loads forward at WR-stage to ALU pipes (define_bypass 2 "pj4_ldr,pj4_ldrd" "pj4_alu") diff --git a/gcc/config/arm/thumb1.md b/gcc/config/arm/thumb1.md index f162fc7..5d196a6 100644 --- a/gcc/config/arm/thumb1.md +++ b/gcc/config/arm/thumb1.md @@ -650,7 +650,7 @@ } }" [(set_attr "length" "4,4,6,6,2,2,6,4,4") - (set_attr "type" "multiple,multiple,multiple,multiple,load2,store2,load2,store2,multiple") + (set_attr "type" "multiple,multiple,multiple,multiple,load_8,store_8,load_8,store_8,multiple") (set_attr "arch" "t1,t1,t1,v8mb,t1,t1,t1,t1,t1") (set_attr "pool_range" "*,*,*,*,*,*,1018,*,*")] ) @@ -673,7 +673,7 @@ str\\t%1, %0 mov\\t%0, %1" [(set_attr "length" "2,2,4,4,4,2,2,2,2,2") - (set_attr "type" "mov_reg,mov_imm,mov_imm,multiple,multiple,load1,store1,load1,store1,mov_reg") + (set_attr "type" "mov_reg,mov_imm,mov_imm,multiple,multiple,load_4,store_4,load_4,store_4,mov_reg") (set_attr "pool_range" "*,*,*,*,*,*,*,1018,*,*") (set_attr "arch" "t1,t1,v8mb,t1,t1,t1,t1,t1,t1,t1") (set_attr "conds" "set,clob,nocond,*,*,nocond,nocond,nocond,nocond,nocond")]) @@ -789,7 +789,7 @@ return \"ldrh %0, %1\"; }" [(set_attr "length" "2,4,2,2,2,2,4") - (set_attr "type" "alus_imm,load1,store1,mov_reg,mov_reg,mov_imm,mov_imm") + (set_attr "type" "alus_imm,load_4,store_4,mov_reg,mov_reg,mov_imm,mov_imm") (set_attr "arch" "t1,t1,t1,t1,t1,t1,v8mb") (set_attr "conds" "clob,nocond,nocond,nocond,nocond,clob,nocond")]) @@ -824,7 +824,7 @@ mov\\t%0, %1 movs\\t%0, %1" [(set_attr "length" "2") - (set_attr "type" "alu_imm,load1,store1,mov_reg,mov_imm,mov_imm") + (set_attr "type" "alu_imm,load_4,store_4,mov_reg,mov_imm,mov_imm") (set_attr "pool_range" "*,32,*,*,*,*") (set_attr "conds" "clob,nocond,nocond,nocond,nocond,clob")]) @@ -860,7 +860,7 @@ } " [(set_attr "length" "2") - (set_attr "type" "mov_reg,load1,store1,mov_reg,mov_reg") + (set_attr "type" "mov_reg,load_4,store_4,mov_reg,mov_reg") (set_attr "pool_range" "*,1018,*,*,*") (set_attr "conds" "clob,nocond,nocond,nocond,nocond")]) ;;; ??? This should have alternatives for constants. @@ -879,7 +879,7 @@ mov\\t%0, %1 mov\\t%0, %1" [(set_attr "length" "2") - (set_attr "type" "alus_imm,load1,store1,load1,store1,mov_reg,mov_reg") + (set_attr "type" "alus_imm,load_4,store_4,load_4,store_4,mov_reg,mov_reg") (set_attr "pool_range" "*,*,*,1018,*,*,*") (set_attr "conds" "clob,nocond,nocond,nocond,nocond,nocond,nocond")] ) @@ -921,7 +921,7 @@ } " [(set_attr "length" "4,2,2,6,4,4") - (set_attr "type" "multiple,load2,store2,load2,store2,multiple") + (set_attr "type" "multiple,load_8,store_8,load_8,store_8,multiple") (set_attr "pool_range" "*,*,*,1018,*,*")] ) @@ -947,7 +947,7 @@ [(set_attr "length" "4") ; This isn't entirely accurate... It loads as well, but in terms of ; scheduling the following insn it is better to consider it as a store - (set_attr "type" "store3")] + (set_attr "type" "store_12")] ) (define_insn "movmem8b" @@ -966,7 +966,7 @@ [(set_attr "length" "4") ; This isn't entirely accurate... It loads as well, but in terms of ; scheduling the following insn it is better to consider it as a store - (set_attr "type" "store2")] + (set_attr "type" "store_8")] ) diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 2e7580f..b78c3d2 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -239,7 +239,7 @@ (mem:SI (post_inc:SI (reg:SI SP_REGNUM))))] "TARGET_THUMB2 && (reload_in_progress || reload_completed)" "pop\t{%0}" - [(set_attr "type" "load1") + [(set_attr "type" "load_4") (set_attr "length" "2") (set_attr "predicable" "yes")] ) @@ -265,7 +265,7 @@ ldr%?\\t%0, %1 str%?\\t%1, %0 str%?\\t%1, %0" - [(set_attr "type" "mov_reg,mov_imm,mov_imm,mvn_imm,mov_imm,load1,load1,store1,store1") + [(set_attr "type" "mov_reg,mov_imm,mov_imm,mvn_imm,mov_imm,load_4,load_4,store_4,store_4") (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") @@ -305,7 +305,7 @@ movw%?\\t%0, %L1\\t%@ movhi strh%?\\t%1, %0\\t%@ movhi ldrh%?\\t%0, %1\\t%@ movhi" - [(set_attr "type" "mov_reg,mov_imm,mov_imm,mov_imm,store1,load1") + [(set_attr "type" "mov_reg,mov_imm,mov_imm,mov_imm,store_4,load_4") (set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,no,yes,no,no,no") (set_attr "length" "2,4,2,4,4,4") @@ -325,7 +325,7 @@ "TARGET_THUMB2 && INTVAL (operands[5]) == INTVAL (operands[2]) + 4" "strd\\t%3, %4, [%0, %2]!" - [(set_attr "type" "store2")] + [(set_attr "type" "store_8")] ) (define_insn "*thumb2_cmpsi_neg_shiftsi" diff --git a/gcc/config/arm/types.md b/gcc/config/arm/types.md index 253f496..22d993d 100644 --- a/gcc/config/arm/types.md +++ b/gcc/config/arm/types.md @@ -84,11 +84,11 @@ ; fmul[d,s] double/single floating point multiply. ; fsqrt[d,s] double/single precision floating point square root. ; load_acq load-acquire. -; load_byte load byte(s) from memory to arm registers. -; load1 load 1 word from memory to arm registers. -; load2 load 2 words from memory to arm registers. -; load3 load 3 words from memory to arm registers. -; load4 load 4 words from memory to arm registers. +; load_byte load 1 byte from memory. +; load_4 load 4 bytes from memory. +; load_8 load 8 bytes from memory. +; load_12 load 12 bytes from memory. +; load_16 load 16 bytes from memory. ; logic_imm any logical instruction that doesn't have a shifted ; operand and has an immediate operand. ; logic_reg any logical instruction that doesn't have a shifted @@ -152,10 +152,10 @@ ; smusd signed dual multiply subtract. ; smusdx signed dual multiply subtract reverse. ; store_rel store-release. -; store1 store 1 word to memory from arm registers. -; store2 store 2 words to memory from arm registers. -; store3 store 3 words to memory from arm registers. -; store4 store 4 (or more) words to memory from arm registers. +; store_4 store 4 bytes to memory. +; store_8 store 8 bytes to memory. +; store_12 store 12 bytes to memory. +; store_16 store 16 bytes (or more) to memory. ; trap cause a trap in the kernel. ; udiv unsigned division. ; umaal unsigned multiply accumulate accumulate long. @@ -613,10 +613,10 @@ fsqrtd,\ load_acq,\ load_byte,\ - load1,\ - load2,\ - load3,\ - load4,\ + load_4,\ + load_8,\ + load_12,\ + load_16,\ logic_imm,\ logic_reg,\ logic_shift_imm,\ @@ -670,10 +670,10 @@ smusd,\ smusdx,\ store_rel,\ - store1,\ - store2,\ - store3,\ - store4,\ + store_4,\ + store_8,\ + store_12,\ + store_16,\ trap,\ udiv,\ umaal,\ diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 23c1d67..9521e90 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -60,8 +60,8 @@ (const_string "mov_reg")) (const_string "mvn_imm") (const_string "mov_imm") - (const_string "store1") - (const_string "load1") + (const_string "store_4") + (const_string "load_4") (const_string "f_mcr") (const_string "f_mrc") (const_string "fmov")]) @@ -107,7 +107,7 @@ (set_attr "predicable_short_it" "yes, no, yes, no, no, no, no, no, no") (set_attr "type" - "mov_reg, mov_imm, mov_imm, mov_imm, store1, load1,\ + "mov_reg, mov_imm, mov_imm, mov_imm, store_4, load_4,\ f_mcr, f_mrc, fmov") (set_attr "arch" "*, *, *, v6t2, *, *, *, *, *") (set_attr "pool_range" "*, *, *, *, *, 4094, *, *, *") @@ -156,8 +156,8 @@ (const_string "mov_reg")) (const_string "mvn_imm") (const_string "mov_imm") - (const_string "store1") - (const_string "load1") + (const_string "store_4") + (const_string "load_4") (const_string "f_mcr") (const_string "f_mrc") (const_string "fmov")]) @@ -203,7 +203,7 @@ (set_attr "predicable_short_it" "yes, no, yes, no, no, no, no, no, no") (set_attr "type" - "mov_reg, mov_imm, mov_imm, mov_imm, store1, load1,\ + "mov_reg, mov_imm, mov_imm, mov_imm, store_4, load_4,\ f_mcr, f_mrc, fmov") (set_attr "arch" "*, *, *, v6t2, *, *, *, *, *") (set_attr "pool_range" "*, *, *, *, *, 4094, *, *, *") @@ -246,7 +246,7 @@ } " [(set_attr "predicable" "yes") - (set_attr "type" "mov_reg,mov_reg,mvn_imm,mov_imm,load1,store1, + (set_attr "type" "mov_reg,mov_reg,mvn_imm,mov_imm,load_4,store_4, f_mcr,f_mrc,fmov,f_loads,f_stores") (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*") (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")] @@ -294,7 +294,7 @@ " [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "yes,no,yes,no,no,no,no,no,no,no,no,no,no,no") - (set_attr "type" "mov_reg,mov_reg,mov_reg,mvn_reg,mov_imm,load1,load1,store1,store1,f_mcr,f_mrc,fmov,f_loads,f_stores") + (set_attr "type" "mov_reg,mov_reg,mov_reg,mvn_reg,mov_imm,load_4,load_4,store_4,store_4,f_mcr,f_mrc,fmov,f_loads,f_stores") (set_attr "length" "2,4,2,4,4,4,4,4,4,4,4,4,4,4") (set_attr "pool_range" "*,*,*,*,*,1018,4094,*,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*,*, 0, 0,*,*,*,*,*,1008,*")] @@ -338,7 +338,7 @@ gcc_unreachable (); } " - [(set_attr "type" "multiple,multiple,multiple,multiple,load2,load2,store2,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") + [(set_attr "type" "multiple,multiple,multiple,multiple,load_8,load_8,store_8,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") (set (attr "length") (cond [(eq_attr "alternative" "1,4,5,6") (const_int 8) (eq_attr "alternative" "2") (const_int 12) (eq_attr "alternative" "3") (const_int 16) @@ -386,7 +386,7 @@ gcc_unreachable (); } " - [(set_attr "type" "multiple,multiple,multiple,multiple,load2,load2,store2,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") + [(set_attr "type" "multiple,multiple,multiple,multiple,load_8,load_8,store_8,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") (set (attr "length") (cond [(eq_attr "alternative" "1") (const_int 8) (eq_attr "alternative" "2") (const_int 12) (eq_attr "alternative" "3") (const_int 16) @@ -461,7 +461,7 @@ no, no, no, no,\ no, no") (set_attr_alternative "type" - [(const_string "load1") (const_string "store1") + [(const_string "load_4") (const_string "store_4") (const_string "fmov") (const_string "mov_reg") (const_string "f_mcr") (const_string "f_mrc") (const_string "fconsts") (const_string "neon_load1_1reg") @@ -531,7 +531,7 @@ " [(set_attr "conds" "unconditional") (set_attr "type" "neon_load1_1reg,neon_store1_1reg,\ - load1,store1,fmov,mov_reg,f_mcr,f_mrc,multiple") + load_4,store_4,fmov,mov_reg,f_mcr,f_mrc,multiple") (set_attr "length" "4,4,4,4,4,4,4,4,8")] ) @@ -583,7 +583,7 @@ } " [(set_attr "conds" "unconditional") - (set_attr "type" "load1,store1,fmov,mov_reg,f_mcr,f_mrc,multiple") + (set_attr "type" "load_4,store_4,fmov,mov_reg,f_mcr,f_mrc,multiple") (set_attr "length" "4,4,4,4,4,4,8")] ) @@ -623,7 +623,7 @@ " [(set_attr "predicable" "yes") (set_attr "type" - "f_mcr,f_mrc,fconsts,f_loads,f_stores,load1,store1,fmov,mov_reg") + "f_mcr,f_mrc,fconsts,f_loads,f_stores,load_4,store_4,fmov,mov_reg") (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,4080,*,*,*")] ) @@ -660,7 +660,7 @@ [(set_attr "predicable" "yes") (set_attr "predicable_short_it" "no") (set_attr "type" - "f_mcr,f_mrc,fconsts,f_loads,f_stores,load1,store1,fmov,mov_reg") + "f_mcr,f_mrc,fconsts,f_loads,f_stores,load_4,store_4,fmov,mov_reg") (set_attr "pool_range" "*,*,*,1018,*,4090,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) @@ -704,7 +704,7 @@ } " [(set_attr "type" "f_mcrr,f_mrrc,fconstd,neon_move,f_loadd,f_stored,\ - load2,store2,ffarithd,multiple") + load_8,store_8,ffarithd,multiple") (set (attr "length") (cond [(eq_attr "alternative" "6,7,9") (const_int 8) (eq_attr "alternative" "8") (if_then_else @@ -753,7 +753,7 @@ } " [(set_attr "type" "f_mcrr,f_mrrc,fconstd,neon_move,f_loadd,\ - f_stored,load2,store2,ffarithd,multiple") + f_stored,load_8,store_8,ffarithd,multiple") (set (attr "length") (cond [(eq_attr "alternative" "6,7,9") (const_int 8) (eq_attr "alternative" "8") (if_then_else diff --git a/gcc/config/arm/xgene1.md b/gcc/config/arm/xgene1.md index 34a13f4..d0b17ab 100644 --- a/gcc/config/arm/xgene1.md +++ b/gcc/config/arm/xgene1.md @@ -92,28 +92,28 @@ (define_insn_reservation "xgene1_load_pair" 6 (and (eq_attr "tune" "xgene1") - (eq_attr "type" "load2")) + (eq_attr "type" "load_8")) "xgene1_decodeIsolated") (define_insn_reservation "xgene1_store_pair" 2 (and (eq_attr "tune" "xgene1") - (eq_attr "type" "store2")) + (eq_attr "type" "store_8")) "xgene1_decodeIsolated") (define_insn_reservation "xgene1_fp_load1" 10 (and (eq_attr "tune" "xgene1") - (eq_attr "type" "load1") + (eq_attr "type" "load_4") (eq_attr "fp" "yes")) "xgene1_decode1op") (define_insn_reservation "xgene1_load1" 5 (and (eq_attr "tune" "xgene1") - (eq_attr "type" "load1")) + (eq_attr "type" "load_4")) "xgene1_decode1op") (define_insn_reservation "xgene1_store1" 2 (and (eq_attr "tune" "xgene1") - (eq_attr "type" "store1")) + (eq_attr "type" "store_4")) "xgene1_decode2op") (define_insn_reservation "xgene1_move" 1 -- 2.7.4