neon64.isa (11488:4dab8202f32d) neon64.isa (12234:78ece221f9f5)
1// -*- mode: c++ -*-
2
3// Copyright (c) 2012-2013 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

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

162
163 %(BasicExecDeclare)s
164};
165}};
166
167def template NeonXExecDeclare {{
168 template
169 Fault %(class_name)s<%(targs)s>::execute(
1// -*- mode: c++ -*-
2
3// Copyright (c) 2012-2013 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

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

162
163 %(BasicExecDeclare)s
164};
165}};
166
167def template NeonXExecDeclare {{
168 template
169 Fault %(class_name)s<%(targs)s>::execute(
170 CPU_EXEC_CONTEXT *, Trace::InstRecord *) const;
170 ExecContext *, Trace::InstRecord *) const;
171}};
172
173def template NeonXEqualRegOpExecute {{
174 template <class Element>
171}};
172
173def template NeonXEqualRegOpExecute {{
174 template <class Element>
175 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *xc,
175 Fault %(class_name)s<Element>::execute(ExecContext *xc,
176 Trace::InstRecord *traceData) const
177 {
178 Fault fault = NoFault;
179 %(op_decl)s;
180 %(op_rd)s;
181
182 const unsigned rCount = %(r_count)d;
183 const unsigned eCount = rCount * sizeof(FloatRegBits) / sizeof(Element);

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

200 }
201
202 return fault;
203 }
204}};
205
206def template NeonXUnequalRegOpExecute {{
207 template <class Element>
176 Trace::InstRecord *traceData) const
177 {
178 Fault fault = NoFault;
179 %(op_decl)s;
180 %(op_rd)s;
181
182 const unsigned rCount = %(r_count)d;
183 const unsigned eCount = rCount * sizeof(FloatRegBits) / sizeof(Element);

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

200 }
201
202 return fault;
203 }
204}};
205
206def template NeonXUnequalRegOpExecute {{
207 template <class Element>
208 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *xc,
208 Fault %(class_name)s<Element>::execute(ExecContext *xc,
209 Trace::InstRecord *traceData) const
210 {
211 typedef typename bigger_type_t<Element>::type BigElement;
212 Fault fault = NoFault;
213 %(op_decl)s;
214 %(op_rd)s;
215
216 const unsigned rCount = %(r_count)d;

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

270 %(BasicExecDeclare)s
271 %(InitiateAccDeclare)s
272 %(CompleteAccDeclare)s
273 };
274}};
275
276def template NeonLoadExecute64 {{
277 Fault %(class_name)s::execute(
209 Trace::InstRecord *traceData) const
210 {
211 typedef typename bigger_type_t<Element>::type BigElement;
212 Fault fault = NoFault;
213 %(op_decl)s;
214 %(op_rd)s;
215
216 const unsigned rCount = %(r_count)d;

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

270 %(BasicExecDeclare)s
271 %(InitiateAccDeclare)s
272 %(CompleteAccDeclare)s
273 };
274}};
275
276def template NeonLoadExecute64 {{
277 Fault %(class_name)s::execute(
278 CPU_EXEC_CONTEXT *xc, Trace::InstRecord *traceData) const
278 ExecContext *xc, Trace::InstRecord *traceData) const
279 {
280 Addr EA;
281 Fault fault = NoFault;
282
283 %(op_decl)s;
284 %(mem_decl)s;
285 %(op_rd)s;
286 %(ea_code)s;

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

298 }
299
300 return fault;
301 }
302}};
303
304def template NeonLoadInitiateAcc64 {{
305 Fault %(class_name)s::initiateAcc(
279 {
280 Addr EA;
281 Fault fault = NoFault;
282
283 %(op_decl)s;
284 %(mem_decl)s;
285 %(op_rd)s;
286 %(ea_code)s;

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

298 }
299
300 return fault;
301 }
302}};
303
304def template NeonLoadInitiateAcc64 {{
305 Fault %(class_name)s::initiateAcc(
306 CPU_EXEC_CONTEXT *xc, Trace::InstRecord *traceData) const
306 ExecContext *xc, Trace::InstRecord *traceData) const
307 {
308 Addr EA;
309 Fault fault = NoFault;
310
311 %(op_decl)s;
312 %(mem_decl)s;
313 %(op_rd)s;
314 %(ea_code)s;
315
316 if (fault == NoFault) {
317 fault = xc->initiateMemRead(EA, accSize, memAccessFlags);
318 }
319
320 return fault;
321 }
322}};
323
324def template NeonLoadCompleteAcc64 {{
325 Fault %(class_name)s::completeAcc(
307 {
308 Addr EA;
309 Fault fault = NoFault;
310
311 %(op_decl)s;
312 %(mem_decl)s;
313 %(op_rd)s;
314 %(ea_code)s;
315
316 if (fault == NoFault) {
317 fault = xc->initiateMemRead(EA, accSize, memAccessFlags);
318 }
319
320 return fault;
321 }
322}};
323
324def template NeonLoadCompleteAcc64 {{
325 Fault %(class_name)s::completeAcc(
326 PacketPtr pkt, CPU_EXEC_CONTEXT *xc,
327 Trace::InstRecord *traceData) const
326 PacketPtr pkt, ExecContext *xc, Trace::InstRecord *traceData) const
328 {
329 Fault fault = NoFault;
330
331 %(mem_decl)s;
332 %(op_decl)s;
333 %(op_rd)s;
334
335 MemUnion memUnion { { } };

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

344 }
345
346 return fault;
347 }
348}};
349
350def template NeonStoreExecute64 {{
351 Fault %(class_name)s::execute(
327 {
328 Fault fault = NoFault;
329
330 %(mem_decl)s;
331 %(op_decl)s;
332 %(op_rd)s;
333
334 MemUnion memUnion { { } };

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

343 }
344
345 return fault;
346 }
347}};
348
349def template NeonStoreExecute64 {{
350 Fault %(class_name)s::execute(
352 CPU_EXEC_CONTEXT *xc, Trace::InstRecord *traceData) const
351 ExecContext *xc, Trace::InstRecord *traceData) const
353 {
354 Addr EA;
355 Fault fault = NoFault;
356
357 %(op_decl)s;
358 %(mem_decl)s;
359 %(op_rd)s;
360 %(ea_code)s;

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

376 }
377
378 return fault;
379 }
380}};
381
382def template NeonStoreInitiateAcc64 {{
383 Fault %(class_name)s::initiateAcc(
352 {
353 Addr EA;
354 Fault fault = NoFault;
355
356 %(op_decl)s;
357 %(mem_decl)s;
358 %(op_rd)s;
359 %(ea_code)s;

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

375 }
376
377 return fault;
378 }
379}};
380
381def template NeonStoreInitiateAcc64 {{
382 Fault %(class_name)s::initiateAcc(
384 CPU_EXEC_CONTEXT *xc, Trace::InstRecord *traceData) const
383 ExecContext *xc, Trace::InstRecord *traceData) const
385 {
386 Addr EA;
387 Fault fault = NoFault;
388
389 %(op_decl)s;
390 %(mem_decl)s;
391 %(op_rd)s;
392 %(ea_code)s;

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

402 }
403
404 return fault;
405 }
406}};
407
408def template NeonStoreCompleteAcc64 {{
409 Fault %(class_name)s::completeAcc(
384 {
385 Addr EA;
386 Fault fault = NoFault;
387
388 %(op_decl)s;
389 %(mem_decl)s;
390 %(op_rd)s;
391 %(ea_code)s;

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

401 }
402
403 return fault;
404 }
405}};
406
407def template NeonStoreCompleteAcc64 {{
408 Fault %(class_name)s::completeAcc(
410 PacketPtr pkt, CPU_EXEC_CONTEXT *xc,
411 Trace::InstRecord *traceData) const
409 PacketPtr pkt, ExecContext *xc, Trace::InstRecord *traceData) const
412 {
413 return NoFault;
414 }
415}};
416
417def template VMemMultDeclare64 {{
418 class %(class_name)s : public %(base_class)s
419 {

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

500 %(constructor)s;
501 }
502
503 %(BasicExecDeclare)s
504 };
505}};
506
507def template MicroNeonMixExecute64 {{
410 {
411 return NoFault;
412 }
413}};
414
415def template VMemMultDeclare64 {{
416 class %(class_name)s : public %(base_class)s
417 {

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

498 %(constructor)s;
499 }
500
501 %(BasicExecDeclare)s
502 };
503}};
504
505def template MicroNeonMixExecute64 {{
508 Fault %(class_name)s::execute(CPU_EXEC_CONTEXT *xc,
506 Fault %(class_name)s::execute(ExecContext *xc,
509 Trace::InstRecord *traceData) const
510 {
511 Fault fault = NoFault;
512 uint64_t resTemp = 0;
513 resTemp = resTemp;
514 %(op_decl)s;
515 %(op_rd)s;
516
517 %(code)s;
518 if (fault == NoFault)
519 {
520 %(op_wb)s;
521 }
522
523 return fault;
524 }
525}};
507 Trace::InstRecord *traceData) const
508 {
509 Fault fault = NoFault;
510 uint64_t resTemp = 0;
511 resTemp = resTemp;
512 %(op_decl)s;
513 %(op_rd)s;
514
515 %(code)s;
516 if (fault == NoFault)
517 {
518 %(op_wb)s;
519 }
520
521 return fault;
522 }
523}};