diff options
| author | David Senoner <seda18@rolmail.net> | 2025-08-27 13:40:16 +0200 |
|---|---|---|
| committer | David Senoner <seda18@rolmail.net> | 2025-08-28 07:33:50 +0200 |
| commit | f707de15a14e4400e99d5260d6d7af98aa2a69cd (patch) | |
| tree | db40dc68d6a3a962fb70fb4df044374ba4b54540 | |
| parent | f6b0d64ddc2132d3a08f216011480be6cb959234 (diff) | |
| download | zig-f707de15a14e4400e99d5260d6d7af98aa2a69cd.tar.gz zig-f707de15a14e4400e99d5260d6d7af98aa2a69cd.zip | |
libc: delete superfluous c and assembly ceil implementation
23 files changed, 3 insertions, 408 deletions
diff --git a/lib/libc/mingw/math/x86/ceilf.S b/lib/libc/mingw/math/x86/ceilf.S deleted file mode 100644 index 9096dbc2b3..0000000000 --- a/lib/libc/mingw/math/x86/ceilf.S +++ /dev/null @@ -1,111 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#include <_mingw_mac.h> - - .file "ceilf.S" - .text - .align 4 - .globl __MINGW_USYMBOL(ceilf) - .def __MINGW_USYMBOL(ceilf); .scl 2; .type 32; .endef -#ifdef __x86_64__ - .seh_proc __MINGW_USYMBOL(ceilf) -#endif - -__MINGW_USYMBOL(ceilf): -#if defined(_AMD64_) || defined(__x86_64__) - subq $24, %rsp - .seh_stackalloc 24 - .seh_endprologue - movd %xmm0, 12(%rsp) - movl 12(%rsp), %eax - movl %eax, %ecx - movl %eax, %edx - sarl $23, %ecx - andl $255, %ecx - subl $127, %ecx - cmpl $22, %ecx - jg .l4 - testl %ecx, %ecx - js .l5 - movl $8388607, %r8d - sarl %cl, %r8d - testl %eax, %r8d - je .l3 - addss .hugeval(%rip), %xmm0 - ucomiss .zeroval(%rip), %xmm0 - jbe .l2 - testl %eax, %eax - jle .l1 - movl $8388608, %eax - sarl %cl, %eax - addl %eax, %edx -.l1: - movl %r8d, %eax - notl %eax - andl %edx, %eax -.l2: - movl %eax, 8(%rsp) - movss 8(%rsp), %xmm0 -.l3: - addq $24, %rsp - ret - .p2align 4,,10 -.l4: - addl $-128, %ecx - jne .l3 - addss %xmm0, %xmm0 - addq $24, %rsp - ret - .p2align 4,,10 -.l5: - addss .hugeval(%rip), %xmm0 - ucomiss .zeroval(%rip), %xmm0 - jbe .islesseqzero - testl %eax, %eax - js .l6 - movl $1065353216, %edx - cmovne %edx, %eax -.islesseqzero: - movl %eax, 8(%rsp) - movss 8(%rsp), %xmm0 - addq $24, %rsp - ret - .p2align 4,,10 -.l6: - movl $-2147483648, 8(%rsp) - movss 8(%rsp), %xmm0 - addq $24, %rsp - ret - .seh_endproc - .section .rdata,"dr" - .align 4 -.hugeval: - .long 1900671690 - .align 4 -.zeroval: - .long 0 -#elif defined(_X86_) || defined(__i386__) - flds 4(%esp) - subl $8,%esp - - fstcw 4(%esp) /* store fpu control word */ - - /* We use here %edx although only the low 1 bits are defined. - But none of the operations should care and they are faster - than the 16 bit operations. */ - movl $0x0800,%edx /* round towards +oo */ - orl 4(%esp),%edx - andl $0xfbff,%edx - movl %edx,(%esp) - fldcw (%esp) /* load modified control word */ - - frndint /* round */ - - fldcw 4(%esp) /* restore original control word */ - - addl $8,%esp - ret -#endif diff --git a/lib/libc/mingw/math/x86/ceill.S b/lib/libc/mingw/math/x86/ceill.S deleted file mode 100644 index 04b6093337..0000000000 --- a/lib/libc/mingw/math/x86/ceill.S +++ /dev/null @@ -1,55 +0,0 @@ -/** - * This file has no copyright assigned and is placed in the Public Domain. - * This file is part of the mingw-w64 runtime package. - * No warranty is given; refer to the file DISCLAIMER.PD within this package. - */ -#include <_mingw_mac.h> - - .file "ceill.S" - .text -#ifdef __x86_64__ - .align 8 -#else - .align 4 -#endif - .globl __MINGW_USYMBOL(ceill) - .def __MINGW_USYMBOL(ceill); .scl 2; .type 32; .endef -__MINGW_USYMBOL(ceill): -#if defined(_AMD64_) || defined(__x86_64__) - fldt (%rdx) - subq $24,%rsp - - fstcw 8(%rsp) /* store fpu control word */ - - /* We use here %edx although only the low 1 bits are defined. - But none of the operations should care and they are faster - than the 16 bit operations. */ - movl $0x0800,%edx /* round towards +oo */ - orl 8(%rsp),%edx - andl $0xfbff,%edx - movl %edx,(%rsp) - fldcw (%rsp) /* load modified control word */ - - frndint /* round */ - - fldcw 8(%rsp) /* restore original control word */ - - addq $24,%rsp - movq %rcx,%rax - movq $0,8(%rcx) - fstpt (%rcx) - ret -#elif defined(_X86_) || defined(__i386__) - fldt 4(%esp) - subl $8,%esp - fstcw 4(%esp) - movl $0x0800,%edx - orl 4(%esp),%edx - andl $0xfbff,%edx - movl %edx,(%esp) - fldcw (%esp) - frndint - fldcw 4(%esp) - addl $8,%esp - ret -#endif diff --git a/lib/libc/musl/src/math/aarch64/ceil.c b/lib/libc/musl/src/math/aarch64/ceil.c deleted file mode 100644 index ac80c1dce5..0000000000 --- a/lib/libc/musl/src/math/aarch64/ceil.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> - -double ceil(double x) -{ - __asm__ ("frintp %d0, %d1" : "=w"(x) : "w"(x)); - return x; -} diff --git a/lib/libc/musl/src/math/aarch64/ceilf.c b/lib/libc/musl/src/math/aarch64/ceilf.c deleted file mode 100644 index 1ef1e9c839..0000000000 --- a/lib/libc/musl/src/math/aarch64/ceilf.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> - -float ceilf(float x) -{ - __asm__ ("frintp %s0, %s1" : "=w"(x) : "w"(x)); - return x; -} diff --git a/lib/libc/musl/src/math/ceil.c b/lib/libc/musl/src/math/ceil.c deleted file mode 100644 index b13e6f2d63..0000000000 --- a/lib/libc/musl/src/math/ceil.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "libm.h" - -#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1 -#define EPS DBL_EPSILON -#elif FLT_EVAL_METHOD==2 -#define EPS LDBL_EPSILON -#endif -static const double_t toint = 1/EPS; - -double ceil(double x) -{ - union {double f; uint64_t i;} u = {x}; - int e = u.i >> 52 & 0x7ff; - double_t y; - - if (e >= 0x3ff+52 || x == 0) - return x; - /* y = int(x) - x, where int(x) is an integer neighbor of x */ - if (u.i >> 63) - y = x - toint + toint - x; - else - y = x + toint - toint - x; - /* special case because of non-nearest rounding modes */ - if (e <= 0x3ff-1) { - FORCE_EVAL(y); - return u.i >> 63 ? -0.0 : 1; - } - if (y < 0) - return x + y + 1; - return x + y; -} diff --git a/lib/libc/musl/src/math/ceilf.c b/lib/libc/musl/src/math/ceilf.c deleted file mode 100644 index 869835f397..0000000000 --- a/lib/libc/musl/src/math/ceilf.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "libm.h" - -float ceilf(float x) -{ - union {float f; uint32_t i;} u = {x}; - int e = (int)(u.i >> 23 & 0xff) - 0x7f; - uint32_t m; - - if (e >= 23) - return x; - if (e >= 0) { - m = 0x007fffff >> e; - if ((u.i & m) == 0) - return x; - FORCE_EVAL(x + 0x1p120f); - if (u.i >> 31 == 0) - u.i += m; - u.i &= ~m; - } else { - FORCE_EVAL(x + 0x1p120f); - if (u.i >> 31) - u.f = -0.0; - else if (u.i << 1) - u.f = 1.0; - } - return u.f; -} diff --git a/lib/libc/musl/src/math/ceill.c b/lib/libc/musl/src/math/ceill.c deleted file mode 100644 index 60a83020dd..0000000000 --- a/lib/libc/musl/src/math/ceill.c +++ /dev/null @@ -1,34 +0,0 @@ -#include "libm.h" - -#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 -long double ceill(long double x) -{ - return ceil(x); -} -#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 - -static const long double toint = 1/LDBL_EPSILON; - -long double ceill(long double x) -{ - union ldshape u = {x}; - int e = u.i.se & 0x7fff; - long double y; - - if (e >= 0x3fff+LDBL_MANT_DIG-1 || x == 0) - return x; - /* y = int(x) - x, where int(x) is an integer neighbor of x */ - if (u.i.se >> 15) - y = x - toint + toint - x; - else - y = x + toint - toint - x; - /* special case because of non-nearest rounding modes */ - if (e <= 0x3fff-1) { - FORCE_EVAL(y); - return u.i.se >> 15 ? -0.0 : 1; - } - if (y < 0) - return x + y + 1; - return x + y; -} -#endif diff --git a/lib/libc/musl/src/math/i386/ceil.s b/lib/libc/musl/src/math/i386/ceil.s deleted file mode 100644 index bc29f15ce7..0000000000 --- a/lib/libc/musl/src/math/i386/ceil.s +++ /dev/null @@ -1 +0,0 @@ -# see floor.s diff --git a/lib/libc/musl/src/math/i386/ceilf.s b/lib/libc/musl/src/math/i386/ceilf.s deleted file mode 100644 index bc29f15ce7..0000000000 --- a/lib/libc/musl/src/math/i386/ceilf.s +++ /dev/null @@ -1 +0,0 @@ -# see floor.s diff --git a/lib/libc/musl/src/math/i386/ceill.s b/lib/libc/musl/src/math/i386/ceill.s deleted file mode 100644 index bc29f15ce7..0000000000 --- a/lib/libc/musl/src/math/i386/ceill.s +++ /dev/null @@ -1 +0,0 @@ -# see floor.s diff --git a/lib/libc/musl/src/math/i386/floor.s b/lib/libc/musl/src/math/i386/floor.s index 2571fb3ded..7495e2d8c4 100644 --- a/lib/libc/musl/src/math/i386/floor.s +++ b/lib/libc/musl/src/math/i386/floor.s @@ -1,4 +1,4 @@ -/* zig patch: removed `floorl` and `floorf` in favor of using zig compiler_rt's implementations */ +/* zig patch: removed `floorl`, `floorf`, `ceil`, `ceilf` and `ceill` in favor of using zig compiler_rt's implementations */ 1: fstcw 4(%esp) mov 5(%esp),%ah @@ -9,27 +9,6 @@ fldcw 4(%esp) ret -.global ceil -.type ceil,@function -ceil: - fldl 4(%esp) - mov $0xb,%al - jmp 1b - -.global ceilf -.type ceilf,@function -ceilf: - flds 4(%esp) - mov $0xb,%al - jmp 1b - -.global ceill -.type ceill,@function -ceill: - fldt 4(%esp) - mov $0xb,%al - jmp 1b - .global trunc .type trunc,@function trunc: diff --git a/lib/libc/musl/src/math/powerpc64/ceil.c b/lib/libc/musl/src/math/powerpc64/ceil.c deleted file mode 100644 index 4b01133660..0000000000 --- a/lib/libc/musl/src/math/powerpc64/ceil.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <math.h> - -#ifdef _ARCH_PWR5X - -double ceil(double x) -{ - __asm__ ("frip %0, %1" : "=d"(x) : "d"(x)); - return x; -} - -#else - -#include "../ceil.c" - -#endif diff --git a/lib/libc/musl/src/math/powerpc64/ceilf.c b/lib/libc/musl/src/math/powerpc64/ceilf.c deleted file mode 100644 index 59ba39617f..0000000000 --- a/lib/libc/musl/src/math/powerpc64/ceilf.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <math.h> - -#ifdef _ARCH_PWR5X - -float ceilf(float x) -{ - __asm__ ("frip %0, %1" : "=f"(x) : "f"(x)); - return x; -} - -#else - -#include "../ceilf.c" - -#endif diff --git a/lib/libc/musl/src/math/s390x/ceil.c b/lib/libc/musl/src/math/s390x/ceil.c deleted file mode 100644 index aee17df75f..0000000000 --- a/lib/libc/musl/src/math/s390x/ceil.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <math.h> - -#if defined(__HTM__) || __ARCH__ >= 9 - -double ceil(double x) -{ - __asm__ ("fidbra %0, 6, %1, 4" : "=f"(x) : "f"(x)); - return x; -} - -#else - -#include "../ceil.c" - -#endif diff --git a/lib/libc/musl/src/math/s390x/ceilf.c b/lib/libc/musl/src/math/s390x/ceilf.c deleted file mode 100644 index 29ba8d4e77..0000000000 --- a/lib/libc/musl/src/math/s390x/ceilf.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <math.h> - -#if defined(__HTM__) || __ARCH__ >= 9 - -float ceilf(float x) -{ - __asm__ ("fiebra %0, 6, %1, 4" : "=f"(x) : "f"(x)); - return x; -} - -#else - -#include "../ceilf.c" - -#endif diff --git a/lib/libc/musl/src/math/s390x/ceill.c b/lib/libc/musl/src/math/s390x/ceill.c deleted file mode 100644 index b838dc13e0..0000000000 --- a/lib/libc/musl/src/math/s390x/ceill.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <math.h> - -#if defined(__HTM__) || __ARCH__ >= 9 - -long double ceill(long double x) -{ - __asm__ ("fixbra %0, 6, %1, 4" : "=f"(x) : "f"(x)); - return x; -} - -#else - -#include "../ceill.c" - -#endif diff --git a/lib/libc/musl/src/math/x32/ceill.s b/lib/libc/musl/src/math/x32/ceill.s deleted file mode 100644 index f5cfa3b307..0000000000 --- a/lib/libc/musl/src/math/x32/ceill.s +++ /dev/null @@ -1 +0,0 @@ -# see floorl.s diff --git a/lib/libc/musl/src/math/x32/floorl.s b/lib/libc/musl/src/math/x32/floorl.s index c2d7d3fa5f..fb27880436 100644 --- a/lib/libc/musl/src/math/x32/floorl.s +++ b/lib/libc/musl/src/math/x32/floorl.s @@ -1,4 +1,4 @@ -/* zig patch: removed `floorl` in favor of using zig compiler_rt's implementations */ +/* zig patch: removed `floorl` and `ceill` in favor of using zig compiler_rt's implementations */ 1: fstcw 8(%esp) mov 9(%esp),%ah @@ -9,13 +9,6 @@ fldcw 8(%esp) ret -.global ceill -.type ceill,@function -ceill: - fldt 8(%esp) - mov $0xb,%al - jmp 1b - .global truncl .type truncl,@function truncl: diff --git a/lib/libc/musl/src/math/x86_64/ceill.s b/lib/libc/musl/src/math/x86_64/ceill.s deleted file mode 100644 index f5cfa3b307..0000000000 --- a/lib/libc/musl/src/math/x86_64/ceill.s +++ /dev/null @@ -1 +0,0 @@ -# see floorl.s diff --git a/lib/libc/musl/src/math/x86_64/floorl.s b/lib/libc/musl/src/math/x86_64/floorl.s index 442336be9d..d6b0bc1848 100644 --- a/lib/libc/musl/src/math/x86_64/floorl.s +++ b/lib/libc/musl/src/math/x86_64/floorl.s @@ -1,4 +1,4 @@ -/* zig patch: removed `floorl` in favor of using zig compiler_rt's implementations */ +/* zig patch: removed `floorl` and `ceill` in favor of using zig compiler_rt's implementations */ 1: fstcw 8(%rsp) mov 9(%rsp),%ah @@ -9,13 +9,6 @@ fldcw 8(%rsp) ret -.global ceill -.type ceill,@function -ceill: - fldt 8(%rsp) - mov $0xb,%al - jmp 1b - .global truncl .type truncl,@function truncl: diff --git a/src/libs/mingw.zig b/src/libs/mingw.zig index 1ef660fee2..bb3c9cc8e2 100644 --- a/src/libs/mingw.zig +++ b/src/libs/mingw.zig @@ -920,7 +920,6 @@ const mingw32_x86_src = [_][]const u8{ "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "atan2l.c", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "atanhl.c", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "atanl.c", - "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "ceill.S", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "copysignl.S", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "cosl.c", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "cosl_internal.S", @@ -970,7 +969,6 @@ const mingw32_x86_32_src = [_][]const u8{ "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "asinf.c", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "atan2f.c", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "atanf.c", - "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "ceilf.S", "math" ++ path.sep_str ++ "x86" ++ path.sep_str ++ "fmodf.c", }; diff --git a/src/libs/musl.zig b/src/libs/musl.zig index 32bf642262..1202c0e9a1 100644 --- a/src/libs/musl.zig +++ b/src/libs/musl.zig @@ -831,8 +831,6 @@ const src_files = [_][]const u8{ "musl/src/malloc/reallocarray.c", "musl/src/malloc/realloc.c", "musl/src/malloc/replaced.c", - "musl/src/math/aarch64/ceil.c", - "musl/src/math/aarch64/ceilf.c", "musl/src/math/aarch64/fma.c", "musl/src/math/aarch64/fmaf.c", "musl/src/math/aarch64/fmax.c", @@ -885,9 +883,6 @@ const src_files = [_][]const u8{ "musl/src/math/cbrt.c", "musl/src/math/cbrtf.c", "musl/src/math/cbrtl.c", - "musl/src/math/ceil.c", - "musl/src/math/ceilf.c", - "musl/src/math/ceill.c", "musl/src/math/copysign.c", "musl/src/math/copysignf.c", "musl/src/math/copysignl.c", @@ -955,9 +950,6 @@ const src_files = [_][]const u8{ "musl/src/math/i386/atanf.s", "musl/src/math/i386/atanl.s", "musl/src/math/i386/atan.s", - "musl/src/math/i386/ceilf.s", - "musl/src/math/i386/ceill.s", - "musl/src/math/i386/ceil.s", "musl/src/math/i386/exp2l.s", "musl/src/math/i386/exp_ld.s", "musl/src/math/i386/expl.s", @@ -1092,8 +1084,6 @@ const src_files = [_][]const u8{ "musl/src/math/__polevll.c", "musl/src/math/pow.c", "musl/src/math/pow_data.c", - "musl/src/math/powerpc64/ceil.c", - "musl/src/math/powerpc64/ceilf.c", "musl/src/math/powerpc64/fma.c", "musl/src/math/powerpc64/fmaf.c", "musl/src/math/powerpc64/fmax.c", @@ -1153,9 +1143,6 @@ const src_files = [_][]const u8{ "musl/src/math/round.c", "musl/src/math/roundf.c", "musl/src/math/roundl.c", - "musl/src/math/s390x/ceil.c", - "musl/src/math/s390x/ceilf.c", - "musl/src/math/s390x/ceill.c", "musl/src/math/s390x/fma.c", "musl/src/math/s390x/fmaf.c", "musl/src/math/s390x/nearbyint.c", @@ -1216,7 +1203,6 @@ const src_files = [_][]const u8{ "musl/src/math/x32/asinl.s", "musl/src/math/x32/atan2l.s", "musl/src/math/x32/atanl.s", - "musl/src/math/x32/ceill.s", "musl/src/math/x32/exp2l.s", "musl/src/math/x32/expl.s", "musl/src/math/x32/expm1l.s", @@ -1245,7 +1231,6 @@ const src_files = [_][]const u8{ "musl/src/math/x86_64/asinl.s", "musl/src/math/x86_64/atan2l.s", "musl/src/math/x86_64/atanl.s", - "musl/src/math/x86_64/ceill.s", "musl/src/math/x86_64/exp2l.s", "musl/src/math/x86_64/expl.s", "musl/src/math/x86_64/expm1l.s", diff --git a/src/libs/wasi_libc.zig b/src/libs/wasi_libc.zig index 1c1d130a05..4d165e2acc 100644 --- a/src/libs/wasi_libc.zig +++ b/src/libs/wasi_libc.zig @@ -727,7 +727,6 @@ const libc_top_half_src_files = [_][]const u8{ "musl/src/math/cbrt.c", "musl/src/math/cbrtf.c", "musl/src/math/cbrtl.c", - "musl/src/math/ceill.c", "musl/src/math/copysignl.c", "musl/src/math/__cos.c", "musl/src/math/__cosdf.c", |
