operands.isa (13596:5a0cd4c66ca0) operands.isa (13603:203e36327db9)
1// -*- mode:c++ -*-
2// Copyright (c) 2010-2014, 2016 ARM Limited
3// All rights reserved
4//
5// The license below extends only to copyright in the software and shall
6// not be construed as granting a license to any other intellectual
7// property including but not limited to intellectual property relating
8// to a hardware implementation of the functionality of the software

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

255 'OptCondCodesV': ccReg(
256 '''((condCode == COND_VS || condCode == COND_VC ||
257 condCode == COND_GE || condCode == COND_LT ||
258 condCode == COND_GT || condCode == COND_LE) ?
259 CCREG_V : CCREG_ZERO)'''),
260 'FpCondCodes': ccReg('CCREG_FP'),
261
262 #Abstracted floating point reg operands
1// -*- mode:c++ -*-
2// Copyright (c) 2010-2014, 2016 ARM Limited
3// All rights reserved
4//
5// The license below extends only to copyright in the software and shall
6// not be construed as granting a license to any other intellectual
7// property including but not limited to intellectual property relating
8// to a hardware implementation of the functionality of the software

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

255 'OptCondCodesV': ccReg(
256 '''((condCode == COND_VS || condCode == COND_VC ||
257 condCode == COND_GE || condCode == COND_LT ||
258 condCode == COND_GT || condCode == COND_LE) ?
259 CCREG_V : CCREG_ZERO)'''),
260 'FpCondCodes': ccReg('CCREG_FP'),
261
262 #Abstracted floating point reg operands
263 'FpDest': floatReg('(dest + 0)'),
264 'FpDestP0': floatReg('(dest + 0)'),
265 'FpDestP1': floatReg('(dest + 1)'),
266 'FpDestP2': floatReg('(dest + 2)'),
267 'FpDestP3': floatReg('(dest + 3)'),
268 'FpDestP4': floatReg('(dest + 4)'),
269 'FpDestP5': floatReg('(dest + 5)'),
270 'FpDestP6': floatReg('(dest + 6)'),
271 'FpDestP7': floatReg('(dest + 7)'),
272 'FpDestS0P0': floatReg('(dest + step * 0 + 0)'),
273 'FpDestS0P1': floatReg('(dest + step * 0 + 1)'),
274 'FpDestS1P0': floatReg('(dest + step * 1 + 0)'),
275 'FpDestS1P1': floatReg('(dest + step * 1 + 1)'),
276 'FpDestS2P0': floatReg('(dest + step * 2 + 0)'),
277 'FpDestS2P1': floatReg('(dest + step * 2 + 1)'),
278 'FpDestS3P0': floatReg('(dest + step * 3 + 0)'),
279 'FpDestS3P1': floatReg('(dest + step * 3 + 1)'),
263 'FpDest': vectorElem('dest / 4', 'dest % 4'),
264 'FpDestP0': vectorElem('dest / 4', '(dest % 4) + 0'),
265 'FpDestP1': vectorElem('dest / 4', '(dest % 4) + 1'),
266 'FpDestP2': vectorElem('dest / 4', '(dest % 4) + 2'),
267 'FpDestP3': vectorElem('dest / 4', '(dest % 4) + 3'),
268 'FpDestP4': vectorElem('(dest / 4) + 1', '(dest % 4) + 0'),
269 'FpDestP5': vectorElem('(dest / 4) + 1', '(dest % 4) + 1'),
270 'FpDestP6': vectorElem('(dest / 4) + 1', '(dest % 4) + 2'),
271 'FpDestP7': vectorElem('(dest / 4) + 1', '(dest % 4) + 3'),
280
272
281 'FpDest2': floatReg('(dest2 + 0)'),
282 'FpDest2P0': floatReg('(dest2 + 0)'),
283 'FpDest2P1': floatReg('(dest2 + 1)'),
284 'FpDest2P2': floatReg('(dest2 + 2)'),
285 'FpDest2P3': floatReg('(dest2 + 3)'),
273 'FpDestS0P0': vectorElem(
274 '(dest + step * 0 + 0) / 4', '(dest + step * 0 + 0) % 4'),
275 'FpDestS0P1': vectorElem(
276 '(dest + step * 0 + 1) / 4', '(dest + step * 0 + 1) % 4'),
277 'FpDestS1P0': vectorElem(
278 '(dest + step * 1 + 0) / 4', '(dest + step * 1 + 0) % 4'),
279 'FpDestS1P1': vectorElem(
280 '(dest + step * 1 + 1) / 4', '(dest + step * 1 + 1) % 4'),
281 'FpDestS2P0': vectorElem(
282 '(dest + step * 2 + 0) / 4', '(dest + step * 2 + 0) % 4'),
283 'FpDestS2P1': vectorElem(
284 '(dest + step * 2 + 1) / 4', '(dest + step * 2 + 1) % 4'),
285 'FpDestS3P0': vectorElem(
286 '(dest + step * 3 + 0) / 4', '(dest + step * 3 + 0) % 4'),
287 'FpDestS3P1': vectorElem(
288 '(dest + step * 3 + 1) / 4', '(dest + step * 3 + 1) % 4'),
286
289
287 'FpOp1': floatReg('(op1 + 0)'),
288 'FpOp1P0': floatReg('(op1 + 0)'),
289 'FpOp1P1': floatReg('(op1 + 1)'),
290 'FpOp1P2': floatReg('(op1 + 2)'),
291 'FpOp1P3': floatReg('(op1 + 3)'),
292 'FpOp1P4': floatReg('(op1 + 4)'),
293 'FpOp1P5': floatReg('(op1 + 5)'),
294 'FpOp1P6': floatReg('(op1 + 6)'),
295 'FpOp1P7': floatReg('(op1 + 7)'),
296 'FpOp1S0P0': floatReg('(op1 + step * 0 + 0)'),
297 'FpOp1S0P1': floatReg('(op1 + step * 0 + 1)'),
298 'FpOp1S1P0': floatReg('(op1 + step * 1 + 0)'),
299 'FpOp1S1P1': floatReg('(op1 + step * 1 + 1)'),
300 'FpOp1S2P0': floatReg('(op1 + step * 2 + 0)'),
301 'FpOp1S2P1': floatReg('(op1 + step * 2 + 1)'),
302 'FpOp1S3P0': floatReg('(op1 + step * 3 + 0)'),
303 'FpOp1S3P1': floatReg('(op1 + step * 3 + 1)'),
290 'FpDest2': vectorElem('dest2 / 4', 'dest2 % 4'),
291 'FpDest2P0': vectorElem('dest2 / 4', '(dest2 % 4) + 0'),
292 'FpDest2P1': vectorElem('dest2 / 4', '(dest2 % 4) + 1'),
293 'FpDest2P2': vectorElem('dest2 / 4', '(dest2 % 4) + 2'),
294 'FpDest2P3': vectorElem('dest2 / 4', '(dest2 % 4) + 3'),
304
295
305 'FpOp2': floatReg('(op2 + 0)'),
306 'FpOp2P0': floatReg('(op2 + 0)'),
307 'FpOp2P1': floatReg('(op2 + 1)'),
308 'FpOp2P2': floatReg('(op2 + 2)'),
309 'FpOp2P3': floatReg('(op2 + 3)'),
296 'FpOp1': vectorElem('op1 / 4', 'op1 % 4'),
297 'FpOp1P0': vectorElem('op1 / 4', '(op1 % 4) + 0'),
298 'FpOp1P1': vectorElem('op1 / 4', '(op1 % 4) + 1'),
299 'FpOp1P2': vectorElem('op1 / 4', '(op1 % 4) + 2'),
300 'FpOp1P3': vectorElem('op1 / 4', '(op1 % 4) + 3'),
301 'FpOp1P4': vectorElem('(op1 / 4) + 1', '(op1 % 4) + 0'),
302 'FpOp1P5': vectorElem('(op1 / 4) + 1', '(op1 % 4) + 1'),
303 'FpOp1P6': vectorElem('(op1 / 4) + 1', '(op1 % 4) + 2'),
304 'FpOp1P7': vectorElem('(op1 / 4) + 1', '(op1 % 4) + 3'),
310
305
306 'FpOp1S0P0': vectorElem(
307 '(op1 + step * 0 + 0) / 4', '(op1 + step * 0 + 0) % 4'),
308 'FpOp1S0P1': vectorElem(
309 '(op1 + step * 0 + 1) / 4', '(op1 + step * 0 + 1) % 4'),
310 'FpOp1S1P0': vectorElem(
311 '(op1 + step * 1 + 0) / 4', '(op1 + step * 1 + 0) % 4'),
312 'FpOp1S1P1': vectorElem(
313 '(op1 + step * 1 + 1) / 4', '(op1 + step * 1 + 1) % 4'),
314 'FpOp1S2P0': vectorElem(
315 '(op1 + step * 2 + 0) / 4', '(op1 + step * 2 + 0) % 4'),
316 'FpOp1S2P1': vectorElem(
317 '(op1 + step * 2 + 1) / 4', '(op1 + step * 2 + 1) % 4'),
318 'FpOp1S3P0': vectorElem(
319 '(op1 + step * 3 + 0) / 4', '(op1 + step * 3 + 0) % 4'),
320 'FpOp1S3P1': vectorElem(
321 '(op1 + step * 3 + 1) / 4', '(op1 + step * 3 + 1) % 4'),
322
323 'FpOp2': vectorElem('op2 / 4', 'op2 % 4'),
324 'FpOp2P0': vectorElem('op2 / 4', '(op2 % 4) + 0'),
325 'FpOp2P1': vectorElem('op2 / 4', '(op2 % 4) + 1'),
326 'FpOp2P2': vectorElem('op2 / 4', '(op2 % 4) + 2'),
327 'FpOp2P3': vectorElem('op2 / 4', '(op2 % 4) + 3'),
328
311 # Create AArch64 unpacked view of the FP registers
312 # Name ::= 'AA64Vec' OpSpec [LaneSpec]
313 # OpSpec ::= IOSpec [Index] [Plus]
314 # IOSpec ::= 'S' | 'D'
315 # Index ::= '0' | ... | '9'
316 # Plus ::= [PlusAmount] ['l']
317 # PlusAmount ::= 'p' [PlusAmount]
318 # LaneSpec ::= 'L' Index

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

