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 --- 33 unchanged lines hidden (view full) --- 42 header_output = "" 43 decoder_output = "" 44 exec_output = "" 45 46 class StoreInst(LoadStoreInst): 47 execBase = 'Store' 48 49 def __init__(self, mnem, post, add, writeback, size=4, |
50 sign=False, user=False, flavor="normal", 51 instFlags = []): |
52 super(StoreInst, self).__init__() 53 54 self.name = mnem 55 self.post = post 56 self.add = add 57 self.writeback = writeback 58 self.size = size 59 self.sign = sign 60 self.user = user 61 self.flavor = flavor |
62 self.instFlags = instFlags |
63 if self.add: 64 self.op = " +" 65 else: 66 self.op = " -" 67 68 self.memFlags = ["ArmISA::TLB::MustBeOne"] 69 self.codeBlobs = { "postacc_code" : "" } 70 71 def emitHelper(self, base = 'Memory', wbDecl = None): 72 73 global header_output, decoder_output, exec_output 74 75 codeBlobs = self.codeBlobs 76 codeBlobs["predicate_test"] = pickPredicate(codeBlobs) 77 (newHeader, 78 newDecoder, 79 newExec) = self.fillTemplates(self.name, self.Name, codeBlobs, |
80 self.memFlags, self.instFlags, base, wbDecl) |
81 82 header_output += newHeader 83 decoder_output += newDecoder 84 exec_output += newExec 85 86 class SrsInst(LoadStoreInst): 87 execBase = 'Store' 88 decConstBase = 'Srs' --- 128 unchanged lines hidden (view full) --- 217 def storeImmClassName(post, add, writeback, size=4, sign=False, user=False): 218 return memClassName("STORE_IMM", post, add, writeback, size, sign, user) 219 220 class StoreImmEx(StoreImmInst, StoreSingle): 221 execBase = 'StoreEx' 222 decConstBase = 'StoreExImm' 223 basePrefix = 'MemoryExImm' 224 nameFunc = staticmethod(storeImmClassName) |
225 instFlags = ['IsStoreConditional'] |
226 227 def __init__(self, *args, **kargs): 228 super(StoreImmEx, self).__init__(*args, **kargs) 229 self.codeBlobs["postacc_code"] = "Result = !writeResult;" 230 231 class StoreImm(StoreImmInst, StoreSingle): 232 decConstBase = 'LoadStoreImm' 233 basePrefix = 'MemoryImm' --- 63 unchanged lines hidden (view full) --- 297 def storeDoubleImmClassName(post, add, writeback): 298 return memClassName("STORE_IMMD", post, add, writeback, 4, False, False) 299 300 class StoreDoubleImmEx(StoreImmInst, StoreDouble): 301 execBase = 'StoreEx' 302 decConstBase = 'StoreExDImm' 303 basePrefix = 'MemoryExDImm' 304 nameFunc = staticmethod(storeDoubleImmClassName) |
305 instFlags = ['IsStoreConditional'] |
306 307 def __init__(self, *args, **kargs): 308 super(StoreDoubleImmEx, self).__init__(*args, **kargs) 309 self.codeBlobs["postacc_code"] = "Result = !writeResult;" 310 311 class StoreDoubleImm(StoreImmInst, StoreDouble): 312 decConstBase = 'LoadStoreDImm' 313 basePrefix = 'MemoryDImm' --- 69 unchanged lines hidden --- |