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) { |
600 case IntRegClass: |
601 thread->setIntReg(idx.regIdx, mismatch_val); |
602 break; 603 case FloatRegClass: |
604 thread->setFloatRegBits(idx.regIdx, mismatch_val); |
605 break; 606 case CCRegClass: |
607 thread->setCCReg(idx.regIdx, mismatch_val); |
608 break; 609 case MiscRegClass: |
610 thread->setMiscReg(idx.regIdx, mismatch_val); |
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); |
618 inst->template popResult<uint64_t>(res); |
619 switch (idx.regClass) { |
620 case IntRegClass: |
621 thread->setIntReg(idx.regIdx, res); |
622 break; 623 case FloatRegClass: |
624 thread->setFloatRegBits(idx.regIdx, res); |
625 break; 626 case CCRegClass: |
627 thread->setCCReg(idx.regIdx, res); |
628 break; 629 case MiscRegClass: 630 // Try to get the proper misc register index for ARM here... |
631 thread->setMiscReg(idx.regIdx, res); |
632 break; 633 // else Register is out of range... 634 } 635 } 636} 637 638template <class Impl> 639void --- 45 unchanged lines hidden --- |