inst_queue_impl.hh (10797:855cafd64da1) | inst_queue_impl.hh (10807:dac26eb4cb64) |
---|---|
1/* 2 * Copyright (c) 2011-2014 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 --- 811 unchanged lines hidden (view full) --- 820 i2e_info->size++; 821 instsToExecute.push_back(issuing_inst); 822 823 // Add the FU onto the list of FU's to be freed next 824 // cycle if we used one. 825 if (idx >= 0) 826 fuPool->freeUnitNextCycle(idx); 827 } else { | 1/* 2 * Copyright (c) 2011-2014 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 --- 811 unchanged lines hidden (view full) --- 820 i2e_info->size++; 821 instsToExecute.push_back(issuing_inst); 822 823 // Add the FU onto the list of FU's to be freed next 824 // cycle if we used one. 825 if (idx >= 0) 826 fuPool->freeUnitNextCycle(idx); 827 } else { |
828 Cycles issue_latency = fuPool->getIssueLatency(op_class); | 828 bool pipelined = fuPool->isPipelined(op_class); |
829 // Generate completion event for the FU 830 ++wbOutstanding; 831 FUCompletion *execution = new FUCompletion(issuing_inst, 832 idx, this); 833 834 cpu->schedule(execution, 835 cpu->clockEdge(Cycles(op_latency - 1))); 836 | 829 // Generate completion event for the FU 830 ++wbOutstanding; 831 FUCompletion *execution = new FUCompletion(issuing_inst, 832 idx, this); 833 834 cpu->schedule(execution, 835 cpu->clockEdge(Cycles(op_latency - 1))); 836 |
837 // @todo: Enforce that issue_latency == 1 or op_latency 838 if (issue_latency > Cycles(1)) { | 837 if (!pipelined) { |
839 // If FU isn't pipelined, then it must be freed 840 // upon the execution completing. 841 execution->setFreeFU(); 842 } else { 843 // Add the FU onto the list of FU's to be freed next cycle. 844 fuPool->freeUnitNextCycle(idx); 845 } 846 } --- 729 unchanged lines hidden --- | 838 // If FU isn't pipelined, then it must be freed 839 // upon the execution completing. 840 execution->setFreeFU(); 841 } else { 842 // Add the FU onto the list of FU's to be freed next cycle. 843 fuPool->freeUnitNextCycle(idx); 844 } 845 } --- 729 unchanged lines hidden --- |