cpu_impl.hh (12104:edd63f9c6184) | cpu_impl.hh (12106:7784fac1b159) |
---|---|
1/* 2 * Copyright (c) 2011 ARM Limited 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 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 --- 581 unchanged lines hidden (view full) --- 590template <class Impl> 591void 592Checker<Impl>::copyResult(DynInstPtr &inst, uint64_t mismatch_val, 593 int start_idx) 594{ 595 // We've already popped one dest off the queue, 596 // so do the fix-up then start with the next dest reg; 597 if (start_idx >= 0) { | 1/* 2 * Copyright (c) 2011 ARM Limited 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 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 --- 581 unchanged lines hidden (view full) --- 590template <class Impl> 591void 592Checker<Impl>::copyResult(DynInstPtr &inst, uint64_t mismatch_val, 593 int start_idx) 594{ 595 // We've already popped one dest off the queue, 596 // so do the fix-up then start with the next dest reg; 597 if (start_idx >= 0) { |
598 RegId idx = inst->destRegIdx(start_idx); 599 switch (idx.regClass) { | 598 const RegId& idx = inst->destRegIdx(start_idx); 599 switch (idx.classValue()) { |
600 case IntRegClass: | 600 case IntRegClass: |
601 thread->setIntReg(idx.regIdx, mismatch_val); | 601 thread->setIntReg(idx.index(), mismatch_val); |
602 break; 603 case FloatRegClass: | 602 break; 603 case FloatRegClass: |
604 thread->setFloatRegBits(idx.regIdx, mismatch_val); | 604 thread->setFloatRegBits(idx.index(), mismatch_val); |
605 break; 606 case CCRegClass: | 605 break; 606 case CCRegClass: |
607 thread->setCCReg(idx.regIdx, mismatch_val); | 607 thread->setCCReg(idx.index(), mismatch_val); |
608 break; 609 case MiscRegClass: | 608 break; 609 case MiscRegClass: |
610 thread->setMiscReg(idx.regIdx, mismatch_val); | 610 thread->setMiscReg(idx.index(), mismatch_val); |
611 break; 612 } 613 } 614 start_idx++; 615 uint64_t res = 0; 616 for (int i = start_idx; i < inst->numDestRegs(); i++) { | 611 break; 612 } 613 } 614 start_idx++; 615 uint64_t res = 0; 616 for (int i = start_idx; i < inst->numDestRegs(); i++) { |
617 RegId idx = inst->destRegIdx(i); | 617 const RegId& idx = inst->destRegIdx(i); |
618 inst->template popResult<uint64_t>(res); | 618 inst->template popResult<uint64_t>(res); |
619 switch (idx.regClass) { | 619 switch (idx.classValue()) { |
620 case IntRegClass: | 620 case IntRegClass: |
621 thread->setIntReg(idx.regIdx, res); | 621 thread->setIntReg(idx.index(), res); |
622 break; 623 case FloatRegClass: | 622 break; 623 case FloatRegClass: |
624 thread->setFloatRegBits(idx.regIdx, res); | 624 thread->setFloatRegBits(idx.index(), res); |
625 break; 626 case CCRegClass: | 625 break; 626 case CCRegClass: |
627 thread->setCCReg(idx.regIdx, res); | 627 thread->setCCReg(idx.index(), res); |
628 break; 629 case MiscRegClass: 630 // Try to get the proper misc register index for ARM here... | 628 break; 629 case MiscRegClass: 630 // Try to get the proper misc register index for ARM here... |
631 thread->setMiscReg(idx.regIdx, res); | 631 thread->setMiscReg(idx.index(), res); |
632 break; 633 // else Register is out of range... 634 } 635 } 636} 637 638template <class Impl> 639void --- 45 unchanged lines hidden --- | 632 break; 633 // else Register is out of range... 634 } 635 } 636} 637 638template <class Impl> 639void --- 45 unchanged lines hidden --- |