operands.isa (10037:5cac77888310) operands.isa (10338:8bee5f4edb92)
1// -*- mode:c++ -*-
1// -*- mode:c++ -*-
2// Copyright (c) 2010-2013 ARM Limited
2// Copyright (c) 2010-2014 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
9// licensed hereunder. You may use the software subject to the license
10// terms below provided that you ensure that this notice is replicated

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

146 def intRegIWPC(idx):
147 return ('IntReg', 'uw', idx, 'IsInteger', srtNormal,
148 maybePCRead, maybeIWPCWrite)
149
150 def intRegAIWPC(idx):
151 return ('IntReg', 'uw', idx, 'IsInteger', srtNormal,
152 maybePCRead, maybeAIWPCWrite)
153
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
9// licensed hereunder. You may use the software subject to the license
10// terms below provided that you ensure that this notice is replicated

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

146 def intRegIWPC(idx):
147 return ('IntReg', 'uw', idx, 'IsInteger', srtNormal,
148 maybePCRead, maybeIWPCWrite)
149
150 def intRegAIWPC(idx):
151 return ('IntReg', 'uw', idx, 'IsInteger', srtNormal,
152 maybePCRead, maybeAIWPCWrite)
153
154 def intRegCC(idx):
155 return ('IntReg', 'uw', idx, None, srtNormal)
154 def ccReg(idx):
155 return ('CCReg', 'uw', idx, None, srtNormal)
156
157 def cntrlReg(idx, id = srtNormal, type = 'uw'):
158 return ('ControlReg', type, idx, None, id)
159
160 def cntrlNsBankedReg(idx, id = srtNormal, type = 'uw'):
161 return ('ControlReg', type, idx, (None, None, 'IsControl'), id, cntrlNsBankedRead, cntrlNsBankedWrite)
162
163 def cntrlNsBankedReg64(idx, id = srtNormal, type = 'ud'):

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

216 'R1': intRegNPC('1'),
217 'R2': intRegNPC('2'),
218 'R3': intRegNPC('3'),
219 'X0': intRegX64('0'),
220 'X1': intRegX64('1'),
221 'X2': intRegX64('2'),
222 'X3': intRegX64('3'),
223
156
157 def cntrlReg(idx, id = srtNormal, type = 'uw'):
158 return ('ControlReg', type, idx, None, id)
159
160 def cntrlNsBankedReg(idx, id = srtNormal, type = 'uw'):
161 return ('ControlReg', type, idx, (None, None, 'IsControl'), id, cntrlNsBankedRead, cntrlNsBankedWrite)
162
163 def cntrlNsBankedReg64(idx, id = srtNormal, type = 'ud'):

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

216 'R1': intRegNPC('1'),
217 'R2': intRegNPC('2'),
218 'R3': intRegNPC('3'),
219 'X0': intRegX64('0'),
220 'X1': intRegX64('1'),
221 'X2': intRegX64('2'),
222 'X3': intRegX64('3'),
223
224 #Pseudo integer condition code registers
225 'CondCodesNZ': intRegCC('INTREG_CONDCODES_NZ'),
226 'CondCodesC': intRegCC('INTREG_CONDCODES_C'),
227 'CondCodesV': intRegCC('INTREG_CONDCODES_V'),
228 'CondCodesGE': intRegCC('INTREG_CONDCODES_GE'),
229 'OptCondCodesNZ': intRegCC(
230 '''(condCode == COND_AL || condCode == COND_UC ||
231 condCode == COND_CC || condCode == COND_CS ||
232 condCode == COND_VS || condCode == COND_VC) ?
233 INTREG_ZERO : INTREG_CONDCODES_NZ'''),
234 'OptCondCodesC': intRegCC(
235 '''(condCode == COND_HI || condCode == COND_LS ||
224 # Condition code registers
225 'CondCodesNZ': ccReg('CCREG_NZ'),
226 'CondCodesC': ccReg('CCREG_C'),
227 'CondCodesV': ccReg('CCREG_V'),
228 'CondCodesGE': ccReg('CCREG_GE'),
229 'OptCondCodesNZ': ccReg(
230 '''((condCode == COND_AL || condCode == COND_UC ||
231 condCode == COND_CC || condCode == COND_CS ||
232 condCode == COND_VS || condCode == COND_VC) ?
233 CCREG_ZERO : CCREG_NZ)'''),
234 'OptCondCodesC': ccReg(
235 '''((condCode == COND_HI || condCode == COND_LS ||
236 condCode == COND_CS || condCode == COND_CC) ?
236 condCode == COND_CS || condCode == COND_CC) ?
237 INTREG_CONDCODES_C : INTREG_ZERO'''),
238 'OptShiftRmCondCodesC': intRegCC(
239 '''(condCode == COND_HI || condCode == COND_LS ||
240 condCode == COND_CS || condCode == COND_CC ||
241 shiftType == ROR) ?
242 INTREG_CONDCODES_C : INTREG_ZERO'''),
243 'OptCondCodesV': intRegCC(
244 '''(condCode == COND_VS || condCode == COND_VC ||
245 condCode == COND_GE || condCode == COND_LT ||
246 condCode == COND_GT || condCode == COND_LE) ?
247 INTREG_CONDCODES_V : INTREG_ZERO'''),
248 'FpCondCodes': intRegCC('INTREG_FPCONDCODES'),
237 CCREG_C : CCREG_ZERO)'''),
238 'OptShiftRmCondCodesC': ccReg(
239 '''((condCode == COND_HI || condCode == COND_LS ||
240 condCode == COND_CS || condCode == COND_CC ||
241 shiftType == ROR) ?
242 CCREG_C : CCREG_ZERO)'''),
243 'OptCondCodesV': ccReg(
244 '''((condCode == COND_VS || condCode == COND_VC ||
245 condCode == COND_GE || condCode == COND_LT ||
246 condCode == COND_GT || condCode == COND_LE) ?
247 CCREG_V : CCREG_ZERO)'''),
248 'FpCondCodes': ccReg('CCREG_FP'),
249
250 #Abstracted floating point reg operands
251 'FpDest': floatReg('(dest + 0)'),
252 'FpDestP0': floatReg('(dest + 0)'),
253 'FpDestP1': floatReg('(dest + 1)'),
254 'FpDestP2': floatReg('(dest + 2)'),
255 'FpDestP3': floatReg('(dest + 3)'),
256 'FpDestP4': floatReg('(dest + 4)'),

--- 196 unchanged lines hidden ---
249
250 #Abstracted floating point reg operands
251 'FpDest': floatReg('(dest + 0)'),
252 'FpDestP0': floatReg('(dest + 0)'),
253 'FpDestP1': floatReg('(dest + 1)'),
254 'FpDestP2': floatReg('(dest + 2)'),
255 'FpDestP3': floatReg('(dest + 3)'),
256 'FpDestP4': floatReg('(dest + 4)'),

--- 196 unchanged lines hidden ---