Deleted Added
sdiff udiff text old ( 7176:94f0a9ac9bbc ) new ( 7639:8c09b7ff5b57 )
full compact
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating
9// to a hardware implementation of the functionality of the software
10// licensed hereunder. You may use the software subject to the license
11// terms below provided that you ensure that this notice is replicated
12// unmodified and in its entirety in all distributions of the software,
13// modified or unmodified, in source code or in binary form.
14//
15// Copyright (c) 2007-2008 The Florida State University
16// All rights reserved.
17//
18// Redistribution and use in source and binary forms, with or without
19// modification, are permitted provided that the following conditions are
20// met: redistributions of source code must retain the above copyright
21// notice, this list of conditions and the following disclaimer;
22// redistributions in binary form must reproduce the above copyright
23// notice, this list of conditions and the following disclaimer in the
24// documentation and/or other materials provided with the distribution;
25// neither the name of the copyright holders nor the names of its
26// contributors may be used to endorse or promote products derived from
27// this software without specific prior written permission.
28//
29// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40//
41// Authors: Stephen Hines
42// Gabe Black
43
44////////////////////////////////////////////////////////////////////
45//
46// Load/store microops
47//
48
49def template MicroMemDeclare {{
50 class %(class_name)s : public %(base_class)s
51 {
52 public:
53 %(class_name)s(ExtMachInst machInst,
54 RegIndex _ura, RegIndex _urb, bool _up,
55 uint8_t _imm);
56 %(BasicExecDeclare)s
57 %(InitiateAccDeclare)s
58 %(CompleteAccDeclare)s
59 };
60}};
61
62def template MicroMemConstructor {{
63 %(class_name)s::%(class_name)s(ExtMachInst machInst,
64 RegIndex _ura,
65 RegIndex _urb,
66 bool _up,
67 uint8_t _imm)
68 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
69 _ura, _urb, _up, _imm)
70 {
71 %(constructor)s;
72 }
73}};
74
75////////////////////////////////////////////////////////////////////
76//
77// Integer = Integer op Immediate microops
78//
79
80def template MicroIntDeclare {{
81 class %(class_name)s : public %(base_class)s
82 {
83 public:
84 %(class_name)s(ExtMachInst machInst,
85 RegIndex _ura, RegIndex _urb,
86 uint8_t _imm);
87 %(BasicExecDeclare)s
88 };
89}};
90
91def template MicroIntConstructor {{
92 %(class_name)s::%(class_name)s(ExtMachInst machInst,
93 RegIndex _ura,
94 RegIndex _urb,
95 uint8_t _imm)
96 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
97 _ura, _urb, _imm)
98 {
99 %(constructor)s;
100 }
101}};
102
103////////////////////////////////////////////////////////////////////
104//
105// Macro Memory-format instructions
106//
107
108def template MacroMemDeclare {{
109/**
110 * Static instructions class for a store multiple instruction
111 */
112class %(class_name)s : public %(base_class)s
113{
114 public:
115 // Constructor
116 %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
117 bool index, bool up, bool user, bool writeback, bool load,
118 uint32_t reglist);
119 %(BasicExecPanic)s
120};
121}};
122
123def template MacroMemConstructor {{
124%(class_name)s::%(class_name)s(ExtMachInst machInst, IntRegIndex rn,
125 bool index, bool up, bool user, bool writeback, bool load,
126 uint32_t reglist)
127 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, rn,
128 index, up, user, writeback, load, reglist)
129{
130 %(constructor)s;
131}
132
133}};
134
135def template MacroVFPMemDeclare {{
136/**
137 * Static instructions class for a store multiple instruction
138 */
139class %(class_name)s : public %(base_class)s
140{
141 public:
142 // Constructor
143 %(class_name)s(ExtMachInst machInst, IntRegIndex rn,
144 RegIndex vd, bool single, bool up, bool writeback,
145 bool load, uint32_t offset);
146 %(BasicExecPanic)s
147};
148}};
149
150def template MacroVFPMemConstructor {{
151%(class_name)s::%(class_name)s(ExtMachInst machInst, IntRegIndex rn,
152 RegIndex vd, bool single, bool up, bool writeback, bool load,
153 uint32_t offset)
154 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, rn,
155 vd, single, up, writeback, load, offset)
156{
157 %(constructor)s;
158}
159
160}};