base.isa (4539:6eeeea62b7c4) base.isa (4561:ade4960f0832)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007 The Hewlett-Packard Development Company
4// All rights reserved.
5//
6// Redistribution and use of this software in source and binary forms,
7// with or without modification, are permitted provided that the
8// following conditions are met:

--- 115 unchanged lines hidden (view full) ---

124 return text
125
126 def getAllocator(self, mnemonic, *microFlags):
127 return 'new %s(machInst, %s)' % (self.className, mnemonic, self.microFlagsText(microFlags))
128}};
129
130//////////////////////////////////////////////////////////////////////////
131//
1// -*- mode:c++ -*-
2
3// Copyright (c) 2007 The Hewlett-Packard Development Company
4// All rights reserved.
5//
6// Redistribution and use of this software in source and binary forms,
7// with or without modification, are permitted provided that the
8// following conditions are met:

--- 115 unchanged lines hidden (view full) ---

124 return text
125
126 def getAllocator(self, mnemonic, *microFlags):
127 return 'new %s(machInst, %s)' % (self.className, mnemonic, self.microFlagsText(microFlags))
128}};
129
130//////////////////////////////////////////////////////////////////////////
131//
132// LdStOp Microop templates
133//
134//////////////////////////////////////////////////////////////////////////
135
136def template MicroLdStOpDeclare {{
137 class %(class_name)s : public X86MicroopBase
138 {
139 protected:
140 const uint8_t scale;
141 const RegIndex index;
142 const RegIndex base;
143 const uint64_t disp;
144 const uint8_t segment;
145 const RegIndex data;
146 const uint8_t dataSize;
147 const uint8_t addressSize;
148 void buildMe();
149
150 public:
151 %(class_name)s(ExtMachInst _machInst,
152 const char * instMnem,
153 bool isMicro, bool isDelayed, bool isFirst, bool isLast,
154 uint8_t _scale, RegIndex _index, RegIndex _base,
155 uint64_t _disp, uint8_t _segment,
156 RegIndex _data,
157 uint8_t _dataSize, uint8_t _addressSize);
158
159 %(class_name)s(ExtMachInst _machInst,
160 const char * instMnem,
161 uint8_t _scale, RegIndex _index, RegIndex _base,
162 uint64_t _disp, uint8_t _segment,
163 RegIndex _data,
164 uint8_t _dataSize, uint8_t _addressSize);
165
166 %(BasicExecDeclare)s
167 };
168}};
169
170def template MicroLdStOpConstructor {{
171
172 inline void %(class_name)s::buildMe()
173 {
174 %(constructor)s;
175 }
176
177 inline %(class_name)s::%(class_name)s(
178 ExtMachInst machInst, const char * instMnem,
179 uint8_t _scale, RegIndex _index, RegIndex _base,
180 uint64_t _disp, uint8_t _segment,
181 RegIndex _data,
182 uint8_t _dataSize, uint8_t _addressSize) :
183 %(base_class)s(machInst, "%(mnemonic)s", instMnem,
184 false, false, false, false, %(op_class)s),
185 scale(_scale), index(_index), base(_base),
186 disp(_disp), segment(_segment),
187 data(_data),
188 dataSize(_dataSize), addressSize(_addressSize)
189 {
190 buildMe();
191 }
192
193 inline %(class_name)s::%(class_name)s(
194 ExtMachInst machInst, const char * instMnem,
195 bool isMicro, bool isDelayed, bool isFirst, bool isLast,
196 uint8_t _scale, RegIndex _index, RegIndex _base,
197 uint64_t _disp, uint8_t segment,
198 RegIndex data,
199 uint8_t dataSize, uint8_t addressSize) :
200 %(base_class)s(machInst, "%(mnemonic)s", instMnem,
201 isMicro, isDelayed, isFirst, isLast, %(op_class)s),
202 scale(_scale), index(_index), base(_base),
203 disp(_disp), segment(_segment),
204 data(_data),
205 dataSize(_dataSize), addressSize(_addressSize)
206 {
207 buildMe();
208 }
209}};
210
211//////////////////////////////////////////////////////////////////////////
212//
213// FpOp Microop templates
214//
215//////////////////////////////////////////////////////////////////////////
216
217//TODO Actually write an fp microop base class.
132// FpOp Microop templates
133//
134//////////////////////////////////////////////////////////////////////////
135
136//TODO Actually write an fp microop base class.