From: Venkataramanan Kumar Date: Sun, 14 Feb 2016 07:11:16 +0000 (+0000) Subject: Fix some pipe reservations in znver1.md X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cdc647c36f1a5878f8ea518c6865010abd9d7e69;p=gcc.git Fix some pipe reservations in znver1.md Fix some pipe reservations in znver1.md * config/i386/znver1.md (znver1_pop, znver1_pop_mem, znver1_load_imov_double_store, znver1_load_imov_direct_store, znver1_load_imov_direct_load, znver1_load_imov_double_load): Add new. (znver1_insn, znver1_insn_load): Add icmov type. (znver1_sseavx_fma, znver1_sseavx_fma_load, znver1_avx256_fma, znver1_avx256_fma_load): Fix pipe usage. From-SVN: r233409 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1561dbad282..e81d1feeb98 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2016-02-14 Venkataramanan Kumar + + * config/i386/znver1.md + (znver1_pop, znver1_pop_mem, + znver1_load_imov_double_store, + znver1_load_imov_direct_store, + znver1_load_imov_direct_load, + znver1_load_imov_double_load): Add new. + (znver1_insn, znver1_insn_load): Add icmov type. + (znver1_sseavx_fma, + znver1_sseavx_fma_load, + znver1_avx256_fma, + znver1_avx256_fma_load): Fix pipe usage. + 2016-02-14 Alan Modra PR target/68973 diff --git a/gcc/config/i386/znver1.md b/gcc/config/i386/znver1.md index 6e231889430..3db3bed5bb7 100644 --- a/gcc/config/i386/znver1.md +++ b/gcc/config/i386/znver1.md @@ -102,6 +102,18 @@ (eq_attr "memory" "both"))) "znver1-direct,znver1-load,znver1-store") +(define_insn_reservation "znver1_pop" 4 + (and (eq_attr "cpu" "znver1") + (and (eq_attr "type" "pop") + (eq_attr "memory" "load"))) + "znver1-direct,znver1-load") + +(define_insn_reservation "znver1_pop_mem" 4 + (and (eq_attr "cpu" "znver1") + (and (eq_attr "type" "pop") + (eq_attr "memory" "both"))) + "znver1-direct,znver1-load,znver1-store") + ;; Leave (define_insn_reservation "znver1_leave" 1 (and (eq_attr "cpu" "znver1") @@ -194,26 +206,52 @@ (and (eq_attr "cpu" "znver1") (and (eq_attr "znver1_decode" "double") (and (eq_attr "type" "imovx") - (eq_attr "memory" "none,load")))) + (eq_attr "memory" "none")))) "znver1-double,znver1-ieu") (define_insn_reservation "znver1_load_imov_direct" 1 (and (eq_attr "cpu" "znver1") (and (eq_attr "type" "imov,imovx") - (eq_attr "memory" "none,load"))) + (eq_attr "memory" "none"))) "znver1-direct,znver1-ieu") +(define_insn_reservation "znver1_load_imov_double_store" 2 + (and (eq_attr "cpu" "znver1") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "store")))) + "znver1-double,znver1-ieu,znver1-store") + +(define_insn_reservation "znver1_load_imov_direct_store" 1 + (and (eq_attr "cpu" "znver1") + (and (eq_attr "type" "imov,imovx") + (eq_attr "memory" "store"))) + "znver1-direct,znver1-ieu,znver1-store") + +(define_insn_reservation "znver1_load_imov_double_load" 6 + (and (eq_attr "cpu" "znver1") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "load")))) + "znver1-double,znver1-load,znver1-ieu") + +(define_insn_reservation "znver1_load_imov_direct_load" 5 + (and (eq_attr "cpu" "znver1") + (and (eq_attr "type" "imov,imovx") + (eq_attr "memory" "load"))) + "znver1-direct,znver1-load,znver1-ieu") + ;; INTEGER/GENERAL instructions ;; register/imm operands only: ALU, ICMP, NEG, NOT, ROTATE, ISHIFT, TEST (define_insn_reservation "znver1_insn" 1 (and (eq_attr "cpu" "znver1") - (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec") + (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov") (eq_attr "memory" "none,unknown"))) "znver1-direct,znver1-ieu") (define_insn_reservation "znver1_insn_load" 5 (and (eq_attr "cpu" "znver1") - (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec") + (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov") (eq_attr "memory" "load"))) "znver1-direct,znver1-load,znver1-ieu") @@ -666,28 +704,28 @@ (and (eq_attr "mode" "SF,DF,V4SF,V2DF") (and (eq_attr "type" "ssemuladd") (eq_attr "memory" "none")))) - "znver1-direct,(znver1-fp0+znver1-fp3)|(znver1-fp1+znver1-fp3)") + "znver1-direct,znver1-fp0|znver1-fp1") (define_insn_reservation "znver1_sseavx_fma_load" 9 (and (eq_attr "cpu" "znver1") (and (eq_attr "mode" "SF,DF,V4SF,V2DF") (and (eq_attr "type" "ssemuladd") (eq_attr "memory" "load")))) - "znver1-direct,znver1-load,(znver1-fp0+znver1-fp3)|(znver1-fp1+znver1-fp3)") + "znver1-direct,znver1-load,znver1-fp0|znver1-fp1") (define_insn_reservation "znver1_avx256_fma" 5 (and (eq_attr "cpu" "znver1") (and (eq_attr "mode" "V8SF,V4DF") (and (eq_attr "type" "ssemuladd") (eq_attr "memory" "none")))) - "znver1-double,(znver1-fp0+znver1-fp3)|(znver1-fp1+znver1-fp3)") + "znver1-double,znver1-fp0|znver1-fp1") (define_insn_reservation "znver1_avx256_fma_load" 9 (and (eq_attr "cpu" "znver1") (and (eq_attr "mode" "V8SF,V4DF") (and (eq_attr "type" "ssemuladd") (eq_attr "memory" "load")))) - "znver1-double,znver1-load,(znver1-fp0+znver1-fp3)|(znver1-fp1+znver1-fp3)") + "znver1-double,znver1-load,znver1-fp0|znver1-fp1") (define_insn_reservation "znver1_sseavx_iadd" 1 (and (eq_attr "cpu" "znver1") @@ -970,4 +1008,3 @@ (and (eq_attr "type" "ssecmp") (eq_attr "memory" "load")))) "znver1-double,znver1-load,znver1-fp0|znver1-fp3") -