543 'LLSCLock': cntrlRegNC('MISCREG_LOCKFLAG'),
544 'Dczid' : cntrlRegNC('MISCREG_DCZID_EL0'),
545
546 #Register fields for microops
547 'URa' : intReg('ura'),
548 'XURa' : intRegX64('ura'),
549 'WURa' : intRegW64('ura'),
550 'IWRa' : intRegIWPC('ura'),
329 # Create AArch64 unpacked view of the FP registers
330 # Name ::= 'AA64Vec' OpSpec [LaneSpec]
331 # OpSpec ::= IOSpec [Index] [Plus]
332 # IOSpec ::= 'S' | 'D'
333 # Index ::= '0' | ... | '9'
334 # Plus ::= [PlusAmount] ['l']
335 # PlusAmount ::= 'p' [PlusAmount]
336 # LaneSpec ::= 'L' Index

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

561 'LLSCLock': cntrlRegNC('MISCREG_LOCKFLAG'),
562 'Dczid' : cntrlRegNC('MISCREG_DCZID_EL0'),
563
564 #Register fields for microops
565 'URa' : intReg('ura'),
566 'XURa' : intRegX64('ura'),
567 'WURa' : intRegW64('ura'),
568 'IWRa' : intRegIWPC('ura'),
551 'Fa' : floatReg('ura'),
569 'Fa' : vectorElem('ura / 4', 'ura % 4'),
552 'URb' : intReg('urb'),
553 'XURb' : intRegX64('urb'),
554 'URc' : intReg('urc'),
555 'XURc' : intRegX64('urc'),
556
557 #Memory Operand
558 'Mem': ('Mem', 'uw', None, ('IsMemRef', 'IsLoad', 'IsStore'), srtNormal),
559

--- 22 unchanged lines hidden ---
570 'URb' : intReg('urb'),
571 'XURb' : intRegX64('urb'),
572 'URc' : intReg('urc'),
573 'XURc' : intRegX64('urc'),
574
575 #Memory Operand
576 'Mem': ('Mem', 'uw', None, ('IsMemRef', 'IsLoad', 'IsStore'), srtNormal),
577

--- 22 unchanged lines hidden ---