diff options
Diffstat (limited to 'gcc/config/rs6000/40x.md')
-rw-r--r-- | gcc/config/rs6000/40x.md | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/gcc/config/rs6000/40x.md b/gcc/config/rs6000/40x.md index b2a83b163f7..b29e06a02f3 100644 --- a/gcc/config/rs6000/40x.md +++ b/gcc/config/rs6000/40x.md @@ -26,19 +26,19 @@ ;; In-order execution ;; Max issue two insns/cycle (includes one branch) (define_insn_reservation "ppc403-load" 2 - (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,\ - load_l,store_c,sync") + (and (eq_attr "type" "load,load_l,store_c,sync") (eq_attr "cpu" "ppc403,ppc405")) "iu_40x") (define_insn_reservation "ppc403-store" 2 - (and (eq_attr "type" "store,store_ux,store_u") + (and (eq_attr "type" "store") (eq_attr "cpu" "ppc403,ppc405")) "iu_40x") (define_insn_reservation "ppc403-integer" 1 - (and (eq_attr "type" "integer,insert_word,insert_dword,shift,trap,\ - var_shift_rotate,cntlz,exts,isel") + (and (ior (eq_attr "type" "integer,insert,trap,cntlz,exts,isel") + (and (eq_attr "type" "add,logical,shift") + (eq_attr "dot" "no"))) (eq_attr "cpu" "ppc403,ppc405")) "iu_40x") @@ -53,33 +53,38 @@ "iu_40x,iu_40x,iu_40x") (define_insn_reservation "ppc403-compare" 3 - (and (eq_attr "type" "cmp,fast_compare,compare,delayed_compare,\ - var_delayed_compare") + (and (ior (eq_attr "type" "cmp,compare") + (and (eq_attr "type" "add,logical,shift") + (eq_attr "dot" "yes"))) (eq_attr "cpu" "ppc403,ppc405")) "iu_40x,nothing,bpu_40x") (define_insn_reservation "ppc403-imul" 4 - (and (eq_attr "type" "imul,imul2,imul3,imul_compare") + (and (eq_attr "type" "mul") (eq_attr "cpu" "ppc403")) "iu_40x*4") (define_insn_reservation "ppc405-imul" 5 - (and (eq_attr "type" "imul,imul_compare") + (and (eq_attr "type" "mul") + (eq_attr "size" "32") (eq_attr "cpu" "ppc405")) "iu_40x*4") (define_insn_reservation "ppc405-imul2" 3 - (and (eq_attr "type" "imul2") + (and (eq_attr "type" "mul") + (eq_attr "size" "16") (eq_attr "cpu" "ppc405")) "iu_40x*2") (define_insn_reservation "ppc405-imul3" 2 - (and (eq_attr "type" "imul3") + (and (ior (eq_attr "type" "halfmul") + (and (eq_attr "type" "mul") + (eq_attr "size" "8"))) (eq_attr "cpu" "ppc405")) "iu_40x") (define_insn_reservation "ppc403-idiv" 33 - (and (eq_attr "type" "idiv") + (and (eq_attr "type" "div") (eq_attr "cpu" "ppc403,ppc405")) "iu_40x*33") @@ -114,7 +119,6 @@ "bpu_40x") (define_insn_reservation "ppc405-float" 11 - (and (eq_attr "type" "fpload,fpload_ux,fpload_u,fpstore,fpstore_ux,fpstore_u,\ - fpcompare,fp,dmul,sdiv,ddiv") + (and (eq_attr "type" "fpload,fpstore,fpcompare,fp,dmul,sdiv,ddiv") (eq_attr "cpu" "ppc405")) "fpu_405*10") |