From: Soumya AR <[email protected]>
This patch adds builtin types and function declarations for integer atomic fetch
min/max operations.
---
At RTL level, we distinguish between signed and unsigned min/max operations
based on the optab: SMIN/SMAX or UMIN/UMAX (rather than just using min/max) as
signedness is not encoded in the data type but in the operation performed.
To model the same behaviour at a builtin level, we define new signed integer
types for builtins, and use these to create signed and unsigned versions of the
min/max builtins.
One could distinguish on the data type at GIMPLE level, but this implementation
keeps the split the same at the builtin level as is at the optab level, which
seems a bit cleaner.
---
We also create generic __atomic_fetch_{s,u}max/min builtins to have consistency
with the libatomic patches later.
This won't make any difference to users, as they would only use the generic,
sign-agnostic versions of the builtins.
Signed-off-by: Soumya AR <[email protected]>
gcc/ChangeLog:
* builtin-types.def (BT_SI1):
(BT_SI2): New type.
(BT_SI4): Likewise.
(BT_SI8): Likewise.
(BT_SI16): Likewise.
(BT_FN_SI1_VPTR_SI1_INT): New builtin function type.
(BT_FN_SI2_VPTR_SI2_INT): Likewise.
(BT_FN_SI4_VPTR_SI4_INT): Likewise.
(BT_FN_SI8_VPTR_SI8_INT): Likewise.
(BT_FN_SI16_VPTR_SI16_INT): Likewise.
* sync-builtins.def
(BUILT_IN_ATOMIC_FETCH_MAX_N): New builtin function.
(BUILT_IN_ATOMIC_FETCH_SMAX_N): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMAX_1): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMAX_2): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMAX_4): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMAX_8): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMAX_16): Likewise.
(BUILT_IN_ATOMIC_FETCH_MIN_N): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMIN_N): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMIN_1): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMIN_2): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMIN_4): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMIN_8): Likewise.
(BUILT_IN_ATOMIC_FETCH_SMIN_16): Likewise.
(BUILT_IN_ATOMIC_MAX_FETCH_N): Likewise.
(BUILT_IN_ATOMIC_SMAX_FETCH_N): Likewise.
(BUILT_IN_ATOMIC_SMAX_FETCH_1): Likewise.
(BUILT_IN_ATOMIC_SMAX_FETCH_2): Likewise.
(BUILT_IN_ATOMIC_SMAX_FETCH_4): Likewise.
(BUILT_IN_ATOMIC_SMAX_FETCH_8): Likewise.
(BUILT_IN_ATOMIC_SMAX_FETCH_16): Likewise.
(BUILT_IN_ATOMIC_MIN_FETCH_N): Likewise.
(BUILT_IN_ATOMIC_SMIN_FETCH_N): Likewise.
(BUILT_IN_ATOMIC_SMIN_FETCH_1): Likewise.
(BUILT_IN_ATOMIC_SMIN_FETCH_2): Likewise.
(BUILT_IN_ATOMIC_SMIN_FETCH_4): Likewise.
(BUILT_IN_ATOMIC_SMIN_FETCH_8): Likewise.
(BUILT_IN_ATOMIC_SMIN_FETCH_16): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMAX_N): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMAX_1): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMAX_2): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMAX_4): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMAX_8): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMAX_16): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMIN_N): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMIN_1): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMIN_2): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMIN_4): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMIN_8): Likewise.
(BUILT_IN_ATOMIC_FETCH_UMIN_16): Likewise.
(BUILT_IN_ATOMIC_UMAX_FETCH_N): Likewise.
(BUILT_IN_ATOMIC_UMAX_FETCH_1): Likewise.
(BUILT_IN_ATOMIC_UMAX_FETCH_2): Likewise.
(BUILT_IN_ATOMIC_UMAX_FETCH_4): Likewise.
(BUILT_IN_ATOMIC_UMAX_FETCH_8): Likewise.
(BUILT_IN_ATOMIC_UMAX_FETCH_16): Likewise.
(BUILT_IN_ATOMIC_UMIN_FETCH_N): Likewise.
(BUILT_IN_ATOMIC_UMIN_FETCH_1): Likewise.
(BUILT_IN_ATOMIC_UMIN_FETCH_2): Likewise.
(BUILT_IN_ATOMIC_UMIN_FETCH_4): Likewise.
(BUILT_IN_ATOMIC_UMIN_FETCH_8): Likewise.
(BUILT_IN_ATOMIC_UMIN_FETCH_16): Likewise.
gcc/fortran/ChangeLog:
* types.def (BT_SI1): New type.
(BT_SI2): Likewise.
(BT_SI4): Likewise.
(BT_SI8): Likewise.
(BT_SI16): Likewise.
(BT_FN_SI1_VPTR_SI1_INT): New builtin function type.
(BT_FN_SI2_VPTR_SI2_INT): Likewise.
(BT_FN_SI4_VPTR_SI4_INT): Likewise.
(BT_FN_SI8_VPTR_SI8_INT): Likewise.
(BT_FN_SI16_VPTR_SI16_INT): Likewise.
---
gcc/builtin-types.def | 11 +++
gcc/fortran/types.def | 11 +++
gcc/sync-builtins.def | 164 ++++++++++++++++++++++++++++++++++++++++++
3 files changed, 186 insertions(+)
diff --git a/gcc/builtin-types.def b/gcc/builtin-types.def
index 9583d30dfc0..92f0e40c965 100644
--- a/gcc/builtin-types.def
+++ b/gcc/builtin-types.def
@@ -215,6 +215,12 @@ DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size
(BITS_PER_UNIT*4, 1))
DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
+DEF_PRIMITIVE_TYPE (BT_SI1, builtin_type_for_size (BITS_PER_UNIT*1, 0))
+DEF_PRIMITIVE_TYPE (BT_SI2, builtin_type_for_size (BITS_PER_UNIT*2, 0))
+DEF_PRIMITIVE_TYPE (BT_SI4, builtin_type_for_size (BITS_PER_UNIT*4, 0))
+DEF_PRIMITIVE_TYPE (BT_SI8, builtin_type_for_size (BITS_PER_UNIT*8, 0))
+DEF_PRIMITIVE_TYPE (BT_SI16, builtin_type_for_size (BITS_PER_UNIT*16, 0))
+
/* The C type `char * const *'. */
DEF_PRIMITIVE_TYPE (BT_PTR_CONST_STRING,
build_pointer_type
@@ -810,6 +816,11 @@ DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_INT, BT_I2,
BT_VOLATILE_PTR, BT_I2, BT_INT
DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI1_VPTR_SI1_INT, BT_SI1, BT_VOLATILE_PTR, BT_SI1,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI2_VPTR_SI2_INT, BT_SI2, BT_VOLATILE_PTR, BT_SI2,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI4_VPTR_SI4_INT, BT_SI4, BT_VOLATILE_PTR, BT_SI4,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI8_VPTR_SI8_INT, BT_SI8, BT_VOLATILE_PTR, BT_SI8,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI16_VPTR_SI16_INT, BT_SI16, BT_VOLATILE_PTR,
BT_SI16, BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4,
BT_INT)
diff --git a/gcc/fortran/types.def b/gcc/fortran/types.def
index dd9b8df59be..d1ec9729ffb 100644
--- a/gcc/fortran/types.def
+++ b/gcc/fortran/types.def
@@ -59,6 +59,12 @@ DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size
(BITS_PER_UNIT*4, 1))
DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
+DEF_PRIMITIVE_TYPE (BT_SI1, builtin_type_for_size (BITS_PER_UNIT*1, 0))
+DEF_PRIMITIVE_TYPE (BT_SI2, builtin_type_for_size (BITS_PER_UNIT*2, 0))
+DEF_PRIMITIVE_TYPE (BT_SI4, builtin_type_for_size (BITS_PER_UNIT*4, 0))
+DEF_PRIMITIVE_TYPE (BT_SI8, builtin_type_for_size (BITS_PER_UNIT*8, 0))
+DEF_PRIMITIVE_TYPE (BT_SI16, builtin_type_for_size (BITS_PER_UNIT*16, 0))
+
DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
@@ -146,6 +152,11 @@ DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_INT, BT_I2,
BT_VOLATILE_PTR, BT_I2, BT_INT
DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI1_VPTR_SI1_INT, BT_SI1, BT_VOLATILE_PTR, BT_SI1,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI2_VPTR_SI2_INT, BT_SI2, BT_VOLATILE_PTR, BT_SI2,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI4_VPTR_SI4_INT, BT_SI4, BT_VOLATILE_PTR, BT_SI4,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI8_VPTR_SI8_INT, BT_SI8, BT_VOLATILE_PTR, BT_SI8,
BT_INT)
+DEF_FUNCTION_TYPE_3 (BT_FN_SI16_VPTR_SI16_INT, BT_SI16, BT_VOLATILE_PTR,
BT_SI16, BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2,
BT_INT)
DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4,
BT_INT)
diff --git a/gcc/sync-builtins.def b/gcc/sync-builtins.def
index 0f058187a20..5cabd3fa273 100644
--- a/gcc/sync-builtins.def
+++ b/gcc/sync-builtins.def
@@ -589,6 +589,170 @@ DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16,
"__atomic_fetch_or_16",
BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_MAX_N,
+ "__atomic_fetch_max",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMAX_N,
+ "__atomic_fetch_smax",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMAX_1,
+ "__atomic_fetch_smax_1",
+ BT_FN_SI1_VPTR_SI1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMAX_2,
+ "__atomic_fetch_smax_2",
+ BT_FN_SI2_VPTR_SI2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMAX_4,
+ "__atomic_fetch_smax_4",
+ BT_FN_SI4_VPTR_SI4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMAX_8,
+ "__atomic_fetch_smax_8",
+ BT_FN_SI8_VPTR_SI8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMAX_16,
+ "__atomic_fetch_smax_16",
+ BT_FN_SI16_VPTR_SI16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_MIN_N,
+ "__atomic_fetch_min",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMIN_N,
+ "__atomic_fetch_smin",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMIN_1,
+ "__atomic_fetch_smin_1",
+ BT_FN_SI1_VPTR_SI1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMIN_2,
+ "__atomic_fetch_smin_2",
+ BT_FN_SI2_VPTR_SI2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMIN_4,
+ "__atomic_fetch_smin_4",
+ BT_FN_SI4_VPTR_SI4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMIN_8,
+ "__atomic_fetch_smin_8",
+ BT_FN_SI8_VPTR_SI8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SMIN_16,
+ "__atomic_fetch_smin_16",
+ BT_FN_SI16_VPTR_SI16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_MAX_FETCH_N,
+ "__atomic_max_fetch",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMAX_FETCH_N,
+ "__atomic_smax_fetch",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMAX_FETCH_1,
+ "__atomic_smax_fetch_1",
+ BT_FN_SI1_VPTR_SI1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMAX_FETCH_2,
+ "__atomic_smax_fetch_2",
+ BT_FN_SI2_VPTR_SI2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMAX_FETCH_4,
+ "__atomic_smax_fetch_4",
+ BT_FN_SI4_VPTR_SI4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMAX_FETCH_8,
+ "__atomic_smax_fetch_8",
+ BT_FN_SI8_VPTR_SI8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMAX_FETCH_16,
+ "__atomic_smax_fetch_16",
+ BT_FN_SI16_VPTR_SI16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_MIN_FETCH_N,
+ "__atomic_min_fetch",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMIN_FETCH_N,
+ "__atomic_smin_fetch",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMIN_FETCH_1,
+ "__atomic_smin_fetch_1",
+ BT_FN_SI1_VPTR_SI1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMIN_FETCH_2,
+ "__atomic_smin_fetch_2",
+ BT_FN_SI2_VPTR_SI2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMIN_FETCH_4,
+ "__atomic_smin_fetch_4",
+ BT_FN_SI4_VPTR_SI4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMIN_FETCH_8,
+ "__atomic_smin_fetch_8",
+ BT_FN_SI8_VPTR_SI8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SMIN_FETCH_16,
+ "__atomic_smin_fetch_16",
+ BT_FN_SI16_VPTR_SI16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMAX_N,
+ "__atomic_fetch_umax",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMAX_1,
+ "__atomic_fetch_umax_1",
+ BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMAX_2,
+ "__atomic_fetch_umax_2",
+ BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMAX_4,
+ "__atomic_fetch_umax_4",
+ BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMAX_8,
+ "__atomic_fetch_umax_8",
+ BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMAX_16,
+ "__atomic_fetch_umax_16",
+ BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMIN_N,
+ "__atomic_fetch_umin",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMIN_1,
+ "__atomic_fetch_umin_1",
+ BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMIN_2,
+ "__atomic_fetch_umin_2",
+ BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMIN_4,
+ "__atomic_fetch_umin_4",
+ BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMIN_8,
+ "__atomic_fetch_umin_8",
+ BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_UMIN_16,
+ "__atomic_fetch_umin_16",
+ BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMAX_FETCH_N,
+ "__atomic_umax_fetch",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMAX_FETCH_1,
+ "__atomic_umax_fetch_1",
+ BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMAX_FETCH_2,
+ "__atomic_umax_fetch_2",
+ BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMAX_FETCH_4,
+ "__atomic_umax_fetch_4",
+ BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMAX_FETCH_8,
+ "__atomic_umax_fetch_8",
+ BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMAX_FETCH_16,
+ "__atomic_umax_fetch_16",
+ BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMIN_FETCH_N,
+ "__atomic_umin_fetch",
+ BT_FN_VOID_VAR, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMIN_FETCH_1,
+ "__atomic_umin_fetch_1",
+ BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMIN_FETCH_2,
+ "__atomic_umin_fetch_2",
+ BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMIN_FETCH_4,
+ "__atomic_umin_fetch_4",
+ BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMIN_FETCH_8,
+ "__atomic_umin_fetch_8",
+ BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_UMIN_FETCH_16,
+ "__atomic_umin_fetch_16",
+ BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROWCALL_LEAF_LIST)
+
DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE,
"__atomic_always_lock_free",
BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
--
2.44.0