neon.isa (12616:4b463b4dc098) neon.isa (13544:0b4e5446167c)
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

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

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;
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

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

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);
219 const unsigned eCount = rCount * sizeof(uint32_t) / sizeof(Element);
220
221 union RegVect {
220
221 union RegVect {
222 FloatRegBits regs[rCount];
222 uint32_t regs[rCount];
223 Element elements[eCount];
224 };
225
226 if (%(predicate_test)s)
227 {
228 %(code)s;
229 if (fault == NoFault)
230 {

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

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;
223 Element elements[eCount];
224 };
225
226 if (%(predicate_test)s)
227 {
228 %(code)s;
229 if (fault == NoFault)
230 {

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

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;
265 const unsigned eCount = rCount * sizeof(FloatRegBits) / sizeof(Element);
265 const unsigned eCount = rCount * sizeof(uint32_t) / sizeof(Element);
266
267 union RegVect {
266
267 union RegVect {
268 FloatRegBits regs[rCount];
268 uint32_t regs[rCount];
269 Element elements[eCount];
270 BigElement bigElements[eCount / 2];
271 };
272
273 union BigRegVect {
269 Element elements[eCount];
270 BigElement bigElements[eCount / 2];
271 };
272
273 union BigRegVect {
274 FloatRegBits regs[2 * rCount];
274 uint32_t regs[2 * rCount];
275 BigElement elements[eCount];
276 };
277
278 if (%(predicate_test)s)
279 {
280 %(code)s;
281 if (fault == NoFault)
282 {
283 %(op_wb)s;
284 }
285 } else {
286 xc->setPredicate(false);
287 }
288
289 return fault;
290 }
291}};
275 BigElement elements[eCount];
276 };
277
278 if (%(predicate_test)s)
279 {
280 %(code)s;
281 if (fault == NoFault)
282 {
283 %(op_wb)s;
284 }
285 } else {
286 xc->setPredicate(false);
287 }
288
289 return fault;
290 }
291}};