فهرست منبع

+ support the atomic instructions in the WebAssembly inline asm reader

Nikolay Nikolov 1 سال پیش
والد
کامیت
43229cdf2e
1فایلهای تغییر یافته به همراه79 افزوده شده و 2 حذف شده
  1. 79 2
      compiler/wasm32/rawasmtext.pas

+ 79 - 2
compiler/wasm32/rawasmtext.pas

@@ -786,7 +786,9 @@ Unit rawasmtext;
                 a_i32_extend16_s,
                 a_i64_extend8_s,
                 a_i64_extend16_s,
-                a_i64_extend32_s:
+                a_i64_extend32_s,
+
+                a_atomic_fence:
                   ;
                 { instructions with an integer const operand }
                 a_i32_const,
@@ -858,7 +860,82 @@ Unit rawasmtext;
                 a_i32_store16,
                 a_i64_store8,
                 a_i64_store16,
-                a_i64_store32:
+                a_i64_store32,
+
+                a_memory_atomic_notify,
+                a_memory_atomic_wait32,
+                a_memory_atomic_wait64,
+
+                a_i32_atomic_load,
+                a_i64_atomic_load,
+                a_i32_atomic_load8_u,
+                a_i32_atomic_load16_u,
+                a_i64_atomic_load8_u,
+                a_i64_atomic_load16_u,
+                a_i64_atomic_load32_u,
+                a_i32_atomic_store,
+                a_i64_atomic_store,
+                a_i32_atomic_store8,
+                a_i32_atomic_store16,
+                a_i64_atomic_store8,
+                a_i64_atomic_store16,
+                a_i64_atomic_store32,
+
+                a_i32_atomic_rmw_add,
+                a_i64_atomic_rmw_add,
+                a_i32_atomic_rmw8_add_u,
+                a_i32_atomic_rmw16_add_u,
+                a_i64_atomic_rmw8_add_u,
+                a_i64_atomic_rmw16_add_u,
+                a_i64_atomic_rmw32_add_u,
+
+                a_i32_atomic_rmw_sub,
+                a_i64_atomic_rmw_sub,
+                a_i32_atomic_rmw8_sub_u,
+                a_i32_atomic_rmw16_sub_u,
+                a_i64_atomic_rmw8_sub_u,
+                a_i64_atomic_rmw16_sub_u,
+                a_i64_atomic_rmw32_sub_u,
+
+                a_i32_atomic_rmw_and,
+                a_i64_atomic_rmw_and,
+                a_i32_atomic_rmw8_and_u,
+                a_i32_atomic_rmw16_and_u,
+                a_i64_atomic_rmw8_and_u,
+                a_i64_atomic_rmw16_and_u,
+                a_i64_atomic_rmw32_and_u,
+
+                a_i32_atomic_rmw_or,
+                a_i64_atomic_rmw_or,
+                a_i32_atomic_rmw8_or_u,
+                a_i32_atomic_rmw16_or_u,
+                a_i64_atomic_rmw8_or_u,
+                a_i64_atomic_rmw16_or_u,
+                a_i64_atomic_rmw32_or_u,
+
+                a_i32_atomic_rmw_xor,
+                a_i64_atomic_rmw_xor,
+                a_i32_atomic_rmw8_xor_u,
+                a_i32_atomic_rmw16_xor_u,
+                a_i64_atomic_rmw8_xor_u,
+                a_i64_atomic_rmw16_xor_u,
+                a_i64_atomic_rmw32_xor_u,
+
+                a_i32_atomic_rmw_xchg,
+                a_i64_atomic_rmw_xchg,
+                a_i32_atomic_rmw8_xchg_u,
+                a_i32_atomic_rmw16_xchg_u,
+                a_i64_atomic_rmw8_xchg_u,
+                a_i64_atomic_rmw16_xchg_u,
+                a_i64_atomic_rmw32_xchg_u,
+
+                a_i32_atomic_rmw_cmpxchg,
+                a_i64_atomic_rmw_cmpxchg,
+                a_i32_atomic_rmw8_cmpxchg_u,
+                a_i32_atomic_rmw16_cmpxchg_u,
+                a_i64_atomic_rmw8_cmpxchg_u,
+                a_i64_atomic_rmw16_cmpxchg_u,
+                a_i64_atomic_rmw32_cmpxchg_u:
                   begin
                     { TODO: parse the optional memarg operand }
                     result.ops:=1;