branch.hh (11347:faf5195f6ca7) branch.hh (11534:7106f550afad)
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:

--- 265 unchanged lines hidden (view full) ---

274 const uint32_t rpc = static_cast<uint32_t>(ipdInstNum());
275 if (curr_rpc != rpc) {
276 w->pushToReconvergenceStack(rpc, curr_rpc, curr_mask);
277 }
278
279 // taken branch
280 const uint32_t true_pc = getTargetPc();
281 VectorMask true_mask;
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:

--- 265 unchanged lines hidden (view full) ---

274 const uint32_t rpc = static_cast<uint32_t>(ipdInstNum());
275 if (curr_rpc != rpc) {
276 w->pushToReconvergenceStack(rpc, curr_rpc, curr_mask);
277 }
278
279 // taken branch
280 const uint32_t true_pc = getTargetPc();
281 VectorMask true_mask;
282 for (unsigned int lane = 0; lane < VSZ; ++lane) {
282 for (unsigned int lane = 0; lane < w->computeUnit->wfSize(); ++lane) {
283 true_mask[lane] = cond.get<bool>(w, lane) & curr_mask[lane];
284 }
285
286 // not taken branch
287 const uint32_t false_pc = curr_pc + 1;
288 assert(true_pc != false_pc);
289 if (false_pc != rpc && true_mask.count() < curr_mask.count()) {
290 VectorMask false_mask = curr_mask & ~true_mask;

--- 152 unchanged lines hidden ---
283 true_mask[lane] = cond.get<bool>(w, lane) & curr_mask[lane];
284 }
285
286 // not taken branch
287 const uint32_t false_pc = curr_pc + 1;
288 assert(true_pc != false_pc);
289 if (false_pc != rpc && true_mask.count() < curr_mask.count()) {
290 VectorMask false_mask = curr_mask & ~true_mask;

--- 152 unchanged lines hidden ---