str64.isa (12386:2bf5fb25a5f1) | str64.isa (12527:264a2d7e5c1d) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2011-2013,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 --- 198 unchanged lines hidden (view full) --- 207 class StoreDouble64(StoreInst64): 208 def emit(self): 209 self.buildEACode() 210 211 # Code that actually handles the access 212 if self.flavor == "fp": 213 accCode = ''' 214 uint64_t data = AA64FpDest2P0_uw; | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2011-2013,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 --- 198 unchanged lines hidden (view full) --- 207 class StoreDouble64(StoreInst64): 208 def emit(self): 209 self.buildEACode() 210 211 # Code that actually handles the access 212 if self.flavor == "fp": 213 accCode = ''' 214 uint64_t data = AA64FpDest2P0_uw; |
215 data = (data << 32) | AA64FpDestP0_uw; | 215 data = isBigEndian64(xc->tcBase()) 216 ? ((uint64_t(AA64FpDestP0_uw) << 32) | data) 217 : ((data << 32) | AA64FpDestP0_uw); |
216 Mem_ud = cSwap(data, isBigEndian64(xc->tcBase())); 217 ''' 218 else: 219 if self.size == 4: 220 accCode = ''' 221 uint64_t data = XDest2_uw; | 218 Mem_ud = cSwap(data, isBigEndian64(xc->tcBase())); 219 ''' 220 else: 221 if self.size == 4: 222 accCode = ''' 223 uint64_t data = XDest2_uw; |
222 data = (data << 32) | XDest_uw; | 224 data = isBigEndian64(xc->tcBase()) 225 ? ((uint64_t(XDest_uw) << 32) | data) 226 : ((data << 32) | XDest_uw); |
223 Mem_ud = cSwap(data, isBigEndian64(xc->tcBase())); 224 ''' 225 elif self.size == 8: 226 accCode = ''' 227 // This temporary needs to be here so that the parser 228 // will correctly identify this instruction as a store. 229 std::array<uint64_t, 2> temp; | 227 Mem_ud = cSwap(data, isBigEndian64(xc->tcBase())); 228 ''' 229 elif self.size == 8: 230 accCode = ''' 231 // This temporary needs to be here so that the parser 232 // will correctly identify this instruction as a store. 233 std::array<uint64_t, 2> temp; |
230 temp[0] = XDest_ud; 231 temp[1] = XDest2_ud; | 234 temp[0] = cSwap(XDest_ud,isBigEndian64(xc->tcBase())); 235 temp[1] = cSwap(XDest2_ud,isBigEndian64(xc->tcBase())); |
232 Mem_tud = temp; 233 ''' 234 self.codeBlobs["memacc_code"] = accCode 235 236 # Push it out to the output files 237 wbDecl = None 238 if self.writeback and not self.micro: 239 wbDecl = self.wbDecl --- 135 unchanged lines hidden --- | 236 Mem_tud = temp; 237 ''' 238 self.codeBlobs["memacc_code"] = accCode 239 240 # Push it out to the output files 241 wbDecl = None 242 if self.writeback and not self.micro: 243 wbDecl = self.wbDecl --- 135 unchanged lines hidden --- |