diff --git a/libc/newhdrgen/class_implementation/classes/function.py b/libc/newhdrgen/class_implementation/classes/function.py index 3c464e48b6e3b..27219bfd3f611 100644 --- a/libc/newhdrgen/class_implementation/classes/function.py +++ b/libc/newhdrgen/class_implementation/classes/function.py @@ -11,14 +11,14 @@ class Function: def __init__( - self, standards, return_type, name, arguments, guard=None, attributes=[] + self, return_type, name, arguments, standards, guard=None, attributes=[] ): - self.standards = standards self.return_type = return_type self.name = name self.arguments = [ arg if isinstance(arg, str) else arg["type"] for arg in arguments ] + self.standards = standards self.guard = guard self.attributes = attributes or [] diff --git a/libc/newhdrgen/yaml_combined/ctype.yaml b/libc/newhdrgen/yaml/ctype.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/ctype.yaml rename to libc/newhdrgen/yaml/ctype.yaml diff --git a/libc/newhdrgen/yaml_combined/fenv.yaml b/libc/newhdrgen/yaml/fenv.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/fenv.yaml rename to libc/newhdrgen/yaml/fenv.yaml diff --git a/libc/newhdrgen/yaml_combined/math.yaml b/libc/newhdrgen/yaml/math.yaml similarity index 89% rename from libc/newhdrgen/yaml_combined/math.yaml rename to libc/newhdrgen/yaml/math.yaml index dbb1e6ec63030..18a49ad1c62c4 100644 --- a/libc/newhdrgen/yaml_combined/math.yaml +++ b/libc/newhdrgen/yaml/math.yaml @@ -563,6 +563,15 @@ functions: - type: float - type: float - type: float + - name: f16fma + standards: + - stdc + return_type: _Float16 + arguments: + - type: double + - type: double + - type: double + guard: LIBC_TYPES_HAS_FLOAT16 - name: f16fmaf standards: - stdc @@ -572,6 +581,24 @@ functions: - type: float - type: float guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16fmal + standards: + - stdc + return_type: _Float16 + arguments: + - type: long double + - type: long double + - type: long double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16fmaf128 + standards: + - stdc + return_type: _Float16 + arguments: + - type: float128 + - type: float128 + - type: float128 + guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128 - name: fmod standards: - stdc @@ -913,6 +940,14 @@ functions: arguments: - type: long double - type: int + - name: ldexpf16 + standards: + - stdc + return_type: _Float16 + arguments: + - type: _Float16 + - type: int + guard: LIBC_TYPES_HAS_FLOAT16 - name: ldexpf128 standards: - stdc @@ -1761,6 +1796,14 @@ functions: return_type: float arguments: - type: float + - name: scalblnf16 + standards: + - stdc + return_type: _Float16 + arguments: + - type: _Float16 + - type: long + guard: LIBC_TYPES_HAS_FLOAT16 - name: scalbn standards: - stdc @@ -1782,6 +1825,13 @@ functions: arguments: - type: long double - type: int + - name: scalbnf16 + standards: + - stdc + return_type: _Float16 + arguments: + - type: _Float16 + - type: int - name: scalbnf128 standards: - stdc @@ -1875,10 +1925,150 @@ functions: - type: _Float16 * - type: _Float16 * guard: LIBC_TYPES_HAS_FLOAT16 - - name: f16sqrtf + - name: getpayloadf16 standards: - stdc return_type: _Float16 + arguments: + - type: _Float16 * + guard: LIBC_TYPES_HAS_FLOAT16 + - name: setpayloadf16 + standards: + - stdc + return_type: int + arguments: + - type: _Float16 * + - type: _Float16 + guard: LIBC_TYPES_HAS_FLOAT16 + - name: setpayloadsigf16 + standards: + - stdc + return_type: int + arguments: + - type: _Float16 * + - type: _Float16 + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16addf128 + standards: + - stdc + return_type: _Float16 + arguments: + - type: float128 + - type: float128 + guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128 + - name: f16subf128 + standards: + - stdc + return_type: _Float16 + arguments: + - type: float128 + - type: float128 + guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128 + - name: f16sqrtf + standards: + - llvm_libc_ext + return_type: _Float16 arguments: - type: float guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16sqrtf128 + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: float128 + guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128 + - name: f16add + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: double + - type: double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16addf + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: float + - type: float + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16addl + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: long double + - type: long double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16sub + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: double + - type: double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16subf + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: float + - type: float + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16subl + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: long double + - type: long double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16div + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: double + - type: double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16divf + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: float + - type: float + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16divf128 + standards: + - stdc + return_type: _Float16 + arguments: + - type: float128 + - type: float128 + guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128 + - name: f16divl + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: long double + - type: long double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16sqrt + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: double + guard: LIBC_TYPES_HAS_FLOAT16 + - name: f16sqrtl + standards: + - llvm_libc_ext + return_type: _Float16 + arguments: + - type: long double + guard: LIBC_TYPES_HAS_FLOAT16 diff --git a/libc/newhdrgen/yaml_combined/pthread.yaml b/libc/newhdrgen/yaml/pthread.yaml similarity index 87% rename from libc/newhdrgen/yaml_combined/pthread.yaml rename to libc/newhdrgen/yaml/pthread.yaml index 5a1ede32e53e3..9ffcf454035ff 100644 --- a/libc/newhdrgen/yaml_combined/pthread.yaml +++ b/libc/newhdrgen/yaml/pthread.yaml @@ -366,3 +366,51 @@ functions: arguments: - type: pthread_key_t - type: const void * + - name: pthread_rwlock_init + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t * + - type: const pthread_rwlockattr_t *__restrict + - name: pthread_rwlock_tryrdlock + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t * + - name: pthread_rwlock_trywrlock + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t * + - name: pthread_rwlock_timedrdlock + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t *__restrict + - type: const struct timespec *__restrict + - name: pthread_rwlock_timedwrlock + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t *__restrict + - type: const struct timespec *__restrict + - name: pthread_rwlock_rdlock + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t * + - name: pthread_rwlock_wrlock + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t * + - name: pthread_rwlock_unlock + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t * + - name: pthread_rwlock_destroy + standards: POSIX + return_type: int + arguments: + - type: pthread_rwlock_t * diff --git a/libc/newhdrgen/yaml_combined/sched.yaml b/libc/newhdrgen/yaml/sched.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/sched.yaml rename to libc/newhdrgen/yaml/sched.yaml diff --git a/libc/newhdrgen/yaml_combined/signal.yaml b/libc/newhdrgen/yaml/signal.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/signal.yaml rename to libc/newhdrgen/yaml/signal.yaml diff --git a/libc/newhdrgen/yaml_combined/stdfix.yaml b/libc/newhdrgen/yaml/stdfix.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/stdfix.yaml rename to libc/newhdrgen/yaml/stdfix.yaml diff --git a/libc/newhdrgen/yaml_combined/stdio.yaml b/libc/newhdrgen/yaml/stdio.yaml similarity index 98% rename from libc/newhdrgen/yaml_combined/stdio.yaml rename to libc/newhdrgen/yaml/stdio.yaml index 928a8d5228c21..2fdc772da122c 100644 --- a/libc/newhdrgen/yaml_combined/stdio.yaml +++ b/libc/newhdrgen/yaml/stdio.yaml @@ -130,6 +130,13 @@ functions: return_type: int arguments: - type: FILE * + - name: fdopen + standards: + - POSIX + return_type: FILE * + arguments: + - type: int + - type: const char * - name: clearerr standards: - stdc diff --git a/libc/newhdrgen/yaml_combined/stdlib.yaml b/libc/newhdrgen/yaml/stdlib.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/stdlib.yaml rename to libc/newhdrgen/yaml/stdlib.yaml diff --git a/libc/newhdrgen/yaml_combined/string.yaml b/libc/newhdrgen/yaml/string.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/string.yaml rename to libc/newhdrgen/yaml/string.yaml diff --git a/libc/newhdrgen/yaml_combined/strings.yaml b/libc/newhdrgen/yaml/strings.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/strings.yaml rename to libc/newhdrgen/yaml/strings.yaml diff --git a/libc/newhdrgen/yaml/sys_auxv.yaml b/libc/newhdrgen/yaml/sys_auxv.yaml index beea1d8b5f09f..bbf756a1ffe6a 100644 --- a/libc/newhdrgen/yaml/sys_auxv.yaml +++ b/libc/newhdrgen/yaml/sys_auxv.yaml @@ -5,4 +5,10 @@ macros: [] types: [] enums: [] objects: [] -functions: [] +functions: + - name: getauxval + standards: + - GNUExtensions + return_type: unsigned long + arguments: + - type: unsigned long diff --git a/libc/newhdrgen/yaml_combined/sys_mman.yaml b/libc/newhdrgen/yaml/sys_mman.yaml similarity index 98% rename from libc/newhdrgen/yaml_combined/sys_mman.yaml rename to libc/newhdrgen/yaml/sys_mman.yaml index 7b858db2de11a..16a6463b0917d 100644 --- a/libc/newhdrgen/yaml_combined/sys_mman.yaml +++ b/libc/newhdrgen/yaml/sys_mman.yaml @@ -1,8 +1,6 @@ -#known as sys/mman in POSIX header: sys-mman.h standards: POSIX macros: [] -macros: [] types: - type_name: mode_t - type_name: size_t diff --git a/libc/newhdrgen/yaml/sys_types.yaml b/libc/newhdrgen/yaml/sys_types.yaml index 6b08254a7fab1..20cf9bcd39da3 100644 --- a/libc/newhdrgen/yaml/sys_types.yaml +++ b/libc/newhdrgen/yaml/sys_types.yaml @@ -26,5 +26,5 @@ types: - type_name: pthread_key_t - type_name: pthread_condattr_t enums: [] -functions: [] objects: [] +functions: [] diff --git a/libc/newhdrgen/yaml_combined/sys_wait.yaml b/libc/newhdrgen/yaml/sys_wait.yaml similarity index 94% rename from libc/newhdrgen/yaml_combined/sys_wait.yaml rename to libc/newhdrgen/yaml/sys_wait.yaml index 56a6066e925d6..2f2f70d0e9745 100644 --- a/libc/newhdrgen/yaml_combined/sys_wait.yaml +++ b/libc/newhdrgen/yaml/sys_wait.yaml @@ -1,4 +1,4 @@ -header: sys-wait.h #sys/wait.h +header: sys-wait.h macros: [] types: - type_name: siginfo_t diff --git a/libc/newhdrgen/yaml_combined/time.yaml b/libc/newhdrgen/yaml/time.yaml similarity index 100% rename from libc/newhdrgen/yaml_combined/time.yaml rename to libc/newhdrgen/yaml/time.yaml diff --git a/libc/newhdrgen/yaml_to_classes.py b/libc/newhdrgen/yaml_to_classes.py index 7159dd9cc8881..8ca09267dbb3d 100644 --- a/libc/newhdrgen/yaml_to_classes.py +++ b/libc/newhdrgen/yaml_to_classes.py @@ -54,10 +54,10 @@ def yaml_to_classes(yaml_data): standards = (function_data.get("standards", None),) header.add_function( Function( - standards, function_data["return_type"], function_data["name"], arguments, + standards, guard, attributes, )