neon64.isa (12236:126ac9da6050) neon64.isa (12616:4b463b4dc098)
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
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;
61 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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
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;
82 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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
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;
102 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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
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;
122 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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
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;
143 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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
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;
163 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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
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;
270 Fault execute(ExecContext *, Trace::InstRecord *) const override;
271 Fault initiateAcc(ExecContext *, Trace::InstRecord *) const override;
272 Fault completeAcc(PacketPtr, ExecContext *,
273 Trace::InstRecord *) const override;
273 };
274}};
275
276def template NeonLoadExecute64 {{
277 Fault %(class_name)s::execute(
278 ExecContext *xc, Trace::InstRecord *traceData) const
279 {
280 Addr EA;

--- 191 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
274 };
275}};
276
277def template NeonLoadExecute64 {{
278 Fault %(class_name)s::execute(
279 ExecContext *xc, Trace::InstRecord *traceData) const
280 {
281 Addr EA;

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

473 uint8_t _step) :
474 %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
475 _dest, _op1, _eSize, _dataSize, _numStructElems,
476 _numRegs, _step)
477 {
478 %(constructor)s;
479 }
480
480 Fault execute(ExecContext *, Trace::InstRecord *) const;
481 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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
482 };
483}};
484
485def template MicroNeonMixLaneDeclare64 {{
486 class %(class_name)s : public %(base_class)s
487 {
488 public:
489 %(class_name)s(ExtMachInst machInst, RegIndex _dest, RegIndex _op1,
490 uint8_t _eSize, uint8_t _dataSize,
491 uint8_t _numStructElems, uint8_t _lane, uint8_t _step,
492 bool _replicate = false) :
493 %(base_class)s("%(mnemonic)s", machInst, %(op_class)s,
494 _dest, _op1, _eSize, _dataSize, _numStructElems,
495 _lane, _step, _replicate)
496 {
497 %(constructor)s;
498 }
499
499 Fault execute(ExecContext *, Trace::InstRecord *) const;
500 Fault execute(ExecContext *, Trace::InstRecord *) const override;
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 ---
501 };
502}};
503
504def template MicroNeonMixExecute64 {{
505 Fault %(class_name)s::execute(ExecContext *xc,
506 Trace::InstRecord *traceData) const
507 {
508 Fault fault = NoFault;

--- 14 unchanged lines hidden ---