neon64.isa (10037:5cac77888310) neon64.isa (10196:be0e1724eb39)
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)s *, Trace::InstRecord *) const;
170 CPU_EXEC_CONTEXT *, 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)s *xc,
175 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *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)s *xc,
208 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *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)s *xc, Trace::InstRecord *traceData) const
278 CPU_EXEC_CONTEXT *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)s *xc, Trace::InstRecord *traceData) const
306 CPU_EXEC_CONTEXT *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;

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

321 }
322
323 return fault;
324 }
325}};
326
327def template NeonLoadCompleteAcc64 {{
328 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;

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

321 }
322
323 return fault;
324 }
325}};
326
327def template NeonLoadCompleteAcc64 {{
328 Fault %(class_name)s::completeAcc(
329 PacketPtr pkt, %(CPU_exec_context)s *xc,
329 PacketPtr pkt, CPU_EXEC_CONTEXT *xc,
330 Trace::InstRecord *traceData) const
331 {
332 Fault fault = NoFault;
333
334 %(mem_decl)s;
335 %(op_decl)s;
336 %(op_rd)s;
337

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

346 }
347
348 return fault;
349 }
350}};
351
352def template NeonStoreExecute64 {{
353 Fault %(class_name)s::execute(
330 Trace::InstRecord *traceData) const
331 {
332 Fault fault = NoFault;
333
334 %(mem_decl)s;
335 %(op_decl)s;
336 %(op_rd)s;
337

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

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

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

378 }
379
380 return fault;
381 }
382}};
383
384def template NeonStoreInitiateAcc64 {{
385 Fault %(class_name)s::initiateAcc(
355 {
356 Addr EA;
357 Fault fault = NoFault;
358
359 %(op_decl)s;
360 %(mem_decl)s;
361 %(op_rd)s;
362 %(ea_code)s;

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

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

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

404 }
405
406 return fault;
407 }
408}};
409
410def template NeonStoreCompleteAcc64 {{
411 Fault %(class_name)s::completeAcc(
387 {
388 Addr EA;
389 Fault fault = NoFault;
390
391 %(op_decl)s;
392 %(mem_decl)s;
393 %(op_rd)s;
394 %(ea_code)s;

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

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

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

502 %(constructor)s;
503 }
504
505 %(BasicExecDeclare)s
506 };
507}};
508
509def template MicroNeonMixExecute64 {{
413 Trace::InstRecord *traceData) const
414 {
415 return NoFault;
416 }
417}};
418
419def template VMemMultDeclare64 {{
420 class %(class_name)s : public %(base_class)s

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

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