Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/arm/cortex-a8.md @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | a06113de4d67 |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
1 ;; ARM Cortex-A8 scheduling description. | 1 ;; ARM Cortex-A8 scheduling description. |
2 ;; Copyright (C) 2007 Free Software Foundation, Inc. | 2 ;; Copyright (C) 2007, 2010 Free Software Foundation, Inc. |
3 ;; Contributed by CodeSourcery. | 3 ;; Contributed by CodeSourcery. |
4 | 4 |
5 ;; This file is part of GCC. | 5 ;; This file is part of GCC. |
6 | 6 |
7 ;; GCC is free software; you can redistribute it and/or modify it | 7 ;; GCC is free software; you can redistribute it and/or modify it |
45 ;; the case where that instruction consists of only one micro-op... | 45 ;; the case where that instruction consists of only one micro-op... |
46 (define_reservation "cortex_a8_load_store_1" | 46 (define_reservation "cortex_a8_load_store_1" |
47 "(cortex_a8_alu0+cortex_a8_issue_ls)|\ | 47 "(cortex_a8_alu0+cortex_a8_issue_ls)|\ |
48 (cortex_a8_alu1+cortex_a8_issue_ls)") | 48 (cortex_a8_alu1+cortex_a8_issue_ls)") |
49 | 49 |
50 ;; ...and in the case of two micro-ops. We don't need to reserve | 50 ;; ...and in the case of two micro-ops. Dual issue is altogether forbidden |
51 ;; cortex_a8_issue_ls here because dual issue is altogether forbidden | |
52 ;; during the issue cycle of the first micro-op. (Instead of modelling | 51 ;; during the issue cycle of the first micro-op. (Instead of modelling |
53 ;; a separate issue unit, we instead reserve alu0 and alu1 to | 52 ;; a separate issue unit, we instead reserve alu0 and alu1 to |
54 ;; prevent any other instructions from being issued upon that first cycle.) | 53 ;; prevent any other instructions from being issued upon that first cycle.) |
55 ;; Even though the load/store pipeline is usually available in either | 54 ;; Even though the load/store pipeline is usually available in either |
56 ;; ALU pipe, multi-cycle instructions always issue in pipeline 0. This | 55 ;; ALU pipe, multi-cycle instructions always issue in pipeline 0. |
57 ;; reservation is therefore the same as cortex_a8_multiply_2 below. | |
58 (define_reservation "cortex_a8_load_store_2" | 56 (define_reservation "cortex_a8_load_store_2" |
59 "cortex_a8_alu0+cortex_a8_alu1,\ | 57 "cortex_a8_alu0+cortex_a8_alu1+cortex_a8_issue_ls,\ |
60 cortex_a8_alu0") | 58 cortex_a8_alu0+cortex_a8_issue_ls") |
61 | 59 |
62 ;; The flow of a single-cycle multiplication. | 60 ;; The flow of a single-cycle multiplication. |
63 (define_reservation "cortex_a8_multiply" | 61 (define_reservation "cortex_a8_multiply" |
64 "cortex_a8_alu0") | 62 "cortex_a8_alu0") |
65 | 63 |
85 | 83 |
86 ;; We include CLZ with these since it has the same execution pattern | 84 ;; We include CLZ with these since it has the same execution pattern |
87 ;; (source read in E2 and destination available at the end of that cycle). | 85 ;; (source read in E2 and destination available at the end of that cycle). |
88 (define_insn_reservation "cortex_a8_alu" 2 | 86 (define_insn_reservation "cortex_a8_alu" 2 |
89 (and (eq_attr "tune" "cortexa8") | 87 (and (eq_attr "tune" "cortexa8") |
90 (ior (and (eq_attr "type" "alu") | 88 (ior (and (and (eq_attr "type" "alu") |
91 (not (eq_attr "insn" "mov,mvn"))) | 89 (eq_attr "neon_type" "none")) |
90 (not (eq_attr "insn" "mov,mvn"))) | |
92 (eq_attr "insn" "clz"))) | 91 (eq_attr "insn" "clz"))) |
93 "cortex_a8_default") | 92 "cortex_a8_default") |
94 | 93 |
95 (define_insn_reservation "cortex_a8_alu_shift" 2 | 94 (define_insn_reservation "cortex_a8_alu_shift" 2 |
96 (and (eq_attr "tune" "cortexa8") | 95 (and (eq_attr "tune" "cortexa8") |