Skip to content

Commit

Permalink
AArch64: Use correct parameter for memory barrier instructions
Browse files Browse the repository at this point in the history
Use correct parameter for `dmb` instrutions.
- for shareability domain parameter, the correct one is `inner shareable domain`.
- barrier required after volatile load is an acquire barrier. A full barrier is not required.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
  • Loading branch information
Akira1Saitoh committed Apr 14, 2021
1 parent b326d5c commit d673188
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions compiler/aarch64/codegen/OMRTreeEvaluator.cpp
Expand Up @@ -418,7 +418,7 @@ TR::Register *commonLoadEvaluator(TR::Node *node, TR::InstOpCode::Mnemonic op, T

if (needSync)
{
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0xF); // dmb SY
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0x9); // dmb ishld
}

tempMR->decNodeReferenceCounts(cg);
Expand Down Expand Up @@ -479,7 +479,7 @@ OMR::ARM64::TreeEvaluator::aloadEvaluator(TR::Node *node, TR::CodeGenerator *cg)
bool needSync = (node->getSymbolReference()->getSymbol()->isSyncVolatile() && cg->comp()->target().isSMP());
if (needSync)
{
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0xF); // dmb SY
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0x9); // dmb ishld
}

tempMR->decNodeReferenceCounts(cg);
Expand Down Expand Up @@ -553,15 +553,15 @@ TR::Register *commonStoreEvaluator(TR::Node *node, TR::InstOpCode::Mnemonic op,

if (needSync)
{
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0xE); // dmb ST
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0xA); // dmb ishst
}
generateMemSrc1Instruction(cg, op, node, tempMR, cg->evaluate(valueChild));
if (needSync)
{
// ordered and lazySet operations will not generate a post-write sync
if (!lazyVolatile)
{
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0xF); // dmb SY
generateSynchronizationInstruction(cg, TR::InstOpCode::dmb, node, 0xB); // dmb ish
}
}

Expand Down

0 comments on commit d673188

Please sign in to comment.