1303231Sdim//===-- SparcSchedule.td - Describe the Sparc Itineries ----*- tablegen -*-===// 2303231Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6303231Sdim// 7303231Sdim//===----------------------------------------------------------------------===// 8303231Sdim// 9303231Sdim// 10303231Sdim//===----------------------------------------------------------------------===// 11303231Sdim 12303231Sdimdef IIC_iu_or_fpu_instr : InstrItinClass; 13303231Sdimdef IIC_iu_instr : InstrItinClass; 14303231Sdimdef IIC_fpu_normal_instr : InstrItinClass; 15303231Sdimdef IIC_fpu_fast_instr : InstrItinClass; 16303231Sdimdef IIC_jmp_or_call : InstrItinClass; 17303231Sdimdef IIC_ldd : InstrItinClass; 18303231Sdimdef IIC_st : InstrItinClass; 19303231Sdimdef IIC_std : InstrItinClass; 20303231Sdimdef IIC_iu_smul : InstrItinClass; 21303231Sdimdef IIC_iu_umul : InstrItinClass; 22303231Sdimdef IIC_iu_div : InstrItinClass; 23303231Sdimdef IIC_ticc : InstrItinClass; 24303231Sdimdef IIC_ldstub : InstrItinClass; 25303231Sdimdef IIC_fpu_muls : InstrItinClass; 26303231Sdimdef IIC_fpu_muld : InstrItinClass; 27303231Sdimdef IIC_fpu_divs : InstrItinClass; 28303231Sdimdef IIC_fpu_divd : InstrItinClass; 29303231Sdimdef IIC_fpu_sqrts : InstrItinClass; 30303231Sdimdef IIC_fpu_sqrtd : InstrItinClass; 31303231Sdimdef IIC_fpu_abs : InstrItinClass; 32303231Sdimdef IIC_fpu_movs : InstrItinClass; 33303231Sdimdef IIC_fpu_negs : InstrItinClass; 34303231Sdimdef IIC_smac_umac : InstrItinClass; 35303231Sdimdef IIC_fpu_stod : InstrItinClass; 36303231Sdim 37303231Sdimdef LEONIU : FuncUnit; // integer unit 38303231Sdimdef LEONFPU : FuncUnit; // floating-point unit 39303231Sdim 40303231Sdim// Ref: http://www.atmel.com/Images/doc4226.pdf 41303231Sdim 42303231Sdimdef LEON2Itineraries : ProcessorItineraries< 43303231Sdim[LEONIU, LEONFPU], [], [ 44303231Sdim InstrItinData<IIC_iu_or_fpu_instr, [InstrStage<1, [LEONIU, LEONFPU]>], [1, 1]>, 45303231Sdim InstrItinData<IIC_iu_instr, [InstrStage<1, [LEONIU]>], [1, 1]>, 46303231Sdim InstrItinData<IIC_fpu_normal_instr, [InstrStage<1, [LEONFPU]>], [7, 1]>, 47303231Sdim InstrItinData<IIC_fpu_fast_instr, [InstrStage<1, [LEONFPU]>], [7, 1]>, 48303231Sdim InstrItinData<IIC_jmp_or_call, [InstrStage<1, [LEONIU, LEONFPU]>], [2, 1]>, 49303231Sdim InstrItinData<IIC_ldd, [InstrStage<1, [LEONIU, LEONFPU]>], [2, 1]>, 50303231Sdim InstrItinData<IIC_st, [InstrStage<1, [LEONIU, LEONFPU]>], [2, 1]>, 51303231Sdim InstrItinData<IIC_std, [InstrStage<1, [LEONIU, LEONFPU]>], [3, 1]>, 52303231Sdim InstrItinData<IIC_iu_smul, [InstrStage<1, [LEONIU]>], [5, 1]>, 53303231Sdim InstrItinData<IIC_iu_umul, [InstrStage<1, [LEONIU]>], [5, 1]>, 54303231Sdim InstrItinData<IIC_iu_div, [InstrStage<1, [LEONIU]>], [35, 1]>, 55303231Sdim InstrItinData<IIC_ticc, [InstrStage<1, [LEONIU, LEONFPU]>], [4, 1]>, 56303231Sdim InstrItinData<IIC_ldstub, [InstrStage<1, [LEONIU, LEONFPU]>], [3, 1]>, 57303231Sdim InstrItinData<IIC_fpu_muls, [InstrStage<1, [LEONFPU]>], [16, 1]>, 58303231Sdim InstrItinData<IIC_fpu_muld, [InstrStage<1, [LEONFPU]>], [21, 1]>, 59303231Sdim InstrItinData<IIC_fpu_divs, [InstrStage<1, [LEONFPU]>], [20, 1]>, 60303231Sdim InstrItinData<IIC_fpu_divd, [InstrStage<1, [LEONFPU]>], [36, 1]>, 61303231Sdim InstrItinData<IIC_fpu_sqrts, [InstrStage<1, [LEONFPU]>], [37, 1]>, 62303231Sdim InstrItinData<IIC_fpu_sqrtd, [InstrStage<1, [LEONFPU]>], [65, 1]>, 63303231Sdim InstrItinData<IIC_fpu_abs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 64303231Sdim InstrItinData<IIC_fpu_movs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 65303231Sdim InstrItinData<IIC_fpu_negs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 66303231Sdim InstrItinData<IIC_fpu_stod, [InstrStage<1, [LEONFPU]>], [2, 1]> 67303231Sdim]>; 68303231Sdim 69303231Sdimdef LEON3Itineraries : ProcessorItineraries< 70303231Sdim[LEONIU, LEONFPU], [], [ 71303231Sdim InstrItinData<IIC_iu_or_fpu_instr, [InstrStage<1, [LEONIU, LEONFPU]>], [1, 1]>, 72303231Sdim InstrItinData<IIC_iu_instr, [InstrStage<1, [LEONIU]>], [1, 1]>, 73303231Sdim InstrItinData<IIC_fpu_normal_instr, [InstrStage<1, [LEONFPU]>], [7, 1]>, 74303231Sdim InstrItinData<IIC_fpu_fast_instr, [InstrStage<1, [LEONFPU]>], [4, 1]>, 75303231Sdim InstrItinData<IIC_jmp_or_call, [InstrStage<1, [LEONIU, LEONFPU]>], [3, 1]>, 76303231Sdim InstrItinData<IIC_ldd, [InstrStage<1, [LEONIU, LEONFPU]>], [2, 1]>, 77303231Sdim InstrItinData<IIC_st, [InstrStage<1, [LEONIU, LEONFPU]>], [4, 1]>, 78303231Sdim InstrItinData<IIC_std, [InstrStage<1, [LEONIU, LEONFPU]>], [5, 1]>, 79303231Sdim InstrItinData<IIC_iu_smul, [InstrStage<1, [LEONIU]>], [1, 1]>, 80303231Sdim InstrItinData<IIC_iu_umul, [InstrStage<1, [LEONIU]>], [4, 1]>, 81303231Sdim InstrItinData<IIC_iu_div, [InstrStage<1, [LEONIU]>], [35, 1]>, 82303231Sdim InstrItinData<IIC_smac_umac, [InstrStage<1, [LEONIU]>], [2, 1]>, 83303231Sdim InstrItinData<IIC_ticc, [InstrStage<1, [LEONIU, LEONFPU]>], [5, 1]>, 84303231Sdim InstrItinData<IIC_ldstub, [InstrStage<1, [LEONIU, LEONFPU]>], [3, 1]>, 85303231Sdim InstrItinData<IIC_fpu_muls, [InstrStage<1, [LEONFPU]>], [4, 1]>, 86303231Sdim InstrItinData<IIC_fpu_muld, [InstrStage<1, [LEONFPU]>], [4, 1]>, 87303231Sdim InstrItinData<IIC_fpu_divs, [InstrStage<1, [LEONFPU]>], [16, 1]>, 88303231Sdim InstrItinData<IIC_fpu_divd, [InstrStage<1, [LEONFPU]>], [17, 1]>, 89303231Sdim InstrItinData<IIC_fpu_sqrts, [InstrStage<1, [LEONFPU]>], [24, 1]>, 90303231Sdim InstrItinData<IIC_fpu_sqrtd, [InstrStage<1, [LEONFPU]>], [25, 1]>, 91303231Sdim InstrItinData<IIC_fpu_abs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 92303231Sdim InstrItinData<IIC_fpu_movs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 93303231Sdim InstrItinData<IIC_fpu_negs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 94303231Sdim InstrItinData<IIC_fpu_stod, [InstrStage<1, [LEONFPU]>], [4, 1]> 95303231Sdim]>; 96303231Sdim 97303231Sdimdef LEON4Itineraries : ProcessorItineraries< 98303231Sdim[LEONIU, LEONFPU], [], [ 99303231Sdim InstrItinData<IIC_iu_or_fpu_instr, [InstrStage<1, [LEONIU, LEONFPU]>], [1, 1]>, 100303231Sdim InstrItinData<IIC_iu_instr, [InstrStage<1, [LEONIU]>], [1, 1]>, 101303231Sdim InstrItinData<IIC_fpu_normal_instr, [InstrStage<1, [LEONFPU]>], [7, 1]>, 102303231Sdim InstrItinData<IIC_fpu_fast_instr, [InstrStage<1, [LEONFPU]>], [4, 1]>, 103303231Sdim InstrItinData<IIC_jmp_or_call, [InstrStage<1, [LEONIU, LEONFPU]>], [3, 1]>, 104303231Sdim InstrItinData<IIC_ldd, [InstrStage<1, [LEONIU, LEONFPU]>], [1, 1]>, 105303231Sdim InstrItinData<IIC_st, [InstrStage<1, [LEONIU, LEONFPU]>], [1, 1]>, 106303231Sdim InstrItinData<IIC_std, [InstrStage<1, [LEONIU, LEONFPU]>], [1, 1]>, 107303231Sdim InstrItinData<IIC_iu_smul, [InstrStage<1, [LEONIU]>], [1, 1]>, 108303231Sdim InstrItinData<IIC_iu_umul, [InstrStage<1, [LEONIU]>], [4, 1]>, 109303231Sdim InstrItinData<IIC_iu_div, [InstrStage<1, [LEONIU]>], [35, 1]>, 110303231Sdim InstrItinData<IIC_smac_umac, [InstrStage<1, [LEONIU]>], [2, 1]>, 111303231Sdim InstrItinData<IIC_ticc, [InstrStage<1, [LEONIU, LEONFPU]>], [5, 1]>, 112303231Sdim InstrItinData<IIC_ldstub, [InstrStage<1, [LEONIU, LEONFPU]>], [3, 1]>, 113303231Sdim InstrItinData<IIC_fpu_muls, [InstrStage<1, [LEONFPU]>], [4, 1]>, 114303231Sdim InstrItinData<IIC_fpu_muld, [InstrStage<1, [LEONFPU]>], [4, 1]>, 115303231Sdim InstrItinData<IIC_fpu_divs, [InstrStage<1, [LEONFPU]>], [16, 1]>, 116303231Sdim InstrItinData<IIC_fpu_divd, [InstrStage<1, [LEONFPU]>], [17, 1]>, 117303231Sdim InstrItinData<IIC_fpu_sqrts, [InstrStage<1, [LEONFPU]>], [24, 1]>, 118303231Sdim InstrItinData<IIC_fpu_sqrtd, [InstrStage<1, [LEONFPU]>], [25, 1]>, 119303231Sdim InstrItinData<IIC_fpu_abs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 120303231Sdim InstrItinData<IIC_fpu_movs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 121303231Sdim InstrItinData<IIC_fpu_negs, [InstrStage<1, [LEONFPU]>], [2, 1]>, 122303231Sdim InstrItinData<IIC_fpu_stod, [InstrStage<1, [LEONFPU]>], [4, 1]> 123303231Sdim]>; 124