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 --- 44 unchanged lines hidden (view full) --- 53 %(class_name)s(ExtMachInst machInst, 54 IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2) 55 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 56 _dest, _op1, _op2) 57 { 58 %(constructor)s; 59 } 60 |
61 Fault execute(ExecContext *, Trace::InstRecord *) const; |
62}; 63}}; 64 65def template NeonX2RegImmOpDeclare {{ 66template <class _Element> 67class %(class_name)s : public %(base_class)s 68{ 69 protected: --- 4 unchanged lines hidden (view full) --- 74 IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _op2, 75 uint64_t _imm) 76 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 77 _dest, _op1, _op2, _imm) 78 { 79 %(constructor)s; 80 } 81 |
82 Fault execute(ExecContext *, Trace::InstRecord *) const; |
83}; 84}}; 85 86def template NeonX1RegOpDeclare {{ 87template <class _Element> 88class %(class_name)s : public %(base_class)s 89{ 90 protected: 91 typedef _Element Element; 92 public: 93 // Constructor 94 %(class_name)s(ExtMachInst machInst, 95 IntRegIndex _dest, IntRegIndex _op1) 96 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 97 _dest, _op1) 98 { 99 %(constructor)s; 100 } 101 |
102 Fault execute(ExecContext *, Trace::InstRecord *) const; |
103}; 104}}; 105 106def template NeonX1RegImmOpDeclare {{ 107template <class _Element> 108class %(class_name)s : public %(base_class)s 109{ 110 protected: 111 typedef _Element Element; 112 public: 113 // Constructor 114 %(class_name)s(ExtMachInst machInst, 115 IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm) 116 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 117 _dest, _op1, _imm) 118 { 119 %(constructor)s; 120 } 121 |
122 Fault execute(ExecContext *, Trace::InstRecord *) const; |
123}; 124}}; 125 126def template NeonX1Reg2ImmOpDeclare {{ 127template <class _Element> 128class %(class_name)s : public %(base_class)s 129{ 130 protected: --- 4 unchanged lines hidden (view full) --- 135 IntRegIndex _dest, IntRegIndex _op1, uint64_t _imm1, 136 uint64_t _imm2) 137 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 138 _dest, _op1, _imm1, _imm2) 139 { 140 %(constructor)s; 141 } 142 |
143 Fault execute(ExecContext *, Trace::InstRecord *) const; |
144}; 145}}; 146 147def template NeonX1RegImmOnlyOpDeclare {{ 148template <class _Element> 149class %(class_name)s : public %(base_class)s 150{ 151 protected: 152 typedef _Element Element; 153 public: 154 // Constructor 155 %(class_name)s(ExtMachInst machInst, 156 IntRegIndex _dest, uint64_t _imm) 157 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 158 _dest, _imm) 159 { 160 %(constructor)s; 161 } 162 |
163 Fault execute(ExecContext *, Trace::InstRecord *) const; |
164}; 165}}; 166 167def template NeonXExecDeclare {{ 168 template 169 Fault %(class_name)s<%(targs)s>::execute( 170 ExecContext *, Trace::InstRecord *) const; 171}}; --- 90 unchanged lines hidden (view full) --- 262 : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, _dest, 263 _ura, _imm), 264 baseIsSP(_baseIsSP), accSize(_accSize), eSize(_eSize) 265 { 266 memAccessFlags |= extraMemFlags; 267 %(constructor)s; 268 } 269 |
270 Fault execute(ExecContext *, Trace::InstRecord *) const; 271 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const; 272 Fault completeAcc(PacketPtr, ExecContext *, Trace::InstRecord *) const; |
273 }; 274}}; 275 276def template NeonLoadExecute64 {{ 277 Fault %(class_name)s::execute( 278 ExecContext *xc, Trace::InstRecord *traceData) const 279 { 280 Addr EA; --- 134 unchanged lines hidden (view full) --- 415def template VMemMultDeclare64 {{ 416 class %(class_name)s : public %(base_class)s 417 { 418 public: 419 // Constructor 420 %(class_name)s(ExtMachInst machInst, RegIndex rn, RegIndex vd, 421 RegIndex rm, uint8_t eSize, uint8_t dataSize, 422 uint8_t numStructElems, uint8_t numRegs, bool wb); |
423 }; 424}}; 425 426def template VMemSingleDeclare64 {{ 427 class %(class_name)s : public %(base_class)s 428 { 429 public: 430 // Constructor 431 %(class_name)s(ExtMachInst machInst, RegIndex rn, RegIndex vd, 432 RegIndex rm, uint8_t eSize, uint8_t dataSize, 433 uint8_t numStructElems, uint8_t index, bool wb, 434 bool replicate = false); |
435 }; 436}}; 437 438def template VMemMultConstructor64 {{ 439 %(class_name)s::%(class_name)s( 440 ExtMachInst machInst, RegIndex rn, RegIndex vd, RegIndex rm, 441 uint8_t _eSize, uint8_t _dataSize, uint8_t _numStructElems, 442 uint8_t _numRegs, bool _wb) : --- 29 unchanged lines hidden (view full) --- 472 uint8_t _step) : 473 %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 474 _dest, _op1, _eSize, _dataSize, _numStructElems, 475 _numRegs, _step) 476 { 477 %(constructor)s; 478 } 479 |
480 Fault execute(ExecContext *, Trace::InstRecord *) const; |
481 }; 482}}; 483 484def template MicroNeonMixLaneDeclare64 {{ 485 class %(class_name)s : public %(base_class)s 486 { 487 public: 488 %(class_name)s(ExtMachInst machInst, RegIndex _dest, RegIndex _op1, 489 uint8_t _eSize, uint8_t _dataSize, 490 uint8_t _numStructElems, uint8_t _lane, uint8_t _step, 491 bool _replicate = false) : 492 %(base_class)s("%(mnemonic)s", machInst, %(op_class)s, 493 _dest, _op1, _eSize, _dataSize, _numStructElems, 494 _lane, _step, _replicate) 495 { 496 %(constructor)s; 497 } 498 |
499 Fault execute(ExecContext *, Trace::InstRecord *) const; |
500 }; 501}}; 502 503def template MicroNeonMixExecute64 {{ 504 Fault %(class_name)s::execute(ExecContext *xc, 505 Trace::InstRecord *traceData) const 506 { 507 Fault fault = NoFault; --- 14 unchanged lines hidden --- |