1132718Skan;; Scheduling description for IBM POWER processor. 2169689Skan;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. 3132718Skan;; 4132718Skan;; This file is part of GCC. 5132718Skan 6132718Skan;; GCC is free software; you can redistribute it and/or modify it 7132718Skan;; under the terms of the GNU General Public License as published 8132718Skan;; by the Free Software Foundation; either version 2, or (at your 9132718Skan;; option) any later version. 10132718Skan 11132718Skan;; GCC is distributed in the hope that it will be useful, but WITHOUT 12132718Skan;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13132718Skan;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 14132718Skan;; License for more details. 15132718Skan 16132718Skan;; You should have received a copy of the GNU General Public License 17132718Skan;; along with GCC; see the file COPYING. If not, write to the 18169689Skan;; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, 19169689Skan;; MA 02110-1301, USA. 20132718Skan 21132718Skan(define_automaton "rios1,rios1fp") 22132718Skan(define_cpu_unit "iu_rios1" "rios1") 23132718Skan(define_cpu_unit "fpu_rios1" "rios1fp") 24132718Skan(define_cpu_unit "bpu_rios1" "rios1") 25132718Skan 26132718Skan;; RIOS1 32-bit IU, FPU, BPU 27132718Skan 28132718Skan(define_insn_reservation "rios1-load" 2 29169689Skan (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u,\ 30169689Skan load_l,store_c,sync") 31132718Skan (eq_attr "cpu" "rios1,ppc601")) 32132718Skan "iu_rios1") 33132718Skan 34169689Skan(define_insn_reservation "rios1-store" 2 35132718Skan (and (eq_attr "type" "store,store_ux,store_u") 36132718Skan (eq_attr "cpu" "rios1,ppc601")) 37132718Skan "iu_rios1") 38132718Skan 39132718Skan(define_insn_reservation "rios1-fpload" 2 40132718Skan (and (eq_attr "type" "fpload,fpload_ux,fpload_u") 41132718Skan (eq_attr "cpu" "rios1")) 42132718Skan "iu_rios1") 43132718Skan 44132718Skan(define_insn_reservation "ppc601-fpload" 3 45132718Skan (and (eq_attr "type" "fpload,fpload_ux,fpload_u") 46132718Skan (eq_attr "cpu" "ppc601")) 47132718Skan "iu_rios1") 48132718Skan 49169689Skan(define_insn_reservation "rios1-fpstore" 3 50132718Skan (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u") 51132718Skan (eq_attr "cpu" "rios1,ppc601")) 52132718Skan "iu_rios1+fpu_rios1") 53132718Skan 54132718Skan(define_insn_reservation "rios1-integer" 1 55132718Skan (and (eq_attr "type" "integer,insert_word") 56132718Skan (eq_attr "cpu" "rios1,ppc601")) 57132718Skan "iu_rios1") 58132718Skan 59169689Skan(define_insn_reservation "rios1-two" 1 60169689Skan (and (eq_attr "type" "two") 61169689Skan (eq_attr "cpu" "rios1,ppc601")) 62169689Skan "iu_rios1,iu_rios1") 63169689Skan 64169689Skan(define_insn_reservation "rios1-three" 1 65169689Skan (and (eq_attr "type" "three") 66169689Skan (eq_attr "cpu" "rios1,ppc601")) 67169689Skan "iu_rios1,iu_rios1,iu_rios1") 68169689Skan 69132718Skan(define_insn_reservation "rios1-imul" 5 70132718Skan (and (eq_attr "type" "imul,imul_compare") 71132718Skan (eq_attr "cpu" "rios1")) 72132718Skan "iu_rios1*5") 73132718Skan 74132718Skan(define_insn_reservation "rios1-imul2" 4 75132718Skan (and (eq_attr "type" "imul2") 76132718Skan (eq_attr "cpu" "rios1")) 77132718Skan "iu_rios1*4") 78132718Skan 79132718Skan(define_insn_reservation "rios1-imul3" 3 80132718Skan (and (eq_attr "type" "imul") 81132718Skan (eq_attr "cpu" "rios1")) 82132718Skan "iu_rios1*3") 83132718Skan 84132718Skan(define_insn_reservation "ppc601-imul" 5 85132718Skan (and (eq_attr "type" "imul,imul2,imul3,imul_compare") 86132718Skan (eq_attr "cpu" "ppc601")) 87132718Skan "iu_rios1*5") 88132718Skan 89132718Skan(define_insn_reservation "rios1-idiv" 19 90132718Skan (and (eq_attr "type" "idiv") 91132718Skan (eq_attr "cpu" "rios1")) 92132718Skan "iu_rios1*19") 93132718Skan 94132718Skan(define_insn_reservation "ppc601-idiv" 36 95132718Skan (and (eq_attr "type" "idiv") 96132718Skan (eq_attr "cpu" "ppc601")) 97132718Skan "iu_rios1*36") 98132718Skan 99132718Skan; compare executes on integer unit, but feeds insns which 100132718Skan; execute on the branch unit. 101132718Skan(define_insn_reservation "rios1-compare" 4 102132718Skan (and (eq_attr "type" "cmp,fast_compare,compare") 103132718Skan (eq_attr "cpu" "rios1")) 104132718Skan "iu_rios1,nothing*2,bpu_rios1") 105132718Skan 106132718Skan(define_insn_reservation "rios1-delayed_compare" 5 107132718Skan (and (eq_attr "type" "delayed_compare") 108132718Skan (eq_attr "cpu" "rios1")) 109132718Skan "iu_rios1,nothing*3,bpu_rios1") 110132718Skan 111132718Skan(define_insn_reservation "ppc601-compare" 3 112132718Skan (and (eq_attr "type" "cmp,compare,delayed_compare") 113132718Skan (eq_attr "cpu" "ppc601")) 114132718Skan "iu_rios1,nothing,bpu_rios1") 115132718Skan 116132718Skan(define_insn_reservation "rios1-fpcompare" 9 117132718Skan (and (eq_attr "type" "fpcompare") 118132718Skan (eq_attr "cpu" "rios1")) 119132718Skan "fpu_rios1,nothing*3,bpu_rios1") 120132718Skan 121132718Skan(define_insn_reservation "ppc601-fpcompare" 5 122132718Skan (and (eq_attr "type" "fpcompare") 123132718Skan (eq_attr "cpu" "ppc601")) 124132718Skan "(fpu_rios1+iu_rios1*2),nothing*2,bpu_rios1") 125132718Skan 126132718Skan(define_insn_reservation "rios1-fp" 2 127132718Skan (and (eq_attr "type" "fp,dmul") 128132718Skan (eq_attr "cpu" "rios1")) 129132718Skan "fpu_rios1") 130132718Skan 131132718Skan(define_insn_reservation "ppc601-fp" 4 132132718Skan (and (eq_attr "type" "fp") 133132718Skan (eq_attr "cpu" "ppc601")) 134132718Skan "fpu_rios1") 135132718Skan 136132718Skan(define_insn_reservation "rios1-dmul" 5 137132718Skan (and (eq_attr "type" "dmul") 138132718Skan (eq_attr "cpu" "ppc601")) 139132718Skan "fpu_rios1*2") 140132718Skan 141132718Skan(define_insn_reservation "rios1-sdiv" 19 142132718Skan (and (eq_attr "type" "sdiv,ddiv") 143132718Skan (eq_attr "cpu" "rios1")) 144132718Skan "fpu_rios1*19") 145132718Skan 146132718Skan(define_insn_reservation "ppc601-sdiv" 17 147132718Skan (and (eq_attr "type" "sdiv") 148132718Skan (eq_attr "cpu" "ppc601")) 149132718Skan "fpu_rios1*17") 150132718Skan 151132718Skan(define_insn_reservation "ppc601-ddiv" 31 152132718Skan (and (eq_attr "type" "ddiv") 153132718Skan (eq_attr "cpu" "ppc601")) 154132718Skan "fpu_rios1*31") 155132718Skan 156132718Skan(define_insn_reservation "rios1-mfcr" 2 157132718Skan (and (eq_attr "type" "mfcr") 158132718Skan (eq_attr "cpu" "rios1,ppc601")) 159132718Skan "iu_rios1,bpu_rios1") 160132718Skan 161132718Skan(define_insn_reservation "rios1-mtcr" 4 162132718Skan (and (eq_attr "type" "mtcr") 163132718Skan (eq_attr "cpu" "rios1,ppc601")) 164132718Skan "iu_rios1,bpu_rios1") 165132718Skan 166132718Skan(define_insn_reservation "rios1-crlogical" 4 167132718Skan (and (eq_attr "type" "cr_logical,delayed_cr") 168132718Skan (eq_attr "cpu" "rios1,ppc601")) 169132718Skan "bpu_rios1") 170132718Skan 171132718Skan(define_insn_reservation "rios1-mtjmpr" 5 172132718Skan (and (eq_attr "type" "mtjmpr") 173132718Skan (eq_attr "cpu" "rios1")) 174132718Skan "iu_rios1,bpu_rios1") 175132718Skan 176132718Skan(define_insn_reservation "ppc601-mtjmpr" 4 177132718Skan (and (eq_attr "type" "mtjmpr") 178132718Skan (eq_attr "cpu" "ppc601")) 179132718Skan "iu_rios1,bpu_rios1") 180132718Skan 181132718Skan(define_insn_reservation "rios1-mfjmpr" 2 182132718Skan (and (eq_attr "type" "mfjmpr") 183132718Skan (eq_attr "cpu" "rios1,ppc601")) 184132718Skan "iu_rios1,bpu_rios1") 185132718Skan 186132718Skan(define_insn_reservation "rios1-branch" 1 187169689Skan (and (eq_attr "type" "jmpreg,branch,isync") 188132718Skan (eq_attr "cpu" "rios1,ppc601")) 189132718Skan "bpu_rios1") 190132718Skan 191