neon.isa (11513:cb3a401c45d7) neon.isa (12234:78ece221f9f5)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2012, 2016 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

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

172
173 %(BasicExecDeclare)s
174};
175}};
176
177def template NeonExecDeclare {{
178 template
179 Fault %(class_name)s<%(targs)s>::execute(
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2012, 2016 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

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

172
173 %(BasicExecDeclare)s
174};
175}};
176
177def template NeonExecDeclare {{
178 template
179 Fault %(class_name)s<%(targs)s>::execute(
180 CPU_EXEC_CONTEXT *, Trace::InstRecord *) const;
180 ExecContext *, Trace::InstRecord *) const;
181}};
182
183output header {{
184 template <class T>
185 // Implement a less-than-zero function: ltz()
186 // this function exists because some versions of GCC complain when a
187 // comparison is done between a unsigned variable and 0 and for GCC 4.2
188 // there is no way to disable this warning

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

203 template <>
204 inline bool ltz(int32_t v) { return v < 0; }
205 template <>
206 inline bool ltz(int64_t v) { return v < 0; }
207}};
208
209def template NeonEqualRegExecute {{
210 template <class Element>
181}};
182
183output header {{
184 template <class T>
185 // Implement a less-than-zero function: ltz()
186 // this function exists because some versions of GCC complain when a
187 // comparison is done between a unsigned variable and 0 and for GCC 4.2
188 // there is no way to disable this warning

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

203 template <>
204 inline bool ltz(int32_t v) { return v < 0; }
205 template <>
206 inline bool ltz(int64_t v) { return v < 0; }
207}};
208
209def template NeonEqualRegExecute {{
210 template <class Element>
211 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *xc,
211 Fault %(class_name)s<Element>::execute(ExecContext *xc,
212 Trace::InstRecord *traceData) const
213 {
214 Fault fault = NoFault;
215 %(op_decl)s;
216 %(op_rd)s;
217
218 const unsigned rCount = %(r_count)d;
219 const unsigned eCount = rCount * sizeof(FloatRegBits) / sizeof(Element);

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

248
249 template<> struct bigger_type_t<int8_t> { typedef int16_t type; };
250 template<> struct bigger_type_t<int16_t> { typedef int32_t type; };
251 template<> struct bigger_type_t<int32_t> { typedef int64_t type; };
252}};
253
254def template NeonUnequalRegExecute {{
255 template <class Element>
212 Trace::InstRecord *traceData) const
213 {
214 Fault fault = NoFault;
215 %(op_decl)s;
216 %(op_rd)s;
217
218 const unsigned rCount = %(r_count)d;
219 const unsigned eCount = rCount * sizeof(FloatRegBits) / sizeof(Element);

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

248
249 template<> struct bigger_type_t<int8_t> { typedef int16_t type; };
250 template<> struct bigger_type_t<int16_t> { typedef int32_t type; };
251 template<> struct bigger_type_t<int32_t> { typedef int64_t type; };
252}};
253
254def template NeonUnequalRegExecute {{
255 template <class Element>
256 Fault %(class_name)s<Element>::execute(CPU_EXEC_CONTEXT *xc,
256 Fault %(class_name)s<Element>::execute(ExecContext *xc,
257 Trace::InstRecord *traceData) const
258 {
259 typedef typename bigger_type_t<Element>::type BigElement;
260 Fault fault = NoFault;
261 %(op_decl)s;
262 %(op_rd)s;
263
264 const unsigned rCount = %(r_count)d;

--- 27 unchanged lines hidden ---
257 Trace::InstRecord *traceData) const
258 {
259 typedef typename bigger_type_t<Element>::type BigElement;
260 Fault fault = NoFault;
261 %(op_decl)s;
262 %(op_rd)s;
263
264 const unsigned rCount = %(r_count)d;

--- 27 unchanged lines hidden ---