[libc] newhdrgen: updated sorting of guarded functions in fuction generation (#98241)

In yaml_to_classes.py, changed order of adding functions so that guarded
functions appear after regular functions. Guarded functions will still
be alphabetically sorted within each guard. Each group of guarded
functions will appear in alphabetical order of the guard name.

Fixed issus in math.yaml such as missing guards.

Fixed Function class for spacing issues and the order in which
attributes are listed in the function header.

Deleted extra whitespace in the last line of unistd.yaml.
diff --git a/libc/newhdrgen/class_implementation/classes/function.py b/libc/newhdrgen/class_implementation/classes/function.py
index c73fe8d..da26358 100644
--- a/libc/newhdrgen/class_implementation/classes/function.py
+++ b/libc/newhdrgen/class_implementation/classes/function.py
@@ -23,9 +23,12 @@
         self.attributes = attributes or ""
 
     def __str__(self):
-        attributes_str = self.attributes
+        attributes_str = " ".join(self.attributes)
         arguments_str = ", ".join(self.arguments)
-        result = f"{self.return_type} {self.name}({arguments_str}){attributes_str};"
+        if attributes_str == "":
+            result = f"{self.return_type} {self.name}({arguments_str}) __NOEXCEPT;"
+        else:
+            result = f"{attributes_str} {self.return_type} {self.name}({arguments_str}) __NOEXCEPT;"
         if self.guard:
             result = f"#ifdef {self.guard}\n{result}\n#endif // {self.guard}"
         return result
diff --git a/libc/newhdrgen/header.py b/libc/newhdrgen/header.py
index 4eaf7dc..d9e9c68 100644
--- a/libc/newhdrgen/header.py
+++ b/libc/newhdrgen/header.py
@@ -62,6 +62,6 @@
             content.append("")
         for object in self.objects:
             content.append(str(object))
-        content.append("\n__END_C_DECLS")
+        content.append("__END_C_DECLS")
 
         return "\n".join(content)
diff --git a/libc/newhdrgen/yaml/dlfcn.yaml b/libc/newhdrgen/yaml/dlfcn.yaml
new file mode 100644
index 0000000..725ee705
--- /dev/null
+++ b/libc/newhdrgen/yaml/dlfcn.yaml
@@ -0,0 +1,39 @@
+header: dlfcn.h
+macros:
+  - macro_name: RTLD_LAZY
+    macro_value: null
+  - macro_name: RTLD_NOW
+    macro_value: null
+  - macro_name: RTLD_GLOBAL
+    macro_value: null
+  - macro_name: RTLD_LOCAL
+    macro_value: null
+types: []
+enums: []
+objects: []
+functions:
+  - name: dlclose
+    standards:
+      - POSIX
+    return_type: int
+    arguments:
+      - type: void *
+  - name: dlerror
+    standards:
+      - POSIX
+    return_type: char *
+    arguments: []
+  - name: dlopen
+    standards:
+      - POSIX
+    return_type: void *
+    arguments:
+      - type: const char *
+      - type: int
+  - name: dlsym
+    standards:
+      - POSIX
+    return_type: void *
+    arguments:
+      - type: void *__restrict
+      - type: const char *__restrict
diff --git a/libc/newhdrgen/yaml/math.yaml b/libc/newhdrgen/yaml/math.yaml
index 18a49ad..5afde59 100644
--- a/libc/newhdrgen/yaml/math.yaml
+++ b/libc/newhdrgen/yaml/math.yaml
@@ -7,6 +7,12 @@
 enums: []
 objects: []
 functions:
+  - name: cbrtf
+    standards:
+      - stdc
+    return_type: float
+    arguments:
+      - type: float
   - name: copysign
     standards: 
       - stdc
@@ -28,22 +34,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: copysignf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: copysignf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: ceil
     standards: 
       - stdc
@@ -62,20 +52,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: ceilf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: ceilf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fabs
     standards: 
       - stdc
@@ -96,20 +72,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: fabsf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fabsf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fdim
     standards: 
       - stdc
@@ -131,22 +93,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fdimf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fdimf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: floor
     standards: 
       - stdc
@@ -165,20 +111,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: floorf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: floorf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fmin
     standards: 
       - stdc
@@ -200,21 +132,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fminf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fminf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
   - name: fmax
     standards: 
       - stdc
@@ -236,21 +153,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fmaxf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fmaxf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
   - name: fmaximum
     standards: 
       - stdc
@@ -272,22 +174,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fmaximumf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fmaximumf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fmaximum_num
     standards: 
       - stdc
@@ -309,22 +195,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fmaximum_numf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fmaximum_numf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fmaximum_mag
     standards: 
       - stdc
@@ -346,22 +216,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fmaximum_magf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fmaximum_magf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fmaximum_mag_num
     standards: 
       - stdc
@@ -383,22 +237,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fmaximum_mag_numf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fmaximum_mag_numf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fminimum
     standards: 
       - stdc
@@ -420,22 +258,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fminimumf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fminimumf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fminimum_num
     standards: 
       - stdc
@@ -450,29 +272,6 @@
     arguments:
       - type: float
       - type: float
-  - name: fminimum_numl
-    standards: 
-      - stdc
-    return_type: long double
-    arguments:
-      - type: long double
-      - type: long double
-  - name: fminimum_numf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fminimum_numf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fminimum_mag
     standards: 
       - stdc
@@ -494,22 +293,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fminimum_magf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fminimum_magf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fminimum_mag_num
     standards: 
       - stdc
@@ -531,22 +314,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fminimum_mag_numf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fminimum_mag_numf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fma
     standards: 
       - stdc
@@ -563,42 +330,6 @@
       - 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
-    return_type: _Float16
-    arguments:
-      - type: float
-      - 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
@@ -620,22 +351,13 @@
     arguments:
       - type: long double
       - type: long double
-  - name: fmodf16
-    standards: 
+  - name: fmul
+    standards:
       - stdc
-    return_type: _Float16
+    return_type: float
     arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT128
-  - name: fmodf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
+      - type: double
+      - type: double
   - name: frexp
     standards: 
       - stdc
@@ -657,22 +379,6 @@
     arguments:
       - type: long double
       - type: int *
-  - name: frexpf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: int *
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: frexpf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: int *
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fromfp
     standards: 
       - stdc
@@ -697,24 +403,6 @@
       - type: long double
       - type: int
       - type: unsigned int
-  - name: fromfpf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fromfpf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: fromfpx
     standards: 
       - stdc
@@ -739,24 +427,6 @@
       - type: long double
       - type: int
       - type: unsigned int
-  - name: fromfpxf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: fromfpxf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: ufromfp
     standards: 
       - stdc
@@ -781,24 +451,6 @@
       - type: long double
       - type: int
       - type: unsigned int
-  - name: ufromfpf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: ufromfpf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: ufromfpx
     standards: 
       - stdc
@@ -823,24 +475,6 @@
       - type: long double
       - type: int
       - type: unsigned int
-  - name: ufromfpxf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: ufromfpxf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: int
-      - type: unsigned int
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: hypot
     standards: 
       - stdc
@@ -873,20 +507,24 @@
     return_type: int
     arguments:
       - type: long double
-  - name: ilogbf16
-    standards: 
-      - stdc
+  - name: isnan
+    standards:
+      - BSDExtensions
+    return_type: int
+    arguments: 
+      - type: double
+  - name: isnanf
+    standards:
+      - BSDExtensions
     return_type: int
     arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: ilogbf128
-    standards: 
-      - stdc
+      - type: float
+  - name: isnanl
+    standards:
+      - BSDExtensions
     return_type: int
     arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
+      - type: long double
   - name: llogb
     standards: 
       - stdc
@@ -905,20 +543,6 @@
     return_type: long
     arguments:
       - type: long double
-  - name: llogbf16
-    standards: 
-      - stdc
-    return_type: long
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: llogbf128
-    standards: 
-      - stdc
-    return_type: long
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: ldexp
     standards: 
       - stdc
@@ -940,22 +564,6 @@
     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
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: int
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: log10
     standards: 
       - stdc
@@ -1004,30 +612,6 @@
     return_type: float
     arguments:
       - type: float
-  - name: log1p
-    standards: 
-      - stdc
-    return_type: double
-    arguments:
-      - type: double
-  - name: log1pf
-    standards: 
-      - stdc
-    return_type: float
-    arguments:
-      - type: float
-  - name: log2
-    standards: 
-      - stdc
-    return_type: double
-    arguments:
-      - type: double
-  - name: log2f
-    standards: 
-      - stdc
-    return_type: float
-    arguments:
-      - type: float
   - name: logb
     standards: 
       - stdc
@@ -1046,20 +630,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: logbf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: logbf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: modf
     standards: 
       - stdc
@@ -1081,22 +651,6 @@
     arguments:
       - type: long double
       - type: long double *
-  - name: modff16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16 *
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: modff128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128 *
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: cos
     standards: 
       - stdc
@@ -1222,14 +776,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: remainderf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
   - name: remquo
     standards: 
       - stdc
@@ -1254,24 +800,6 @@
       - type: long double
       - type: long double
       - type: int *
-  - name: remquof16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-      - type: int *
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: remquof128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-      - type: int *
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: round
     standards: 
       - stdc
@@ -1290,20 +818,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: roundf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: roundf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: roundeven
     standards: 
       - stdc
@@ -1322,20 +836,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: roundevenf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: roundevenf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: lround
     standards: 
       - stdc
@@ -1354,52 +854,24 @@
     return_type: long
     arguments:
       - type: long double
-  - name: lroundf16
-    standards: 
-      - stdc
-    return_type: long
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: lroundf128
-    standards: 
-      - stdc
-    return_type: long
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: llround
     standards: 
       - stdc
-    return_type: Longlong
+    return_type: long long
     arguments:
       - type: double
   - name: llroundf
     standards: 
       - stdc
-    return_type: Longlong
+    return_type: long long
     arguments:
       - type: float
   - name: llroundl
     standards: 
       - stdc
-    return_type: Longlong
+    return_type: long long
     arguments:
       - type: long double
-  - name: llroundf16
-    standards: 
-      - stdc
-    return_type: Longlong
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: llroundf128
-    standards: 
-      - stdc
-    return_type: Longlong
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: rint
     standards: 
       - stdc
@@ -1418,20 +890,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: rintf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: rintf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: lrint
     standards: 
       - stdc
@@ -1450,52 +908,24 @@
     return_type: long
     arguments:
       - type: long double
-  - name: lrintf16
-    standards: 
-      - stdc
-    return_type: long
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: lrintf128
-    standards: 
-      - stdc
-    return_type: long
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: llrint
     standards: 
       - stdc
-    return_type: Longlong
+    return_type: long long
     arguments:
       - type: double
   - name: llrintf
     standards: 
       - stdc
-    return_type: Longlong
+    return_type: long long
     arguments:
       - type: float
   - name: llrintl
     standards: 
       - stdc
-    return_type: Longlong
+    return_type: long long
     arguments:
       - type: long double
-  - name: llrintf16
-    standards: 
-      - stdc
-    return_type: Longlong
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: llrintf128
-    standards: 
-      - stdc
-    return_type: Longlong
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: sqrt
     standards: 
       - stdc
@@ -1514,13 +944,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: sqrtf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: trunc
     standards: 
       - stdc
@@ -1539,20 +962,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: truncf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: truncf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: nearbyint
     standards: 
       - stdc
@@ -1571,20 +980,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: nearbyintf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: nearbyintf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: nextafterf
     standards: 
       - stdc
@@ -1606,22 +1001,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: nextafterf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: nextafterf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: nexttowardf
     standards: 
       - stdc
@@ -1643,14 +1022,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: nexttowardf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
   - name: nextdown
     standards: 
       - stdc
@@ -1669,20 +1040,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: nextdownf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: nextdownf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: nextup
     standards: 
       - stdc
@@ -1701,20 +1058,6 @@
     return_type: long double
     arguments:
       - type: long double
-  - name: nextupf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: nextupf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: powf
     standards: 
       - stdc
@@ -1729,6 +1072,18 @@
     arguments:
       - type: double
       - type: double
+  - name: powi
+    standards: llvm_libc_ext
+    return_type: double
+    arguments:
+      - type: double
+      - type: int
+  - name: powif
+    standards: llvm_libc_ext
+    return_type: float
+    arguments:
+      - type: float
+      - type: int
   - name: coshf
     standards: 
       - stdc
@@ -1796,14 +1151,6 @@
     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
@@ -1825,21 +1172,6 @@
     arguments:
       - type: long double
       - type: int
-  - name: scalbnf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: _Float16
-      - type: int
-  - name: scalbnf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: float128
-      - type: int
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: nanf
     standards: 
       - stdc
@@ -1858,20 +1190,6 @@
     return_type: long double
     arguments:
       - type: const char *
-  - name: nanf16
-    standards: 
-      - stdc
-    return_type: _Float16
-    arguments:
-      - type: const char *
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: nanf128
-    standards: 
-      - stdc
-    return_type: float128
-    arguments:
-      - type: const char *
-    guard: LIBC_TYPES_HAS_FLOAT128
   - name: canonicalize
     standards: 
       - stdc
@@ -1893,14 +1211,6 @@
     arguments:
       - type: long double
       - type: long double
-  - name: canonicalizef16
-    standards: 
-      - stdc
-    return_type: int
-    arguments:
-      - type: _Float16
-      - type: _Float16
-    guard: LIBC_TYPES_HAS_FLOAT16
   - name: canonicalizef128
     standards: 
       - stdc
@@ -1909,75 +1219,29 @@
       - type: float128
       - type: float128
     guard: LIBC_TYPES_HAS_FLOAT128
-  - name: totalorderf16
+  - name: canonicalizef16
     standards: 
       - stdc
     return_type: int
     arguments:
-      - type: _Float16 *
-      - type: _Float16 *
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: totalordermagf16
-    standards: 
-      - stdc
-    return_type: int
-    arguments:
-      - type: _Float16 *
-      - type: _Float16 *
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - 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
       - type: _Float16
     guard: LIBC_TYPES_HAS_FLOAT16
-  - name: setpayloadsigf16
+  - name: ceilf16
     standards: 
       - stdc
-    return_type: int
+    return_type: _Float16
     arguments:
-      - type: _Float16 *
       - type: _Float16
     guard: LIBC_TYPES_HAS_FLOAT16
-  - name: f16addf128
+  - name: copysignf16
     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
+      - type: _Float16
+      - type: _Float16
     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
@@ -2002,6 +1266,78 @@
       - 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: f16divl
+    standards: 
+      - llvm_libc_ext
+    return_type: _Float16
+    arguments:
+      - type: long double
+      - type: long double
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: f16fma
+    standards: 
+      - llvm_libc_ext
+    return_type: _Float16
+    arguments:
+      - type: double
+      - type: double
+      - type: double
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: f16fmaf
+    standards: 
+      - llvm_libc_ext
+    return_type: _Float16
+    arguments:
+      - type: float
+      - type: float
+      - type: float
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: f16fmal
+    standards: 
+      - llvm_libc_ext
+    return_type: _Float16
+    arguments:
+      - type: long double
+      - 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
   - name: f16sub
     standards: 
       - llvm_libc_ext
@@ -2026,22 +1362,377 @@
       - type: long double
       - type: long double
     guard: LIBC_TYPES_HAS_FLOAT16
-  - name: f16div
+  - name: fabsf16
     standards: 
-      - llvm_libc_ext
+      - stdc
     return_type: _Float16
     arguments:
-      - type: double
-      - type: double
+      - type: _Float16
     guard: LIBC_TYPES_HAS_FLOAT16
-  - name: f16divf
-    standards:
-      - llvm_libc_ext
+  - name: fdimf16
+    standards: 
+      - stdc
     return_type: _Float16
     arguments:
-      - type: float
-      - type: float
+      - type: _Float16
+      - type: _Float16
     guard: LIBC_TYPES_HAS_FLOAT16
+  - name: floorf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaxf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximum_mag_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximum_magf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximum_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmaximumf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimum_mag_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimum_magf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimum_numf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fminimumf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fmodf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: frexpf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fromfpf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: fromfpxf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: getpayloadf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16 *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ilogbf16
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ldexpf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: llogbf16
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: llrintf16
+    standards: 
+      - stdc
+    return_type: long long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: llroundf16
+    standards: 
+      - stdc
+    return_type: long long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: logbf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: lrintf16
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: lroundf16
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: modff16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16 *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nanf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: const char *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nearbyintf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nextafterf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nextdownf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nexttowardf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: nextupf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: remainderf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: remquof16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: _Float16
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: rintf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: roundevenf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: roundf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: scalblnf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: long
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: scalbnf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+    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: totalorderf16
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: _Float16 *
+      - type: _Float16 *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: totalordermagf16
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: _Float16 *
+      - type: _Float16 *
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: truncf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ufromfpf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT16
+  - name: ufromfpxf16
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: _Float16
+      - type: int
+      - type: unsigned int
+    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: f16divf128
     standards:
       - stdc
@@ -2050,25 +1741,349 @@
       - type: float128
       - type: float128
     guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128
-  - name: f16divl
+  - name: f16fmaf128
+    standards: 
+      - stdc
+    return_type: _Float16
+    arguments:
+      - type: float128
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128
+  - name: f16sqrtf128
     standards: 
       - llvm_libc_ext
     return_type: _Float16
     arguments:
-      - type: long double
-      - type: long double
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: f16sqrt
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128
+  - name: f16subf128
     standards: 
-      - llvm_libc_ext
+      - stdc
     return_type: _Float16
     arguments:
-      - type: double
-    guard: LIBC_TYPES_HAS_FLOAT16
-  - name: f16sqrtl
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT16_AND_FLOAT128
+  - name: ceilf128
     standards: 
-      - llvm_libc_ext
-    return_type: _Float16
+      - stdc
+    return_type: float128
     arguments:
-      - type: long double
-    guard: LIBC_TYPES_HAS_FLOAT16
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: copysignf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fabsf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fdimf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: floorf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaxf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaximum_mag_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaximum_magf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaximum_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmaximumf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimum_mag_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimum_magf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimum_numf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fminimumf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fmodf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: frexpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fromfpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: fromfpxf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ilogbf128
+    standards: 
+      - stdc
+    return_type: int
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ldexpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: llogbf128
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: llrintf128
+    standards: 
+      - stdc
+    return_type: long long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: llroundf128
+    standards: 
+      - stdc
+    return_type: long long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: logbf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: lrintf128
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: lroundf128
+    standards: 
+      - stdc
+    return_type: long
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: modff128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128 *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nanf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: const char *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nearbyintf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nextafterf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nextdownf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: nextupf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: remquof128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: float128
+      - type: int *
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: rintf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: roundevenf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: roundf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: scalbnf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: sqrtf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: truncf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ufromfpf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
+  - name: ufromfpxf128
+    standards: 
+      - stdc
+    return_type: float128
+    arguments:
+      - type: float128
+      - type: int
+      - type: unsigned int
+    guard: LIBC_TYPES_HAS_FLOAT128
diff --git a/libc/newhdrgen/yaml/sys_prctl.yaml b/libc/newhdrgen/yaml/sys_prctl.yaml
index 35289f6..82374be 100644
--- a/libc/newhdrgen/yaml/sys_prctl.yaml
+++ b/libc/newhdrgen/yaml/sys_prctl.yaml
@@ -1,7 +1,16 @@
 header: sys-prctl.h
-standards: Linux
 macros: []
 types: []
 enums: []
 objects: []
-functions: []
+functions:
+  - name: prctl
+    standards:
+      - Linux
+    return_type: int
+    arguments:
+      - type: int
+      - type: unsigned long
+      - type: unsigned long
+      - type: unsigned long
+      - type: unsigned long
diff --git a/libc/newhdrgen/yaml/unistd.yaml b/libc/newhdrgen/yaml/unistd.yaml
index 94b1368..c698c6b 100644
--- a/libc/newhdrgen/yaml/unistd.yaml
+++ b/libc/newhdrgen/yaml/unistd.yaml
@@ -307,4 +307,3 @@
       - type: const void *__restrict
       - type: void *
       - type: ssize_t
- 
\ No newline at end of file
diff --git a/libc/newhdrgen/yaml_to_classes.py b/libc/newhdrgen/yaml_to_classes.py
index 9e0337f..6bccda8 100644
--- a/libc/newhdrgen/yaml_to_classes.py
+++ b/libc/newhdrgen/yaml_to_classes.py
@@ -38,7 +38,9 @@
     for macro_data in yaml_data.get("macros", []):
         header.add_macro(Macro(macro_data["macro_name"], macro_data["macro_value"]))
 
-    for type_data in yaml_data.get("types", []):
+    types = yaml_data.get("types", [])
+    sorted_types = sorted(types, key=lambda x: x["type_name"])
+    for type_data in sorted_types:
         header.add_type(Type(type_data["type_name"]))
 
     for enum_data in yaml_data.get("enums", []):
@@ -48,23 +50,51 @@
 
     functions = yaml_data.get("functions", [])
     sorted_functions = sorted(functions, key=lambda x: x["name"])
+    guards = []
+    guarded_function_dict = {}
     for function_data in sorted_functions:
-        arguments = [arg["type"] for arg in function_data["arguments"]]
         guard = function_data.get("guard", None)
-        attributes = function_data.get("attributes", None)
-        standards = function_data.get("standards", None)
-        header.add_function(
-            Function(
-                function_data["return_type"],
-                function_data["name"],
-                arguments,
-                standards,
-                guard,
-                attributes,
+        if guard == None:
+            arguments = [arg["type"] for arg in function_data["arguments"]]
+            attributes = function_data.get("attributes", None)
+            standards = function_data.get("standards", None)
+            header.add_function(
+                Function(
+                    function_data["return_type"],
+                    function_data["name"],
+                    arguments,
+                    standards,
+                    guard,
+                    attributes,
+                )
             )
-        )
+        else:
+            if guard not in guards:
+                guards.append(guard)
+                guarded_function_dict[guard] = []
+                guarded_function_dict[guard].append(function_data)
+            else:
+                guarded_function_dict[guard].append(function_data)
+    sorted_guards = sorted(guards)
+    for guard in sorted_guards:
+        for function_data in guarded_function_dict[guard]:
+            arguments = [arg["type"] for arg in function_data["arguments"]]
+            attributes = function_data.get("attributes", None)
+            standards = function_data.get("standards", None)
+            header.add_function(
+                Function(
+                    function_data["return_type"],
+                    function_data["name"],
+                    arguments,
+                    standards,
+                    guard,
+                    attributes,
+                )
+            )
 
-    for object_data in yaml_data.get("objects", []):
+    objects = yaml_data.get("objects", [])
+    sorted_objects = sorted(objects, key=lambda x: x["object_name"])
+    for object_data in sorted_objects:
         header.add_object(
             Object(object_data["object_name"], object_data["object_type"])
         )