tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] [PATCH 1/4] stdatomic: atomic generator routines


From: Dmitry Selyutin
Subject: [Tinycc-devel] [PATCH 1/4] stdatomic: atomic generator routines
Date: Sun, 14 Feb 2021 22:52:10 +0300

---
 arm-gen.c     | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
 arm64-gen.c   | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
 c67-gen.c     | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
 i386-gen.c    | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
 riscv64-gen.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tcc.h         | 18 +++++++++++++++++
 x86_64-gen.c  | 54 +++++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 348 insertions(+)

diff --git a/arm-gen.c b/arm-gen.c
index bc308c2..5980436 100644
--- a/arm-gen.c
+++ b/arm-gen.c
@@ -2385,6 +2385,61 @@ ST_FUNC void gen_vla_alloc(CType *type, int align) {
 #endif
 }

+ST_FUNC void gen_atomic_init(int mode)
+{
+    tcc_error("atomic_init not implemented");
+}
+
+ST_FUNC void gen_atomic_store(int mode)
+{
+    tcc_error("atomic_store not implemented");
+}
+
+ST_FUNC void gen_atomic_load(int mode)
+{
+    tcc_error("atomic_load not implemented");
+}
+
+ST_FUNC void gen_atomic_exchange(int mode)
+{
+    tcc_error("atomic_exchange not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_strong(int mode)
+{
+    tcc_error("atomic_compare_exchange_strong not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_weak(int mode)
+{
+    tcc_error("atomic_compare_exchange_weak not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_add(int mode)
+{
+    tcc_error("atomic_fetch_add not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_sub(int mode)
+{
+    tcc_error("atomic_fetch_sub not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_or(int mode)
+{
+    tcc_error("atomic_fetch_or not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_xor(int mode)
+{
+    tcc_error("atomic_fetch_xor not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_and(int mode)
+{
+    tcc_error("atomic_fetch_and not implemented");
+}
+
 /* end of ARM code generator */
 /*************************************************************/
 #endif
diff --git a/arm64-gen.c b/arm64-gen.c
index ca38b3a..751c809 100644
--- a/arm64-gen.c
+++ b/arm64-gen.c
@@ -2097,6 +2097,61 @@ ST_FUNC void gen_vla_alloc(CType *type, int align) {
 #endif
 }

+ST_FUNC void gen_atomic_init(int mode)
+{
+    tcc_error("atomic_init not implemented");
+}
+
+ST_FUNC void gen_atomic_store(int mode)
+{
+    tcc_error("atomic_store not implemented");
+}
+
+ST_FUNC void gen_atomic_load(int mode)
+{
+    tcc_error("atomic_load not implemented");
+}
+
+ST_FUNC void gen_atomic_exchange(int mode)
+{
+    tcc_error("atomic_exchange not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_strong(int mode)
+{
+    tcc_error("atomic_compare_exchange_strong not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_weak(int mode)
+{
+    tcc_error("atomic_compare_exchange_weak not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_add(int mode)
+{
+    tcc_error("atomic_fetch_add not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_sub(int mode)
+{
+    tcc_error("atomic_fetch_sub not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_or(int mode)
+{
+    tcc_error("atomic_fetch_or not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_xor(int mode)
+{
+    tcc_error("atomic_fetch_xor not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_and(int mode)
+{
+    tcc_error("atomic_fetch_and not implemented");
+}
+
 /* end of A64 code generator */
 /*************************************************************/
 #endif
diff --git a/c67-gen.c b/c67-gen.c
index 6ebe718..53a661d 100644
--- a/c67-gen.c
+++ b/c67-gen.c
@@ -2537,6 +2537,61 @@ ST_FUNC void gen_vla_alloc(CType *type, int align) {
     tcc_error("variable length arrays unsupported for this target");
 }

+ST_FUNC void gen_atomic_init(int mode)
+{
+    tcc_error("atomic_init not implemented");
+}
+
+ST_FUNC void gen_atomic_store(int mode)
+{
+    tcc_error("atomic_store not implemented");
+}
+
+ST_FUNC void gen_atomic_load(int mode)
+{
+    tcc_error("atomic_load not implemented");
+}
+
+ST_FUNC void gen_atomic_exchange(int mode)
+{
+    tcc_error("atomic_exchange not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_strong(int mode)
+{
+    tcc_error("atomic_compare_exchange_strong not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_weak(int mode)
+{
+    tcc_error("atomic_compare_exchange_weak not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_add(int mode)
+{
+    tcc_error("atomic_fetch_add not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_sub(int mode)
+{
+    tcc_error("atomic_fetch_sub not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_or(int mode)
+{
+    tcc_error("atomic_fetch_or not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_xor(int mode)
+{
+    tcc_error("atomic_fetch_xor not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_and(int mode)
+{
+    tcc_error("atomic_fetch_and not implemented");
+}
+
 /* end of C67 code generator */
 /*************************************************************/
 #endif
diff --git a/i386-gen.c b/i386-gen.c
index 2f32944..43a5055 100644
--- a/i386-gen.c
+++ b/i386-gen.c
@@ -1134,6 +1134,61 @@ ST_FUNC void gen_vla_alloc(CType *type, int align) {
     }
 }

+ST_FUNC void gen_atomic_init(int mode)
+{
+    tcc_error("atomic_init not implemented");
+}
+
+ST_FUNC void gen_atomic_store(int mode)
+{
+    tcc_error("atomic_store not implemented");
+}
+
+ST_FUNC void gen_atomic_load(int mode)
+{
+    tcc_error("atomic_load not implemented");
+}
+
+ST_FUNC void gen_atomic_exchange(int mode)
+{
+    tcc_error("atomic_exchange not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_strong(int mode)
+{
+    tcc_error("atomic_compare_exchange_strong not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_weak(int mode)
+{
+    tcc_error("atomic_compare_exchange_weak not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_add(int mode)
+{
+    tcc_error("atomic_fetch_add not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_sub(int mode)
+{
+    tcc_error("atomic_fetch_sub not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_or(int mode)
+{
+    tcc_error("atomic_fetch_or not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_xor(int mode)
+{
+    tcc_error("atomic_fetch_xor not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_and(int mode)
+{
+    tcc_error("atomic_fetch_and not implemented");
+}
+
 /* end of X86 code generator */
 /*************************************************************/
 #endif
diff --git a/riscv64-gen.c b/riscv64-gen.c
index 8cbfcb7..4233203 100644
--- a/riscv64-gen.c
+++ b/riscv64-gen.c
@@ -1414,4 +1414,60 @@ ST_FUNC void gen_vla_alloc(CType *type, int align)
     }
 #endif
 }
+
+ST_FUNC void gen_atomic_init(int mode)
+{
+    tcc_error("atomic_init not implemented");
+}
+
+ST_FUNC void gen_atomic_store(int mode)
+{
+    tcc_error("atomic_store not implemented");
+}
+
+ST_FUNC void gen_atomic_load(int mode)
+{
+    tcc_error("atomic_load not implemented");
+}
+
+ST_FUNC void gen_atomic_exchange(int mode)
+{
+    tcc_error("atomic_exchange not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_strong(int mode)
+{
+    tcc_error("atomic_compare_exchange_strong not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_weak(int mode)
+{
+    tcc_error("atomic_compare_exchange_weak not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_add(int mode)
+{
+    tcc_error("atomic_fetch_add not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_sub(int mode)
+{
+    tcc_error("atomic_fetch_sub not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_or(int mode)
+{
+    tcc_error("atomic_fetch_or not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_xor(int mode)
+{
+    tcc_error("atomic_fetch_xor not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_and(int mode)
+{
+    tcc_error("atomic_fetch_and not implemented");
+}
+
 #endif
diff --git a/tcc.h b/tcc.h
index 3f8647d..433d223 100644
--- a/tcc.h
+++ b/tcc.h
@@ -1671,6 +1671,24 @@ ST_FUNC void gen_vla_sp_save(int addr);
 ST_FUNC void gen_vla_sp_restore(int addr);
 ST_FUNC void gen_vla_alloc(CType *type, int align);

+enum {
+    GEN_ATOMIC_MODE_8,
+    GEN_ATOMIC_MODE_16,
+    GEN_ATOMIC_MODE_32,
+    GEN_ATOMIC_MODE_64,
+};
+ST_FUNC void gen_atomic_init(int mode);
+ST_FUNC void gen_atomic_store(int mode);
+ST_FUNC void gen_atomic_load(int mode);
+ST_FUNC void gen_atomic_exchange(int mode);
+ST_FUNC void gen_atomic_compare_exchange_strong(int mode);
+ST_FUNC void gen_atomic_compare_exchange_weak(int mode);
+ST_FUNC void gen_atomic_fetch_add(int mode);
+ST_FUNC void gen_atomic_fetch_sub(int mode);
+ST_FUNC void gen_atomic_fetch_or(int mode);
+ST_FUNC void gen_atomic_fetch_xor(int mode);
+ST_FUNC void gen_atomic_fetch_and(int mode);
+
 static inline uint16_t read16le(unsigned char *p) {
     return p[0] | (uint16_t)p[1] << 8;
 }
diff --git a/x86_64-gen.c b/x86_64-gen.c
index f8c5634..0ff2041 100644
--- a/x86_64-gen.c
+++ b/x86_64-gen.c
@@ -2264,6 +2264,60 @@ ST_FUNC void gen_vla_alloc(CType *type, int align) {
     }
 }

+ST_FUNC void gen_atomic_init(int mode)
+{
+    tcc_error("atomic_init not implemented");
+}
+
+ST_FUNC void gen_atomic_store(int mode)
+{
+    tcc_error("atomic_store not implemented");
+}
+
+ST_FUNC void gen_atomic_load(int mode)
+{
+    tcc_error("atomic_load not implemented");
+}
+
+ST_FUNC void gen_atomic_exchange(int mode)
+{
+    tcc_error("atomic_exchange not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_strong(int mode)
+{
+    tcc_error("atomic_compare_exchange_strong not implemented");
+}
+
+ST_FUNC void gen_atomic_compare_exchange_weak(int mode)
+{
+    tcc_error("atomic_compare_exchange_weak not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_add(int mode)
+{
+    tcc_error("atomic_fetch_add not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_sub(int mode)
+{
+    tcc_error("atomic_fetch_sub not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_or(int mode)
+{
+    tcc_error("atomic_fetch_or not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_xor(int mode)
+{
+    tcc_error("atomic_fetch_xor not implemented");
+}
+
+ST_FUNC void gen_atomic_fetch_and(int mode)
+{
+    tcc_error("atomic_fetch_and not implemented");
+}

 /* end of x86-64 code generator */
 /*************************************************************/
--
2.30.0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]