str.isa (7746:79adfecb2b8a) str.isa (8069:a3f5f75db279)
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,
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"):
50 sign=False, user=False, flavor="normal",
51 instFlags = []):
51 super(StoreInst, self).__init__()
52
53 self.name = mnem
54 self.post = post
55 self.add = add
56 self.writeback = writeback
57 self.size = size
58 self.sign = sign
59 self.user = user
60 self.flavor = flavor
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
61
62 self.instFlags = instFlags
62 if self.add:
63 self.op = " +"
64 else:
65 self.op = " -"
66
67 self.memFlags = ["ArmISA::TLB::MustBeOne"]
68 self.codeBlobs = { "postacc_code" : "" }
69
70 def emitHelper(self, base = 'Memory', wbDecl = None):
71
72 global header_output, decoder_output, exec_output
73
74 codeBlobs = self.codeBlobs
75 codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
76 (newHeader,
77 newDecoder,
78 newExec) = self.fillTemplates(self.name, self.Name, codeBlobs,
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,
79 self.memFlags, [], base, wbDecl)
80 self.memFlags, self.instFlags, base, wbDecl)
80
81 header_output += newHeader
82 decoder_output += newDecoder
83 exec_output += newExec
84
85 class SrsInst(LoadStoreInst):
86 execBase = 'Store'
87 decConstBase = 'Srs'

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

216 def storeImmClassName(post, add, writeback, size=4, sign=False, user=False):
217 return memClassName("STORE_IMM", post, add, writeback, size, sign, user)
218
219 class StoreImmEx(StoreImmInst, StoreSingle):
220 execBase = 'StoreEx'
221 decConstBase = 'StoreExImm'
222 basePrefix = 'MemoryExImm'
223 nameFunc = staticmethod(storeImmClassName)
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']
224
225 def __init__(self, *args, **kargs):
226 super(StoreImmEx, self).__init__(*args, **kargs)
227 self.codeBlobs["postacc_code"] = "Result = !writeResult;"
228
229 class StoreImm(StoreImmInst, StoreSingle):
230 decConstBase = 'LoadStoreImm'
231 basePrefix = 'MemoryImm'

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

295 def storeDoubleImmClassName(post, add, writeback):
296 return memClassName("STORE_IMMD", post, add, writeback, 4, False, False)
297
298 class StoreDoubleImmEx(StoreImmInst, StoreDouble):
299 execBase = 'StoreEx'
300 decConstBase = 'StoreExDImm'
301 basePrefix = 'MemoryExDImm'
302 nameFunc = staticmethod(storeDoubleImmClassName)
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']
303
304 def __init__(self, *args, **kargs):
305 super(StoreDoubleImmEx, self).__init__(*args, **kargs)
306 self.codeBlobs["postacc_code"] = "Result = !writeResult;"
307
308 class StoreDoubleImm(StoreImmInst, StoreDouble):
309 decConstBase = 'LoadStoreDImm'
310 basePrefix = 'MemoryDImm'

--- 69 unchanged lines hidden ---
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 ---