Use optab_libfunc to access sync_lock_test_and_set libfunc on hppa-linux.
2022-01-02 John David Anglin <danglin@gcc.gnu.org> gcc/ChangeLog: * config/pa/pa.md (atomic_storeq): Use optab_libfunc to access sync_lock_test_and_set libfunc. Call convert_memory_address to convert memory address to Pmode. (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
This commit is contained in:
parent
62eb5308fe
commit
4759c16bee
1 changed files with 12 additions and 12 deletions
|
@ -10366,10 +10366,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
|
|||
{
|
||||
if (TARGET_SYNC_LIBCALL)
|
||||
{
|
||||
rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_1");
|
||||
rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, QImode);
|
||||
rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
|
||||
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode,
|
||||
XEXP (operands[0], 0), Pmode,
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
|
||||
operands[1], QImode);
|
||||
DONE;
|
||||
}
|
||||
|
@ -10386,10 +10386,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
|
|||
{
|
||||
if (TARGET_SYNC_LIBCALL)
|
||||
{
|
||||
rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_2");
|
||||
rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, HImode);
|
||||
rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
|
||||
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode,
|
||||
XEXP (operands[0], 0), Pmode,
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
|
||||
operands[1], HImode);
|
||||
DONE;
|
||||
}
|
||||
|
@ -10406,10 +10406,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
|
|||
{
|
||||
if (TARGET_SYNC_LIBCALL)
|
||||
{
|
||||
rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_4");
|
||||
rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, SImode);
|
||||
rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
|
||||
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode,
|
||||
XEXP (operands[0], 0), Pmode,
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
|
||||
operands[1], SImode);
|
||||
DONE;
|
||||
}
|
||||
|
@ -10459,10 +10459,10 @@ add,l %2,%3,%3\;bv,n %%r0(%3)"
|
|||
|
||||
if (TARGET_SYNC_LIBCALL)
|
||||
{
|
||||
rtx libfunc = init_one_libfunc ("__sync_lock_test_and_set_8");
|
||||
rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, DImode);
|
||||
rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
|
||||
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode,
|
||||
XEXP (operands[0], 0), Pmode,
|
||||
emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
|
||||
operands[1], DImode);
|
||||
DONE;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue