mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 19:25:58 +02:00
+ support intrinsic for the memory.atomic.notify WebAssembly instruction
This commit is contained in:
parent
86643710c4
commit
f1cb5d8f71
@ -589,6 +589,11 @@ implementation
|
|||||||
CheckParameters(3);
|
CheckParameters(3);
|
||||||
resultdef:=s32inttype;
|
resultdef:=s32inttype;
|
||||||
end;
|
end;
|
||||||
|
in_wasm32_memory_atomic_notify:
|
||||||
|
begin
|
||||||
|
CheckParameters(2);
|
||||||
|
resultdef:=u32inttype;
|
||||||
|
end;
|
||||||
else
|
else
|
||||||
Result:=inherited pass_typecheck_cpu;
|
Result:=inherited pass_typecheck_cpu;
|
||||||
end;
|
end;
|
||||||
@ -658,7 +663,8 @@ implementation
|
|||||||
in_wasm32_i64_atomic_rmw32_cmpxchg_u,
|
in_wasm32_i64_atomic_rmw32_cmpxchg_u,
|
||||||
in_wasm32_i64_atomic_rmw_cmpxchg,
|
in_wasm32_i64_atomic_rmw_cmpxchg,
|
||||||
in_wasm32_memory_atomic_wait32,
|
in_wasm32_memory_atomic_wait32,
|
||||||
in_wasm32_memory_atomic_wait64:
|
in_wasm32_memory_atomic_wait64,
|
||||||
|
in_wasm32_memory_atomic_notify:
|
||||||
expectloc:=LOC_REGISTER;
|
expectloc:=LOC_REGISTER;
|
||||||
else
|
else
|
||||||
Result:=inherited first_cpu;
|
Result:=inherited first_cpu;
|
||||||
@ -785,6 +791,8 @@ implementation
|
|||||||
second_atomic_rmw_x_y_z(a_memory_atomic_wait32);
|
second_atomic_rmw_x_y_z(a_memory_atomic_wait32);
|
||||||
in_wasm32_memory_atomic_wait64:
|
in_wasm32_memory_atomic_wait64:
|
||||||
second_atomic_rmw_x_y_z(a_memory_atomic_wait64);
|
second_atomic_rmw_x_y_z(a_memory_atomic_wait64);
|
||||||
|
in_wasm32_memory_atomic_notify:
|
||||||
|
second_atomic_rmw_x_y(a_memory_atomic_notify);
|
||||||
else
|
else
|
||||||
inherited pass_generate_code_cpu;
|
inherited pass_generate_code_cpu;
|
||||||
end;
|
end;
|
||||||
|
@ -83,4 +83,5 @@ function fpc_wasm32_i64_atomic_rmw_cmpxchg_u(Dest: PLongWord; Expected, Replacem
|
|||||||
|
|
||||||
function fpc_wasm32_memory_atomic_wait32(Dest: PLongWord; Expected: LongWord; Timeout: Int64): LongInt;[internproc:fpc_in_wasm32_memory_atomic_wait32];
|
function fpc_wasm32_memory_atomic_wait32(Dest: PLongWord; Expected: LongWord; Timeout: Int64): LongInt;[internproc:fpc_in_wasm32_memory_atomic_wait32];
|
||||||
function fpc_wasm32_memory_atomic_wait64(Dest: PQWord; Expected: QWord; Timeout: Int64): LongInt;[internproc:fpc_in_wasm32_memory_atomic_wait64];
|
function fpc_wasm32_memory_atomic_wait64(Dest: PQWord; Expected: QWord; Timeout: Int64): LongInt;[internproc:fpc_in_wasm32_memory_atomic_wait64];
|
||||||
|
function fpc_wasm32_memory_atomic_notify(Address: Pointer; Count: LongWord): LongWord;[internproc:fpc_in_wasm32_memory_atomic_notify];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user