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