macromem.isa (7170:6f97f5107abe) | macromem.isa (7174:b8fe16a5e349) |
---|---|
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 --- 44 unchanged lines hidden (view full) --- 53let {{ 54 microLdrUopIop = InstObjParams('ldr_uop', 'MicroLdrUop', 55 'MicroMemOp', 56 {'memacc_code': 'Ra = Mem;', 57 'ea_code': 'EA = Rb + (up ? imm : -imm);', 58 'predicate_test': predicateTest}, 59 ['IsMicroop']) 60 | 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 --- 44 unchanged lines hidden (view full) --- 53let {{ 54 microLdrUopIop = InstObjParams('ldr_uop', 'MicroLdrUop', 55 'MicroMemOp', 56 {'memacc_code': 'Ra = Mem;', 57 'ea_code': 'EA = Rb + (up ? imm : -imm);', 58 'predicate_test': predicateTest}, 59 ['IsMicroop']) 60 |
61 microLdrFpUopIop = InstObjParams('ldrfp_uop', 'MicroLdrFpUop', 62 'MicroMemOp', 63 {'memacc_code': 'Fa = Mem;', 64 'ea_code': 'EA = Rb + (up ? imm : -imm);', 65 'predicate_test': predicateTest}, 66 ['IsMicroop']) 67 |
|
61 microLdrRetUopCode = ''' 62 Ra = Mem; 63 uint32_t newCpsr = 64 cpsrWriteByInstr(Cpsr | CondCodes, Spsr, 0xF, true); 65 Cpsr = ~CondCodesMask & newCpsr; 66 CondCodes = CondCodesMask & newCpsr; 67 ''' 68 microLdrRetUopIop = InstObjParams('ldr_ret_uop', 'MicroLdrRetUop', --- 6 unchanged lines hidden (view full) --- 75 76 microStrUopIop = InstObjParams('str_uop', 'MicroStrUop', 77 'MicroMemOp', 78 {'memacc_code': 'Mem = Ra;', 79 'ea_code': 'EA = Rb + (up ? imm : -imm);', 80 'predicate_test': predicateTest}, 81 ['IsMicroop']) 82 | 68 microLdrRetUopCode = ''' 69 Ra = Mem; 70 uint32_t newCpsr = 71 cpsrWriteByInstr(Cpsr | CondCodes, Spsr, 0xF, true); 72 Cpsr = ~CondCodesMask & newCpsr; 73 CondCodes = CondCodesMask & newCpsr; 74 ''' 75 microLdrRetUopIop = InstObjParams('ldr_ret_uop', 'MicroLdrRetUop', --- 6 unchanged lines hidden (view full) --- 82 83 microStrUopIop = InstObjParams('str_uop', 'MicroStrUop', 84 'MicroMemOp', 85 {'memacc_code': 'Mem = Ra;', 86 'ea_code': 'EA = Rb + (up ? imm : -imm);', 87 'predicate_test': predicateTest}, 88 ['IsMicroop']) 89 |
83 header_output = MicroMemDeclare.subst(microLdrUopIop) + \ 84 MicroMemDeclare.subst(microLdrRetUopIop) + \ 85 MicroMemDeclare.subst(microStrUopIop) 86 decoder_output = MicroMemConstructor.subst(microLdrUopIop) + \ 87 MicroMemConstructor.subst(microLdrRetUopIop) + \ 88 MicroMemConstructor.subst(microStrUopIop) 89 exec_output = LoadExecute.subst(microLdrUopIop) + \ 90 LoadExecute.subst(microLdrRetUopIop) + \ 91 StoreExecute.subst(microStrUopIop) + \ 92 LoadInitiateAcc.subst(microLdrUopIop) + \ 93 LoadInitiateAcc.subst(microLdrRetUopIop) + \ 94 StoreInitiateAcc.subst(microStrUopIop) + \ 95 LoadCompleteAcc.subst(microLdrUopIop) + \ 96 LoadCompleteAcc.subst(microLdrRetUopIop) + \ 97 StoreCompleteAcc.subst(microStrUopIop) | 90 microStrFpUopIop = InstObjParams('strfp_uop', 'MicroStrFpUop', 91 'MicroMemOp', 92 {'memacc_code': 'Mem = Fa;', 93 'ea_code': 'EA = Rb + (up ? imm : -imm);', 94 'predicate_test': predicateTest}, 95 ['IsMicroop']) 96 97 header_output = decoder_output = exec_output = '' 98 99 loadIops = (microLdrUopIop, microLdrFpUopIop, microLdrRetUopIop) 100 storeIops = (microStrUopIop, microStrFpUopIop) 101 for iop in loadIops + storeIops: 102 header_output += MicroMemDeclare.subst(iop) 103 decoder_output += MicroMemConstructor.subst(iop) 104 for iop in loadIops: 105 exec_output += LoadExecute.subst(iop) + \ 106 LoadInitiateAcc.subst(iop) + \ 107 LoadCompleteAcc.subst(iop) 108 for iop in storeIops: 109 exec_output += StoreExecute.subst(iop) + \ 110 StoreInitiateAcc.subst(iop) + \ 111 StoreCompleteAcc.subst(iop) |
98}}; 99 100//////////////////////////////////////////////////////////////////// 101// 102// Integer = Integer op Immediate microops 103// 104 105let {{ --- 25 unchanged lines hidden --- | 112}}; 113 114//////////////////////////////////////////////////////////////////// 115// 116// Integer = Integer op Immediate microops 117// 118 119let {{ --- 25 unchanged lines hidden --- |