Deleted Added
sdiff udiff text old ( 13588:fb25d9448acc ) new ( 13589:13522f2a5126 )
full compact
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2011,2017 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

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

178 self.Name = self.nameFunc(self.post, self.add, self.writeback,
179 self.size, self.sign, self.user)
180
181 # Add memory request flags where necessary
182 self.memFlags.append("%d" % int(math.log(self.size, 2)))
183 if self.user:
184 self.memFlags.append("ArmISA::TLB::UserMode")
185
186 if self.flavor == "exclusive":
187 self.instFlags.append("IsStoreConditional")
188 self.memFlags.append("Request::LLSC")
189 elif self.flavor != "fp":
190 self.memFlags.append("ArmISA::TLB::AllowUnaligned")
191
192 # Disambiguate the class name for different flavors of stores
193 if self.flavor != "normal":
194 self.Name = "%s_%s" % (self.name.upper(), self.Name)
195
196 def emit(self):
197 # Address computation
198 eaCode = "EA = Base"
199 if not self.post:

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

253 class StoreDouble(StoreInst):
254 def __init__(self, *args, **kargs):
255 super(StoreDouble, self).__init__(*args, **kargs)
256
257 # Build the default class name
258 self.Name = self.nameFunc(self.post, self.add, self.writeback)
259
260 # Add memory request flags where necessary
261 if self.flavor == "exclusive":
262 self.instFlags.append("IsStoreConditional")
263 self.memFlags.append("Request::LLSC")
264 self.memFlags.append("ArmISA::TLB::AlignDoubleWord")
265 else:
266 self.memFlags.append("ArmISA::TLB::AlignWord")
267
268 # Disambiguate the class name for different flavors of stores
269 if self.flavor != "normal":
270 self.Name = "%s_%s" % (self.name.upper(), self.Name)
271
272 def emit(self):
273 # Address computation code
274 eaCode = "EA = Base"
275 if not self.post:

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

384 flavor="exclusive").emit()
385 StoreImmEx("strexh", False, True, False, size=2,
386 flavor="exclusive").emit()
387 StoreImmEx("strexb", False, True, False, size=1,
388 flavor="exclusive").emit()
389 StoreDoubleImmEx("strexd", False, True, False,
390 flavor="exclusive").emit()
391
392 StoreImm("vstr", False, True, False, size=4, flavor="fp").emit()
393 StoreImm("vstr", False, False, False, size=4, flavor="fp").emit()
394 StoreDoubleImm("vstr", False, True, False, flavor="fp").emit()
395 StoreDoubleImm("vstr", False, False, False, flavor="fp").emit()
396}};