neon.isa (10037:5cac77888310) neon.isa (10196:be0e1724eb39)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2012 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

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

185
186 %(BasicExecDeclare)s
187};
188}};
189
190def template NeonExecDeclare {{
191 template
192 Fault %(class_name)s<%(targs)s>::execute(
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2012 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

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

185
186 %(BasicExecDeclare)s
187};
188}};
189
190def template NeonExecDeclare {{
191 template
192 Fault %(class_name)s<%(targs)s>::execute(
193 %(CPU_exec_context)s *, Trace::InstRecord *) const;
193 CPU_EXEC_CONTEXT *, Trace::InstRecord *) const;
194}};
195
196output header {{
197 template <class T>
198 // Implement a less-than-zero function: ltz()
199 // this function exists because some versions of GCC complain when a
200 // comparison is done between a unsigned variable and 0 and for GCC 4.2
201 // there is no way to disable this warning

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

216 template <>
217 inline bool ltz(int32_t v) { return v < 0; }
218 template <>
219 inline bool ltz(int64_t v) { return v < 0; }
220}};
221
222def template NeonEqualRegExecute {{
223 template <class Element>
194}};
195
196output header {{
197 template <class T>
198 // Implement a less-than-zero function: ltz()
199 // this function exists because some versions of GCC complain when a
200 // comparison is done between a unsigned variable and 0 and for GCC 4.2
201 // there is no way to disable this warning

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

216 template <>
217 inline bool ltz(int32_t v) { return v < 0; }
218 template <>
219 inline bool ltz(int64_t v) { return v < 0; }
220}};
221
222def template NeonEqualRegExecute {{
223 template <class Element>
224 Fault %(class_name)s<Element>::execute(%(CPU_exec_context)s *xc,
224 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *xc,
225 Trace::InstRecord *traceData) const
226 {
227 Fault fault = NoFault;
228 %(op_decl)s;
229 %(op_rd)s;
230
231 const unsigned rCount = %(r_count)d;
232 const unsigned eCount = rCount * sizeof(FloatRegBits) / sizeof(Element);

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

261
262 template<> struct bigger_type_t<int8_t> { typedef int16_t type; };
263 template<> struct bigger_type_t<int16_t> { typedef int32_t type; };
264 template<> struct bigger_type_t<int32_t> { typedef int64_t type; };
265}};
266
267def template NeonUnequalRegExecute {{
268 template <class Element>
225 Trace::InstRecord *traceData) const
226 {
227 Fault fault = NoFault;
228 %(op_decl)s;
229 %(op_rd)s;
230
231 const unsigned rCount = %(r_count)d;
232 const unsigned eCount = rCount * sizeof(FloatRegBits) / sizeof(Element);

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

261
262 template<> struct bigger_type_t<int8_t> { typedef int16_t type; };
263 template<> struct bigger_type_t<int16_t> { typedef int32_t type; };
264 template<> struct bigger_type_t<int32_t> { typedef int64_t type; };
265}};
266
267def template NeonUnequalRegExecute {{
268 template <class Element>
269 Fault %(class_name)s<Element>::execute(%(CPU_exec_context)s *xc,
269 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *xc,
270 Trace::InstRecord *traceData) const
271 {
272 typedef typename bigger_type_t<Element>::type BigElement;
273 Fault fault = NoFault;
274 %(op_decl)s;
275 %(op_rd)s;
276
277 const unsigned rCount = %(r_count)d;

--- 27 unchanged lines hidden ---
270 Trace::InstRecord *traceData) const
271 {
272 typedef typename bigger_type_t<Element>::type BigElement;
273 Fault fault = NoFault;
274 %(op_decl)s;
275 %(op_rd)s;
276
277 const unsigned rCount = %(r_count)d;

--- 27 unchanged lines hidden ---