Unify programming of atomic command

Change-Id: I13afdb44fb83beaa8673eb6456d2a8edcb6ac047
Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2020-10-01 21:08:46 +02:00
committed by sys_ocldev
parent 5386f8be86
commit 2717fcae54
10 changed files with 75 additions and 81 deletions

View File

@ -5,6 +5,7 @@
*
*/
#include "shared/source/command_container/command_encoder.h"
#include "shared/source/gen9/hw_cmds.h"
#include "opencl/source/device_queue/device_queue_hw.h"
@ -38,14 +39,11 @@ void DeviceQueueHw<Family>::addArbCheckCmdWa() {
template <>
void DeviceQueueHw<Family>::addMiAtomicCmdWa(uint64_t atomicOpPlaceholder) {
auto miAtomic = slbCS.getSpaceForCmd<Family::MI_ATOMIC>();
*miAtomic = Family::cmdInitAtomic;
miAtomic->setAtomicOpcode(Family::MI_ATOMIC::ATOMIC_OPCODES::ATOMIC_8B_INCREMENT);
miAtomic->setReturnDataControl(0x1);
miAtomic->setCsStall(0x1);
miAtomic->setDataSize(Family::MI_ATOMIC::DATA_SIZE::DATA_SIZE_QWORD);
miAtomic->setMemoryAddress(static_cast<uint32_t>(atomicOpPlaceholder & 0x0000FFFFFFFFULL));
miAtomic->setMemoryAddressHigh(static_cast<uint32_t>((atomicOpPlaceholder >> 32) & 0x0000FFFFFFFFULL));
EncodeAtomic<Family>::programMiAtomic(slbCS,
atomicOpPlaceholder,
Family::MI_ATOMIC::ATOMIC_OPCODES::ATOMIC_8B_INCREMENT,
Family::MI_ATOMIC::DATA_SIZE::DATA_SIZE_QWORD,
0x1u, 0x1u);
}
template <>