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 ExecContext *, Trace::InstRecord *) const; |
171}}; 172 173def template NeonXEqualRegOpExecute {{ 174 template <class Element> |
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> |
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( |
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( |
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( |
326 PacketPtr pkt, ExecContext *xc, Trace::InstRecord *traceData) const |
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( |
351 ExecContext *xc, Trace::InstRecord *traceData) const |
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( |
383 ExecContext *xc, Trace::InstRecord *traceData) const |
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( |
409 PacketPtr pkt, ExecContext *xc, Trace::InstRecord *traceData) const |
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 {{ |
506 Fault %(class_name)s::execute(ExecContext *xc, |
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}}; |