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 --- |