* config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
commit80e585b219e1c710e4f082eca22f6088ef770f8b
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 Sep 2009 18:06:51 +0000 (7 18:06 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 7 Sep 2009 18:06:51 +0000 (7 18:06 +0000)
tree44208384bf1e21897531dd9f8d9a5f936ed5f273
parentaebee83356504d59805dcc22fbde2ea9073eb87d
* config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
(attr "addrtype"): New member "spreg".
Use it if mem_spfp_address_operand is true for the address.
(attr "type"): New entry "stall".
(cpu_unit "load"): New.
(insn_reservations "load32", "loadp", "loadi"): Add reservation of
"load".
(insn_reservation "loadsp"): New.
(insn_reservation "load_stall1"): New.
(insn_reservation "load_stall3"): New.
(stall): New insn.
* config/bfin/predicates.md (const1_operand, const3_operand): New.
(mem_p_address_operand): Exclude stack and frame pointer based
addresses.
(mem_spfp_address_operand): New; match them here.
* config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
(bfin_reorg): Call it if scheduling insns.
(bfin_gen_bundles): Remove dummy insns created by
add_sched_insns_for_speculation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151486 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/bfin/bfin.c
gcc/config/bfin/bfin.md
gcc/config/bfin/predicates.md