macromem.isa (10037:5cac77888310) macromem.isa (10346:d96b61d843b2)
1// -*- mode:c++ -*-
2
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2013 ARM Limited
3// Copyright (c) 2010-2014 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

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

50 microLdrUopCode = "IWRa = cSwap(Mem_uw, ((CPSR)Cpsr).e);"
51 microLdrUopIop = InstObjParams('ldr_uop', 'MicroLdrUop',
52 'MicroMemOp',
53 {'memacc_code': microLdrUopCode,
54 'ea_code': 'EA = URb + (up ? imm : -imm);',
55 'predicate_test': predicateTest},
56 ['IsMicroop'])
57
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

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

50 microLdrUopCode = "IWRa = cSwap(Mem_uw, ((CPSR)Cpsr).e);"
51 microLdrUopIop = InstObjParams('ldr_uop', 'MicroLdrUop',
52 'MicroMemOp',
53 {'memacc_code': microLdrUopCode,
54 'ea_code': 'EA = URb + (up ? imm : -imm);',
55 'predicate_test': predicateTest},
56 ['IsMicroop'])
57
58 microLdr2UopCode = '''
59 uint64_t data = Mem_ud;
60 Dest = cSwap((uint32_t) data, ((CPSR)Cpsr).e);
61 Dest2 = cSwap((uint32_t) (data >> 32), ((CPSR)Cpsr).e);
62 '''
63 microLdr2UopIop = InstObjParams('ldr2_uop', 'MicroLdr2Uop',
64 'MicroMemPairOp',
65 {'memacc_code': microLdr2UopCode,
66 'ea_code': 'EA = URb + (up ? imm : -imm);',
67 'predicate_test': predicateTest},
68 ['IsMicroop'])
69
58 microLdrFpUopCode = "Fa_uw = cSwap(Mem_uw, ((CPSR)Cpsr).e);"
59 microLdrFpUopIop = InstObjParams('ldrfp_uop', 'MicroLdrFpUop',
60 'MicroMemOp',
61 {'memacc_code': microLdrFpUopCode,
62 'ea_code': vfpEnabledCheckCode +
63 'EA = URb + (up ? imm : -imm);',
64 'predicate_test': predicateTest},
65 ['IsMicroop'])

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

154 EA = URb + (up ? imm : -imm) -
155 (((CPSR)Cpsr).e ? 4 : 0);
156 ''',
157 'predicate_test': predicateTest},
158 ['IsMicroop'])
159
160 header_output = decoder_output = exec_output = ''
161
70 microLdrFpUopCode = "Fa_uw = cSwap(Mem_uw, ((CPSR)Cpsr).e);"
71 microLdrFpUopIop = InstObjParams('ldrfp_uop', 'MicroLdrFpUop',
72 'MicroMemOp',
73 {'memacc_code': microLdrFpUopCode,
74 'ea_code': vfpEnabledCheckCode +
75 'EA = URb + (up ? imm : -imm);',
76 'predicate_test': predicateTest},
77 ['IsMicroop'])

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

166 EA = URb + (up ? imm : -imm) -
167 (((CPSR)Cpsr).e ? 4 : 0);
168 ''',
169 'predicate_test': predicateTest},
170 ['IsMicroop'])
171
172 header_output = decoder_output = exec_output = ''
173
162 loadIops = (microLdrUopIop, microLdrRetUopIop, microLdrFpUopIop,
163 microLdrDBFpUopIop, microLdrDTFpUopIop)
174 loadIops = (microLdrUopIop, microLdrRetUopIop,
175 microLdrFpUopIop, microLdrDBFpUopIop, microLdrDTFpUopIop)
164 storeIops = (microStrUopIop, microStrFpUopIop,
165 microStrDBFpUopIop, microStrDTFpUopIop)
166 for iop in loadIops + storeIops:
167 header_output += MicroMemDeclare.subst(iop)
168 decoder_output += MicroMemConstructor.subst(iop)
169 for iop in loadIops:
170 exec_output += LoadExecute.subst(iop) + \
171 LoadInitiateAcc.subst(iop) + \
172 LoadCompleteAcc.subst(iop)
173 for iop in storeIops:
174 exec_output += StoreExecute.subst(iop) + \
175 StoreInitiateAcc.subst(iop) + \
176 StoreCompleteAcc.subst(iop)
176 storeIops = (microStrUopIop, microStrFpUopIop,
177 microStrDBFpUopIop, microStrDTFpUopIop)
178 for iop in loadIops + storeIops:
179 header_output += MicroMemDeclare.subst(iop)
180 decoder_output += MicroMemConstructor.subst(iop)
181 for iop in loadIops:
182 exec_output += LoadExecute.subst(iop) + \
183 LoadInitiateAcc.subst(iop) + \
184 LoadCompleteAcc.subst(iop)
185 for iop in storeIops:
186 exec_output += StoreExecute.subst(iop) + \
187 StoreInitiateAcc.subst(iop) + \
188 StoreCompleteAcc.subst(iop)
189
190 header_output += MicroMemPairDeclare.subst(microLdr2UopIop)
191 decoder_output += MicroMemPairConstructor.subst(microLdr2UopIop)
192 exec_output += LoadExecute.subst(microLdr2UopIop) + \
193 LoadInitiateAcc.subst(microLdr2UopIop) + \
194 LoadCompleteAcc.subst(microLdr2UopIop)
177}};
178
179let {{
180 exec_output = header_output = ''
181
182 eaCode = 'EA = XURa + imm;'
183
184 for size in (1, 2, 3, 4, 6, 8, 12, 16):

--- 576 unchanged lines hidden ---
195}};
196
197let {{
198 exec_output = header_output = ''
199
200 eaCode = 'EA = XURa + imm;'
201
202 for size in (1, 2, 3, 4, 6, 8, 12, 16):

--- 576 unchanged lines hidden ---