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 |
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, |
111 "postacc_code": postAccCode } 112 codeBlobs["predicate_test"] = pickPredicate(codeBlobs) |
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, |
119 "memacc_code": accCode } 120 codeBlobs["predicate_test"] = pickPredicate(codeBlobs) |
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, |
128 "postacc_code": "" } 129 codeBlobs["predicate_test"] = pickPredicate(codeBlobs) |
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, |
138 "postacc_code": postAccCode } 139 codeBlobs["predicate_test"] = pickPredicate(codeBlobs) |
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 --- |