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}}; |