[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Tinycc-devel] [PATCH 1/4] stdatomic: atomic generator routines,
Dmitry Selyutin <=