mem.isa (7313:b0262368daa0) mem.isa (7422:feddb9077def)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 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

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

92
93 # (header_output, decoder_output, decode_block, exec_output)
94 return (declareTemplate.subst(iop),
95 constructTemplate.subst(iop),
96 fullExecTemplate.subst(iop)
97 + initiateAccTemplate.subst(iop)
98 + completeAccTemplate.subst(iop))
99
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 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

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

92
93 # (header_output, decoder_output, decode_block, exec_output)
94 return (declareTemplate.subst(iop),
95 constructTemplate.subst(iop),
96 fullExecTemplate.subst(iop)
97 + initiateAccTemplate.subst(iop)
98 + completeAccTemplate.subst(iop))
99
100 def pickPredicate(blobs):
101 for val in blobs.values():
102 if re.search('(?<!Opt)CondCodes', val):
103 return condPredicateTest
104 return predicateTest
105
100 def loadStoreBase(name, Name, imm, eaCode, accCode, postAccCode,
101 memFlags, instFlags, double, strex, base = 'Memory',
102 execTemplateBase = ''):
103 codeBlobs = { "ea_code": eaCode,
104 "memacc_code": accCode,
106 def loadStoreBase(name, Name, imm, eaCode, accCode, postAccCode,
107 memFlags, instFlags, double, strex, base = 'Memory',
108 execTemplateBase = ''):
109 codeBlobs = { "ea_code": eaCode,
110 "memacc_code": accCode,
105 "postacc_code": postAccCode,
106 "predicate_test": predicateTest }
111 "postacc_code": postAccCode }
112 codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
107 return loadStoreBaseWork(name, Name, imm, False, False, False,
108 codeBlobs, memFlags, instFlags, double,
109 strex, base, execTemplateBase)
110
111 def RfeBase(name, Name, eaCode, accCode, memFlags, instFlags):
112 codeBlobs = { "ea_code": eaCode,
113 return loadStoreBaseWork(name, Name, imm, False, False, False,
114 codeBlobs, memFlags, instFlags, double,
115 strex, base, execTemplateBase)
116
117 def RfeBase(name, Name, eaCode, accCode, memFlags, instFlags):
118 codeBlobs = { "ea_code": eaCode,
113 "memacc_code": accCode,
114 "predicate_test": predicateTest }
119 "memacc_code": accCode }
120 codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
115 return loadStoreBaseWork(name, Name, False, False, True, False,
116 codeBlobs, memFlags, instFlags, False, False,
117 'RfeOp', 'Load')
118
119 def SrsBase(name, Name, eaCode, accCode, memFlags, instFlags):
120 codeBlobs = { "ea_code": eaCode,
121 "memacc_code": accCode,
121 return loadStoreBaseWork(name, Name, False, False, True, False,
122 codeBlobs, memFlags, instFlags, False, False,
123 'RfeOp', 'Load')
124
125 def SrsBase(name, Name, eaCode, accCode, memFlags, instFlags):
126 codeBlobs = { "ea_code": eaCode,
127 "memacc_code": accCode,
122 "postacc_code": "",
123 "predicate_test": predicateTest }
128 "postacc_code": "" }
129 codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
124 return loadStoreBaseWork(name, Name, False, False, False, True,
125 codeBlobs, memFlags, instFlags, False, False,
126 'SrsOp', 'Store')
127
128 def SwapBase(name, Name, eaCode, preAccCode, postAccCode, memFlags,
129 instFlags):
130 codeBlobs = { "ea_code": eaCode,
131 "preacc_code": preAccCode,
130 return loadStoreBaseWork(name, Name, False, False, False, True,
131 codeBlobs, memFlags, instFlags, False, False,
132 'SrsOp', 'Store')
133
134 def SwapBase(name, Name, eaCode, preAccCode, postAccCode, memFlags,
135 instFlags):
136 codeBlobs = { "ea_code": eaCode,
137 "preacc_code": preAccCode,
132 "postacc_code": postAccCode,
133 "predicate_test": predicateTest }
138 "postacc_code": postAccCode }
139 codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
134 return loadStoreBaseWork(name, Name, False, True, False, False,
135 codeBlobs, memFlags, instFlags, False, False,
136 'Swap', 'Swap')
137
138 def memClassName(base, post, add, writeback, \
139 size=4, sign=False, user=False):
140 Name = base
141

--- 59 unchanged lines hidden ---
140 return loadStoreBaseWork(name, Name, False, True, False, False,
141 codeBlobs, memFlags, instFlags, False, False,
142 'Swap', 'Swap')
143
144 def memClassName(base, post, add, writeback, \
145 size=4, sign=False, user=False):
146 Name = base
147

--- 59 unchanged lines hidden ---