Skip to content

Commit 7b0d89b

Browse files
authored
RyuJIT: Remove redundant memory barrier for XAdd and XChg on arm (#45970)
* Remove redundant memory barrier for XAdd and XChg on arm * Update codegenarm64.cpp * Same for casal
1 parent af2950f commit 7b0d89b

1 file changed

Lines changed: 2 additions & 12 deletions

File tree

src/coreclr/jit/codegenarm64.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2814,20 +2814,12 @@ void CodeGen::genLockedInstructions(GenTreeOp* treeNode)
28142814
GetEmitter()->emitIns_R_R_R(INS_swpal, dataSize, dataReg, targetReg, addrReg);
28152815
break;
28162816
case GT_XADD:
2817-
if ((targetReg == REG_NA) || (targetReg == REG_ZR))
2818-
{
2819-
GetEmitter()->emitIns_R_R(INS_staddl, dataSize, dataReg, addrReg);
2820-
}
2821-
else
2822-
{
2823-
GetEmitter()->emitIns_R_R_R(INS_ldaddal, dataSize, dataReg, targetReg, addrReg);
2824-
}
2817+
GetEmitter()->emitIns_R_R_R(INS_ldaddal, dataSize, dataReg, (targetReg == REG_NA) ? REG_ZR : targetReg,
2818+
addrReg);
28252819
break;
28262820
default:
28272821
assert(!"Unexpected treeNode->gtOper");
28282822
}
2829-
2830-
instGen_MemoryBarrier();
28312823
}
28322824
else
28332825
{
@@ -2955,8 +2947,6 @@ void CodeGen::genCodeForCmpXchg(GenTreeCmpXchg* treeNode)
29552947
noway_assert(dataReg != targetReg);
29562948
}
29572949
GetEmitter()->emitIns_R_R_R(INS_casal, dataSize, targetReg, dataReg, addrReg);
2958-
2959-
instGen_MemoryBarrier();
29602950
}
29612951
else
29622952
{

0 commit comments

Comments
 (0)