diff options
Diffstat (limited to 'backend/src/backend/gen8_context.cpp')
-rw-r--r-- | backend/src/backend/gen8_context.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/backend/src/backend/gen8_context.cpp b/backend/src/backend/gen8_context.cpp index 40825681..aea87df2 100644 --- a/backend/src/backend/gen8_context.cpp +++ b/backend/src/backend/gen8_context.cpp @@ -1029,6 +1029,17 @@ namespace gbe p->UNTYPED_WRITEA64(addr, elemNum*2); } + void Gen8Context::emitAtomicA64Instruction(const SelectionInstruction &insn) + { + const GenRegister src = ra->genReg(insn.src(0)); + const GenRegister dst = ra->genReg(insn.dst(0)); + const uint32_t function = insn.extra.function; + unsigned srcNum = insn.extra.elem; + const GenRegister bti = ra->genReg(insn.src(srcNum)); + GBE_ASSERT(bti.value.ud == 0xff); + p->ATOMICA64(dst, function, src, bti, srcNum); + } + void Gen8Context::emitPackLongInstruction(const SelectionInstruction &insn) { const GenRegister src = ra->genReg(insn.src(0)); const GenRegister dst = ra->genReg(insn.dst(0)); |