Deleted Added
sdiff udiff text old ( 10037:5cac77888310 ) new ( 10339:53278be85b40 )
full compact
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
9// to a hardware implementation of the functionality of the software
10// licensed hereunder. You may use the software subject to the license
11// terms below provided that you ensure that this notice is replicated

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

158 NeonLoadInitiateAcc64.subst(loadIop) + \
159 NeonLoadCompleteAcc64.subst(loadIop) + \
160 NeonStoreExecute64.subst(storeIop) + \
161 NeonStoreInitiateAcc64.subst(storeIop) + \
162 NeonStoreCompleteAcc64.subst(storeIop)
163 header_output += MicroNeonMemDeclare64.subst(loadIop) + \
164 MicroNeonMemDeclare64.subst(storeIop)
165
166 def mkMarshalMicroOp(name, Name):
167 global header_output, decoder_output, exec_output
168
169 getInputCodeOp1L = ''
170 for v in range(4):
171 for p in range(4):
172 getInputCodeOp1L += '''
173 writeVecElem(&input[%(v)d], (XReg) AA64FpOp1P%(p)dV%(v)d_uw,
174 %(p)d, 0x2);
175 ''' % { 'v' : v, 'p' : p }
176
177 getInputCodeOp1S = ''
178 for v in range(4):
179 for p in range(4):
180 getInputCodeOp1S += '''
181 writeVecElem(&input[%(v)d], (XReg) AA64FpOp1P%(p)dV%(v)dS_uw,
182 %(p)d, 0x2);
183 ''' % { 'v' : v, 'p' : p }
184
185 if name == 'deint_neon_uop':
186

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

257 AA64FpDestP%(p)dV1L_uw = (uint32_t) readVecElem(temp,
258 %(p)d, 0x2);
259 ''' % { 'p' : p }
260 eCode += '''
261 }
262 '''
263
264 iop = InstObjParams(name, Name, 'MicroNeonMixOp64',
265 { 'code' : eCode }, ['IsMicroop'])
266 header_output += MicroNeonMixDeclare64.subst(iop)
267 exec_output += MicroNeonMixExecute64.subst(iop)
268
269 elif name == 'int_neon_uop':
270
271 eCode = '''
272 VReg input[4]; // input data from arch. SIMD regs
273 VReg output[2]; // output data to scratch area

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

318 for v in range(2):
319 for p in range(4):
320 eCode += '''
321 AA64FpDestP%(p)dV%(v)d_uw = (uint32_t) readVecElem(
322 output[%(v)d], %(p)d, 0x2);
323 ''' % { 'v': v, 'p': p}
324
325 iop = InstObjParams(name, Name, 'MicroNeonMixOp64',
326 { 'code' : eCode }, ['IsMicroop'])
327 header_output += MicroNeonMixDeclare64.subst(iop)
328 exec_output += MicroNeonMixExecute64.subst(iop)
329
330 elif name == 'unpack_neon_uop':
331
332 eCode = '''
333 VReg input[4]; //input data from scratch area
334 VReg output[2]; //output data to arch. SIMD regs

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

438
439 iop = InstObjParams(name, Name, 'MicroNeonMixLaneOp64',
440 { 'code' : eCode }, ['IsMicroop'])
441 header_output += MicroNeonMixLaneDeclare64.subst(iop)
442 exec_output += MicroNeonMixExecute64.subst(iop)
443
444 # Generate instructions
445 mkMemAccMicroOp('mem_neon_uop')
446 mkMarshalMicroOp('deint_neon_uop', 'MicroDeintNeon64')
447 mkMarshalMicroOp('int_neon_uop', 'MicroIntNeon64')
448 mkMarshalMicroOp('unpack_neon_uop', 'MicroUnpackNeon64')
449 mkMarshalMicroOp('pack_neon_uop', 'MicroPackNeon64')
450
451}};
452
453let {{
454
455 iop = InstObjParams('vldmult64', 'VldMult64', 'VldMultOp64', '', [])

--- 16 unchanged lines hidden ---