ldr64.isa (12856:cca88f84cb80) | ldr64.isa (13367:dc06baae4275) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2011-2014, 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 --- 60 unchanged lines hidden (view full) --- 69 self.memFlags.append("ArmISA::TLB::UserMode") 70 71 if self.flavor == "dprefetch": 72 self.memFlags.append("Request::PREFETCH") 73 self.instFlags = ['IsDataPrefetch'] 74 elif self.flavor == "iprefetch": 75 self.memFlags.append("Request::PREFETCH") 76 self.instFlags = ['IsInstPrefetch'] | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2011-2014, 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 --- 60 unchanged lines hidden (view full) --- 69 self.memFlags.append("ArmISA::TLB::UserMode") 70 71 if self.flavor == "dprefetch": 72 self.memFlags.append("Request::PREFETCH") 73 self.instFlags = ['IsDataPrefetch'] 74 elif self.flavor == "iprefetch": 75 self.memFlags.append("Request::PREFETCH") 76 self.instFlags = ['IsInstPrefetch'] |
77 elif self.flavor == "mprefetch": 78 self.memFlags.append("((((dest>>3)&3)==2)? \ 79 (Request::PF_EXCLUSIVE):(Request::PREFETCH))") 80 self.instFlags = ['IsDataPrefetch'] |
|
77 if self.micro: 78 self.instFlags.append("IsMicroop") 79 80 if self.flavor in ("acexp", "exp"): 81 # For exclusive pair ops alignment check is based on total size 82 self.memFlags.append("%d" % int(math.log(self.size, 2) + 1)) 83 elif not (self.size == 16 and self.top): 84 # Only the first microop should perform alignment checking. --- 86 unchanged lines hidden (view full) --- 171 super(LoadRawRegInst64, self).__init__(*args, **kargs) 172 self.offset = "" 173 174 class LoadSingle64(LoadInst64): 175 def emit(self): 176 self.buildEACode() 177 178 # Code that actually handles the access | 81 if self.micro: 82 self.instFlags.append("IsMicroop") 83 84 if self.flavor in ("acexp", "exp"): 85 # For exclusive pair ops alignment check is based on total size 86 self.memFlags.append("%d" % int(math.log(self.size, 2) + 1)) 87 elif not (self.size == 16 and self.top): 88 # Only the first microop should perform alignment checking. --- 86 unchanged lines hidden (view full) --- 175 super(LoadRawRegInst64, self).__init__(*args, **kargs) 176 self.offset = "" 177 178 class LoadSingle64(LoadInst64): 179 def emit(self): 180 self.buildEACode() 181 182 # Code that actually handles the access |
179 if self.flavor in ("dprefetch", "iprefetch"): | 183 if self.flavor in ("dprefetch", "iprefetch", "mprefetch"): |
180 accCode = 'uint64_t temp M5_VAR_USED = Mem%s;' 181 elif self.flavor == "fp": 182 if self.size in (1, 2, 4): 183 accCode = ''' 184 AA64FpDestP0_uw = cSwap(Mem%s, 185 isBigEndian64(xc->tcBase())); 186 AA64FpDestP1_uw = 0; 187 AA64FpDestP2_uw = 0; --- 172 unchanged lines hidden (view full) --- 360 buildLoads64("ldrsw", "LDRSW64", 4, True, flavor="widen") 361 buildLoads64("ldr", "LDRW64", 4, False) 362 buildLoads64("ldr", "LDRX64", 8, False) 363 buildLoads64("ldr", "LDRBFP64", 1, False, flavor="fp") 364 buildLoads64("ldr", "LDRHFP64", 2, False, flavor="fp") 365 buildLoads64("ldr", "LDRSFP64", 4, False, flavor="fp") 366 buildLoads64("ldr", "LDRDFP64", 8, False, flavor="fp") 367 | 184 accCode = 'uint64_t temp M5_VAR_USED = Mem%s;' 185 elif self.flavor == "fp": 186 if self.size in (1, 2, 4): 187 accCode = ''' 188 AA64FpDestP0_uw = cSwap(Mem%s, 189 isBigEndian64(xc->tcBase())); 190 AA64FpDestP1_uw = 0; 191 AA64FpDestP2_uw = 0; --- 172 unchanged lines hidden (view full) --- 364 buildLoads64("ldrsw", "LDRSW64", 4, True, flavor="widen") 365 buildLoads64("ldr", "LDRW64", 4, False) 366 buildLoads64("ldr", "LDRX64", 8, False) 367 buildLoads64("ldr", "LDRBFP64", 1, False, flavor="fp") 368 buildLoads64("ldr", "LDRHFP64", 2, False, flavor="fp") 369 buildLoads64("ldr", "LDRSFP64", 4, False, flavor="fp") 370 buildLoads64("ldr", "LDRDFP64", 8, False, flavor="fp") 371 |
368 LoadImm64("prfm", "PRFM64_IMM", 8, flavor="dprefetch").emit() 369 LoadReg64("prfm", "PRFM64_REG", 8, flavor="dprefetch").emit() 370 LoadLit64("prfm", "PRFM64_LIT", 8, literal=True, flavor="dprefetch").emit() 371 LoadImm64("prfum", "PRFUM64_IMM", 8, flavor="dprefetch").emit() | 372 LoadImm64("prfm", "PRFM64_IMM", 8, flavor="mprefetch").emit() 373 LoadReg64("prfm", "PRFM64_REG", 8, flavor="mprefetch").emit() 374 LoadLit64("prfm", "PRFM64_LIT", 8, literal=True, 375 flavor="mprefetch").emit() 376 LoadImm64("prfum", "PRFUM64_IMM", 8, flavor="mprefetch").emit() |
372 373 LoadImm64("ldurb", "LDURB64_IMM", 1, False).emit() 374 LoadImm64("ldursb", "LDURSBW64_IMM", 1, True).emit() 375 LoadImm64("ldursb", "LDURSBX64_IMM", 1, True, flavor="widen").emit() 376 LoadImm64("ldurh", "LDURH64_IMM", 2, False).emit() 377 LoadImm64("ldursh", "LDURSHW64_IMM", 2, True).emit() 378 LoadImm64("ldursh", "LDURSHX64_IMM", 2, True, flavor="widen").emit() 379 LoadImm64("ldursw", "LDURSW64_IMM", 4, True, flavor="widen").emit() --- 93 unchanged lines hidden --- | 377 378 LoadImm64("ldurb", "LDURB64_IMM", 1, False).emit() 379 LoadImm64("ldursb", "LDURSBW64_IMM", 1, True).emit() 380 LoadImm64("ldursb", "LDURSBX64_IMM", 1, True, flavor="widen").emit() 381 LoadImm64("ldurh", "LDURH64_IMM", 2, False).emit() 382 LoadImm64("ldursh", "LDURSHW64_IMM", 2, True).emit() 383 LoadImm64("ldursh", "LDURSHX64_IMM", 2, True, flavor="widen").emit() 384 LoadImm64("ldursw", "LDURSW64_IMM", 4, True, flavor="widen").emit() --- 93 unchanged lines hidden --- |