[libc-commits] [libc] [libc] reordered Function class parameters and moved yaml files (PR #97329)
via libc-commits
libc-commits at lists.llvm.org
Wed Jul 3 13:57:33 PDT 2024
https://github.com/RoseZhang03 updated https://github.com/llvm/llvm-project/pull/97329
>From 870d58fe93597be358982a923e6634a8b153e4b0 Mon Sep 17 00:00:00 2001
From: Rose Zhang <rosezhang at google.com>
Date: Mon, 1 Jul 2024 17:31:21 +0000
Subject: [PATCH 1/5] [libc] reordered Function class parameters and moved yaml
files
Reordered Function class parameter "standards" to make more logical
sense and to match the ordering in the add_function function.
Deleted the yaml_combined folder and moved contained files to the yaml
folder.
---
libc/newhdrgen/class_implementation/classes/function.py | 4 ++--
libc/newhdrgen/{yaml_combined => yaml}/ctype.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/fenv.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/math.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/pthread.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/sched.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/signal.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/stdfix.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/stdio.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/stdlib.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/string.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/strings.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/sys_mman.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/sys_wait.yaml | 0
libc/newhdrgen/{yaml_combined => yaml}/time.yaml | 0
libc/newhdrgen/yaml_to_classes.py | 2 +-
16 files changed, 3 insertions(+), 3 deletions(-)
rename libc/newhdrgen/{yaml_combined => yaml}/ctype.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/fenv.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/math.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/pthread.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/sched.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/signal.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/stdfix.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/stdio.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/stdlib.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/string.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/strings.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/sys_mman.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/sys_wait.yaml (100%)
rename libc/newhdrgen/{yaml_combined => yaml}/time.yaml (100%)
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 100%
rename from libc/newhdrgen/yaml_combined/math.yaml
rename to libc/newhdrgen/yaml/math.yaml
diff --git a/libc/newhdrgen/yaml_combined/pthread.yaml b/libc/newhdrgen/yaml/pthread.yaml
similarity index 100%
rename from libc/newhdrgen/yaml_combined/pthread.yaml
rename to libc/newhdrgen/yaml/pthread.yaml
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 100%
rename from libc/newhdrgen/yaml_combined/stdio.yaml
rename to libc/newhdrgen/yaml/stdio.yaml
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_combined/sys_mman.yaml b/libc/newhdrgen/yaml/sys_mman.yaml
similarity index 100%
rename from libc/newhdrgen/yaml_combined/sys_mman.yaml
rename to libc/newhdrgen/yaml/sys_mman.yaml
diff --git a/libc/newhdrgen/yaml_combined/sys_wait.yaml b/libc/newhdrgen/yaml/sys_wait.yaml
similarity index 100%
rename from libc/newhdrgen/yaml_combined/sys_wait.yaml
rename to libc/newhdrgen/yaml/sys_wait.yaml
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,
)
>From 92746619fc69c6f8e7205ad92c4e8cfb6a7e9a8b Mon Sep 17 00:00:00 2001
From: Rose Zhang <rosezhang at google.com>
Date: Mon, 1 Jul 2024 23:28:37 +0000
Subject: [PATCH 2/5] removed duplicate macros list and deleted unecessary
comments
---
libc/newhdrgen/yaml/sys_mman.yaml | 2 --
libc/newhdrgen/yaml/sys_types.yaml | 2 +-
libc/newhdrgen/yaml/sys_wait.yaml | 2 +-
3 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/libc/newhdrgen/yaml/sys_mman.yaml b/libc/newhdrgen/yaml/sys_mman.yaml
index 7b858db2de11a..16a6463b0917d 100644
--- a/libc/newhdrgen/yaml/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/sys_wait.yaml b/libc/newhdrgen/yaml/sys_wait.yaml
index 56a6066e925d6..2f2f70d0e9745 100644
--- a/libc/newhdrgen/yaml/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
>From 36a45b6acba9f6063e763aacefed291ac640be0a Mon Sep 17 00:00:00 2001
From: Rose Zhang <rosezhang at google.com>
Date: Tue, 2 Jul 2024 17:45:58 +0000
Subject: [PATCH 3/5] updated math.yaml with functions added to llvm_libc_ext
standard
---
libc/newhdrgen/yaml/math.yaml | 61 +++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
diff --git a/libc/newhdrgen/yaml/math.yaml b/libc/newhdrgen/yaml/math.yaml
index dbb1e6ec63030..5d2dbdaa2a907 100644
--- a/libc/newhdrgen/yaml/math.yaml
+++ b/libc/newhdrgen/yaml/math.yaml
@@ -1882,3 +1882,64 @@ functions:
arguments:
- type: float
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: f16subf
+ standards:
+ - llvm_libc_ext
+ return_type: _Float16
+ arguments:
+ - type: float
+ - type: float
+ 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: 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: f16sqrtf
+ standards:
+ - llvm_libc_ext
+ return_type: _Float16
+ arguments:
+ - type: float
+ guard: LIBC_TYPES_HAS_FLOAT16
+ - name: f16sqrtl
+ standards:
+ - llvm_libc_ext
+ return_type: _Float16
+ arguments:
+ - type: long double
+ guard: LIBC_TYPES_HAS_FLOAT16
>From fd57f12fbd2a50d738b4e714c7ae737cf655d0bd Mon Sep 17 00:00:00 2001
From: Rose Zhang <rosezhang at google.com>
Date: Tue, 2 Jul 2024 20:01:38 +0000
Subject: [PATCH 4/5] combined f16sqrtf standards
---
libc/newhdrgen/yaml/math.yaml | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/libc/newhdrgen/yaml/math.yaml b/libc/newhdrgen/yaml/math.yaml
index 5d2dbdaa2a907..3115cbb46d66b 100644
--- a/libc/newhdrgen/yaml/math.yaml
+++ b/libc/newhdrgen/yaml/math.yaml
@@ -1878,6 +1878,7 @@ functions:
- name: f16sqrtf
standards:
- stdc
+ - llvm_libc_ext
return_type: _Float16
arguments:
- type: float
@@ -1929,13 +1930,6 @@ functions:
arguments:
- type: double
guard: LIBC_TYPES_HAS_FLOAT16
- - name: f16sqrtf
- standards:
- - llvm_libc_ext
- return_type: _Float16
- arguments:
- - type: float
- guard: LIBC_TYPES_HAS_FLOAT16
- name: f16sqrtl
standards:
- llvm_libc_ext
>From 1356b5c8b881356408a45779cd57e0c6b80c3517 Mon Sep 17 00:00:00 2001
From: Rose Zhang <rosezhang at google.com>
Date: Wed, 3 Jul 2024 20:57:11 +0000
Subject: [PATCH 5/5] updated yaml files with all new functions added to .td
files
---
libc/newhdrgen/yaml/math.yaml | 139 +++++++++++++++++++++++++++++-
libc/newhdrgen/yaml/pthread.yaml | 48 +++++++++++
libc/newhdrgen/yaml/stdio.yaml | 7 ++
libc/newhdrgen/yaml/sys_auxv.yaml | 8 +-
4 files changed, 199 insertions(+), 3 deletions(-)
diff --git a/libc/newhdrgen/yaml/math.yaml b/libc/newhdrgen/yaml/math.yaml
index 3115cbb46d66b..18a49ad1c62c4 100644
--- a/libc/newhdrgen/yaml/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,14 +1925,67 @@ 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
@@ -1891,6 +1994,22 @@ functions:
- 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
@@ -1899,6 +2018,14 @@ functions:
- 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
@@ -1908,13 +2035,21 @@ functions:
- type: double
guard: LIBC_TYPES_HAS_FLOAT16
- name: f16divf
- standards:
+ 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
diff --git a/libc/newhdrgen/yaml/pthread.yaml b/libc/newhdrgen/yaml/pthread.yaml
index 5a1ede32e53e3..9ffcf454035ff 100644
--- a/libc/newhdrgen/yaml/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/stdio.yaml b/libc/newhdrgen/yaml/stdio.yaml
index 928a8d5228c21..2fdc772da122c 100644
--- a/libc/newhdrgen/yaml/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/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
More information about the libc-commits
mailing list