ldstop.isa (8925:97f06a79b6f5) | ldstop.isa (9894:c0a3920859bd) |
---|---|
1// Copyright (c) 2007-2008 The Hewlett-Packard Development Company 2// All rights reserved. 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 396 unchanged lines hidden (view full) --- 405 defineMicroLoadOp('Ld', 'Data = merge(Data, Mem, dataSize);', 406 'Data = Mem & mask(dataSize * 8);') 407 defineMicroLoadOp('Ldst', 'Data = merge(Data, Mem, dataSize);', 408 'Data = Mem & mask(dataSize * 8);', 409 '(StoreCheck << FlagShift)') 410 defineMicroLoadOp('Ldstl', 'Data = merge(Data, Mem, dataSize);', 411 'Data = Mem & mask(dataSize * 8);', 412 '(StoreCheck << FlagShift) | Request::LOCKED') | 1// Copyright (c) 2007-2008 The Hewlett-Packard Development Company 2// All rights reserved. 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 396 unchanged lines hidden (view full) --- 405 defineMicroLoadOp('Ld', 'Data = merge(Data, Mem, dataSize);', 406 'Data = Mem & mask(dataSize * 8);') 407 defineMicroLoadOp('Ldst', 'Data = merge(Data, Mem, dataSize);', 408 'Data = Mem & mask(dataSize * 8);', 409 '(StoreCheck << FlagShift)') 410 defineMicroLoadOp('Ldstl', 'Data = merge(Data, Mem, dataSize);', 411 'Data = Mem & mask(dataSize * 8);', 412 '(StoreCheck << FlagShift) | Request::LOCKED') |
413 defineMicroLoadOp('Ldfp', 'FpData_uqw = Mem;', big = False) | |
414 | 413 |
414 defineMicroLoadOp('Ldfp', code='FpData_uqw = Mem', big = False) 415 416 defineMicroLoadOp('Ldfp87', code=''' 417 switch (dataSize) 418 { 419 case 4: 420 FpData_df = *(float *)&Mem; 421 break; 422 case 8: 423 FpData_df = *(double *)&Mem; 424 break; 425 default: 426 panic("Unhandled data size in LdFp87.\\n"); 427 } 428 ''', big = False) 429 |
|
415 def defineMicroStoreOp(mnemonic, code, completeCode="", mem_flags="0"): 416 global header_output 417 global decoder_output 418 global exec_output 419 global microopClasses 420 Name = mnemonic 421 name = mnemonic.lower() 422 --- 19 unchanged lines hidden (view full) --- 442 self.className = Name 443 self.mnemonic = name 444 445 microopClasses[name] = StoreOp 446 447 defineMicroStoreOp('St', 'Mem = pick(Data, 2, dataSize);') 448 defineMicroStoreOp('Stul', 'Mem = pick(Data, 2, dataSize);', 449 mem_flags="Request::LOCKED") | 430 def defineMicroStoreOp(mnemonic, code, completeCode="", mem_flags="0"): 431 global header_output 432 global decoder_output 433 global exec_output 434 global microopClasses 435 Name = mnemonic 436 name = mnemonic.lower() 437 --- 19 unchanged lines hidden (view full) --- 457 self.className = Name 458 self.mnemonic = name 459 460 microopClasses[name] = StoreOp 461 462 defineMicroStoreOp('St', 'Mem = pick(Data, 2, dataSize);') 463 defineMicroStoreOp('Stul', 'Mem = pick(Data, 2, dataSize);', 464 mem_flags="Request::LOCKED") |
450 defineMicroStoreOp('Stfp', 'Mem = FpData_uqw;') | 465 466 defineMicroStoreOp('Stfp', code='Mem = FpData_uqw;') 467 468 defineMicroStoreOp('Stfp87', code=''' 469 switch (dataSize) 470 { 471 case 4: { 472 float single(FpData_df); 473 Mem = *(uint32_t *)&single; 474 } break; 475 case 8: 476 Mem = *(uint64_t *)&FpData_df; 477 break; 478 default: 479 panic("Unhandled data size in StFp87.\\n"); 480 } 481 ''') 482 |
451 defineMicroStoreOp('Cda', 'Mem = 0;', mem_flags="Request::NO_ACCESS") 452 453 iop = InstObjParams("lea", "Lea", 'X86ISA::LdStOp', 454 {"code": "Data = merge(Data, EA, dataSize);", 455 "ea_code": ''' 456 EA = bits(scale * Index + Base + disp, addressSize * 8 - 1, 0); 457 '''}) 458 header_output += MicroLeaDeclare.subst(iop) --- 46 unchanged lines hidden --- | 483 defineMicroStoreOp('Cda', 'Mem = 0;', mem_flags="Request::NO_ACCESS") 484 485 iop = InstObjParams("lea", "Lea", 'X86ISA::LdStOp', 486 {"code": "Data = merge(Data, EA, dataSize);", 487 "ea_code": ''' 488 EA = bits(scale * Index + Base + disp, addressSize * 8 - 1, 0); 489 '''}) 490 header_output += MicroLeaDeclare.subst(iop) --- 46 unchanged lines hidden --- |