main.cc (11534:7106f550afad) | main.cc (11639:2e8d4bd8108d) |
---|---|
1/* 2 * Copyright (c) 2012-2015 Advanced Micro Devices, Inc. 3 * All rights reserved. 4 * 5 * For use for simulation and test purposes only 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are met: --- 117 unchanged lines hidden (view full) --- 126 } 127 } 128 129 void 130 Ret::execute(GPUDynInstPtr gpuDynInst) 131 { 132 Wavefront *w = gpuDynInst->wavefront(); 133 | 1/* 2 * Copyright (c) 2012-2015 Advanced Micro Devices, Inc. 3 * All rights reserved. 4 * 5 * For use for simulation and test purposes only 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are met: --- 117 unchanged lines hidden (view full) --- 126 } 127 } 128 129 void 130 Ret::execute(GPUDynInstPtr gpuDynInst) 131 { 132 Wavefront *w = gpuDynInst->wavefront(); 133 |
134 const VectorMask &mask = w->get_pred(); | 134 const VectorMask &mask = w->getPred(); |
135 136 // mask off completed work-items 137 for (int lane = 0; lane < w->computeUnit->wfSize(); ++lane) { 138 if (mask[lane]) { | 135 136 // mask off completed work-items 137 for (int lane = 0; lane < w->computeUnit->wfSize(); ++lane) { 138 if (mask[lane]) { |
139 w->init_mask[lane] = 0; | 139 w->initMask[lane] = 0; |
140 } 141 142 } 143 144 // delete extra instructions fetched for completed work-items 145 w->instructionBuffer.erase(w->instructionBuffer.begin() + 1, 146 w->instructionBuffer.end()); 147 if (w->pendingFetch) { 148 w->dropFetch = true; 149 } 150 151 // if all work-items have completed, then wave-front is done | 140 } 141 142 } 143 144 // delete extra instructions fetched for completed work-items 145 w->instructionBuffer.erase(w->instructionBuffer.begin() + 1, 146 w->instructionBuffer.end()); 147 if (w->pendingFetch) { 148 w->dropFetch = true; 149 } 150 151 // if all work-items have completed, then wave-front is done |
152 if (w->init_mask.none()) { | 152 if (w->initMask.none()) { |
153 w->status = Wavefront::S_STOPPED; 154 155 int32_t refCount = w->computeUnit->getLds(). | 153 w->status = Wavefront::S_STOPPED; 154 155 int32_t refCount = w->computeUnit->getLds(). |
156 decreaseRefCounter(w->dispatchid, w->wg_id); | 156 decreaseRefCounter(w->dispatchId, w->wgId); |
157 158 DPRINTF(GPUExec, "CU%d: decrease ref ctr WG[%d] to [%d]\n", | 157 158 DPRINTF(GPUExec, "CU%d: decrease ref ctr WG[%d] to [%d]\n", |
159 w->computeUnit->cu_id, w->wg_id, refCount); | 159 w->computeUnit->cu_id, w->wgId, refCount); |
160 161 // free the vector registers of the completed wavefront 162 w->computeUnit->vectorRegsReserved[w->simdId] -= 163 w->reservedVectorRegs; 164 165 assert(w->computeUnit->vectorRegsReserved[w->simdId] >= 0); 166 167 uint32_t endIndex = (w->startVgprIndex + --- 28 unchanged lines hidden (view full) --- 196 } 197 } 198 199 void 200 Barrier::execute(GPUDynInstPtr gpuDynInst) 201 { 202 Wavefront *w = gpuDynInst->wavefront(); 203 | 160 161 // free the vector registers of the completed wavefront 162 w->computeUnit->vectorRegsReserved[w->simdId] -= 163 w->reservedVectorRegs; 164 165 assert(w->computeUnit->vectorRegsReserved[w->simdId] >= 0); 166 167 uint32_t endIndex = (w->startVgprIndex + --- 28 unchanged lines hidden (view full) --- 196 } 197 } 198 199 void 200 Barrier::execute(GPUDynInstPtr gpuDynInst) 201 { 202 Wavefront *w = gpuDynInst->wavefront(); 203 |
204 assert(w->barrier_cnt == w->old_barrier_cnt); 205 w->barrier_cnt = w->old_barrier_cnt + 1; | 204 assert(w->barrierCnt == w->oldBarrierCnt); 205 w->barrierCnt = w->oldBarrierCnt + 1; |
206 w->stalledAtBarrier = true; 207 } 208} // namespace HsailISA | 206 w->stalledAtBarrier = true; 207 } 208} // namespace HsailISA |