diff options
Diffstat (limited to 'zap/source')
-rw-r--r-- | zap/source/amd64/mem/cp.s | 15 | ||||
-rw-r--r-- | zap/source/any/math/abs.cc | 18 | ||||
-rw-r--r-- | zap/source/any/math/divmod.cc | 10 | ||||
-rw-r--r-- | zap/source/any/math/exp.cc | 23 | ||||
-rw-r--r-- | zap/source/arm64/math/abs.s | 29 | ||||
-rw-r--r-- | zap/source/arm64/mem/cp.s | 40 |
6 files changed, 13 insertions, 122 deletions
diff --git a/zap/source/amd64/mem/cp.s b/zap/source/amd64/mem/cp.s index 3c9f2e1..b0b91e5 100644 --- a/zap/source/amd64/mem/cp.s +++ b/zap/source/amd64/mem/cp.s @@ -14,38 +14,38 @@ zap_cp: .big02cp: # big02cp:; // We assume AVX. cmp rdx,0x20 - jl short .big01cp # if (num < 0x20u) goto big01cp; + jl short .big01cp # if (rem < 0x20u) goto big01cp; vmovdqu ymm0,[rsi] # val02 = *(unsigned int256_t *)src; vmovdqu [rdi],ymm0 # *(unsigned int256_t *)dest = val02; add rdi,0x20 # dest += 0x20u; add rsi,0x20 # src += 0x20u; - sub rdx,0x20 # num -= 0x20u; + sub rdx,0x20 # rem -= 0x20u; jmp short .big02cp # goto big02cp; .big01cp: # big01cp:; cmp rdx,0x10 - jl short .wrdcp # if (num < 0x10u) goto wrdcp; + jl short .wrdcp # if (rem < 0x10u) goto wrdcp; movdqu xmm0,[rsi] # val01 = *(unsigned int128_t *)src; movdqu [rdi],xmm0 # *(unsigned int128_t *)dest = val01; add rdi,0x10 # dest += 0x10u; add rsi,0x10 # src += 0x10u; - sub rdx,0x10 # num -= 0x10u; + sub rdx,0x10 # rem -= 0x10u; jmp short .big01cp # goto big01cp; .wrdcp: # wrdcp:; cmp rdx,0x8 - jl short .bytecp # if (num < 0x8u) goto bytecp; + jl short .bytecp # if (rem < 0x8u) goto bytecp; mov rcx,[rsi] # val8 = *(zap_i04 *)src; mov [rdi],rcx # *(zap_i04 *)dest = val8; add rsi,0x8 # dest += 0x8u; add rdi,0x8 # src += 0x8u; - sub rdx,0x8 # num -= 0x8u; + sub rdx,0x8 # rem -= 0x8u; jmp short .wrdcp # goto wrdcp .bytecp: # bytecp:; @@ -62,4 +62,5 @@ zap_cp: .done: mov rax,rdi - ret # return dest; + mov rdx,rsi + ret # return (zap_cpret) {.dest = dest,.src = src}; diff --git a/zap/source/any/math/abs.cc b/zap/source/any/math/abs.cc deleted file mode 100644 index 3e6f53e..0000000 --- a/zap/source/any/math/abs.cc +++ /dev/null @@ -1,18 +0,0 @@ -/* - Copyright 2022-2023 Gabriel Jensen. - This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. - If a copy of the MPL was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0>. -*/ - -#include <zap/math.h> - -extern "C" { - zap_priv_nothrw unsigned char zap_abssc(signed char const val) {return ::zap::abs(val);} - zap_priv_nothrw unsigned short zap_abss( short const val) {return ::zap::abs(val);} - zap_priv_nothrw unsigned int zap_absi( int const val) {return ::zap::abs(val);} - zap_priv_nothrw unsigned long zap_absl( long const val) {return ::zap::abs(val);} - zap_priv_nothrw unsigned long long zap_absll(long long const val) {return ::zap::abs(val);} - zap_priv_nothrw float zap_absf( float const val) {return ::zap::abs(val);} - zap_priv_nothrw double zap_absd( double const val) {return ::zap::abs(val);} - zap_priv_nothrw long double zap_absld(long double const val) {return ::zap::abs(val);} -} diff --git a/zap/source/any/math/divmod.cc b/zap/source/any/math/divmod.cc index c686c15..77523f8 100644 --- a/zap/source/any/math/divmod.cc +++ b/zap/source/any/math/divmod.cc @@ -7,9 +7,9 @@ #include <zap/math.h> extern "C" { - zap_priv_nothrw auto zap_divmodsc(signed char const num,signed char const den) -> ::zap_quotremsc {return ::zap::divmod(num,den).cquotrem();} - zap_priv_nothrw auto zap_divmods( short const num,short const den) -> ::zap_quotrems {return ::zap::divmod(num,den).cquotrem();} - zap_priv_nothrw auto zap_divmodi( int const num,int const den) -> ::zap_quotremi {return ::zap::divmod(num,den).cquotrem();} - zap_priv_nothrw auto zap_divmodl( long const num,long const den) -> ::zap_quotreml {return ::zap::divmod(num,den).cquotrem();} - zap_priv_nothrw auto zap_divmodll(long long const num,long long const den) -> ::zap_quotremll {return ::zap::divmod(num,den).cquotrem();} + zap_priv_nothrw auto zap_divmodsc(signed char const num,signed char const den) -> ::zap_pairsc {return ::zap::divmod(num,den).cpair();} + zap_priv_nothrw auto zap_divmods( short const num,short const den) -> ::zap_pairs {return ::zap::divmod(num,den).cpair();} + zap_priv_nothrw auto zap_divmodi( int const num,int const den) -> ::zap_pairi {return ::zap::divmod(num,den).cpair();} + zap_priv_nothrw auto zap_divmodl( long const num,long const den) -> ::zap_pairl {return ::zap::divmod(num,den).cpair();} + zap_priv_nothrw auto zap_divmodll(long long const num,long long const den) -> ::zap_pairll {return ::zap::divmod(num,den).cpair();} } diff --git a/zap/source/any/math/exp.cc b/zap/source/any/math/exp.cc deleted file mode 100644 index 2d4831b..0000000 --- a/zap/source/any/math/exp.cc +++ /dev/null @@ -1,23 +0,0 @@ -/* - Copyright 2022-2023 Gabriel Jensen. - This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. - If a copy of the MPL was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0>. -*/ - -#include <zap/math.h> - -extern "C" { - zap_priv_nothrw unsigned char zap_expuc( unsigned char val,unsigned char n) {return ::zap::exp(val,n);} - zap_priv_nothrw unsigned short zap_expus( unsigned short val,unsigned short n) {return ::zap::exp(val,n);} - zap_priv_nothrw unsigned int zap_expui( unsigned int val,unsigned int n) {return ::zap::exp(val,n);} - zap_priv_nothrw unsigned long zap_expul( unsigned long val,unsigned long n) {return ::zap::exp(val,n);} - zap_priv_nothrw unsigned long long zap_expull(unsigned long long val,unsigned long long n) {return ::zap::exp(val,n);} - zap_priv_nothrw signed char zap_expsc( signed char val,signed char n) {return ::zap::exp(val,n);} - zap_priv_nothrw short zap_exps( short val,short n) {return ::zap::exp(val,n);} - zap_priv_nothrw int zap_expi( int val,int n) {return ::zap::exp(val,n);} - zap_priv_nothrw long zap_expl( long val,long n) {return ::zap::exp(val,n);} - zap_priv_nothrw long long zap_expll( long long val,long long n) {return ::zap::exp(val,n);} - zap_priv_nothrw float zap_expf( float val,float n) {return ::zap::exp(val,n);} - zap_priv_nothrw double zap_expd( double val,double n) {return ::zap::exp(val,n);} - zap_priv_nothrw long double zap_expld( long double val,long double n) {return ::zap::exp(val,n);} -} diff --git a/zap/source/arm64/math/abs.s b/zap/source/arm64/math/abs.s deleted file mode 100644 index 218d4d8..0000000 --- a/zap/source/arm64/math/abs.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2022-2023 Gabriel Jensen. -// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -// If a copy of the MPL was not distributed with this file, You can obtasrc one at <https://mozilla.org/MPL/2.0>. - -.globl zap_abs8 - -.func - -zap_abs8: - cmp w0,0x0 - cneg w0,w0,gt // if (val < 0x0) val = -val; - ret // return val; - -zap_abs01: - cmp w0,0x0 - cneg w0,w0,gt // if (val < 0x0) val = -val; - ret // return val; - -zap_abs02: - cmp w0,0x0 - cneg w0,w0,gt // if (val < 0x0) val = -val; - ret // return val; - -zap_abs04: - cmp x0,0x0 - cneg x0,x0,gt // if (val < 0x0) val = -val; - ret // return val; - -.endfunc diff --git a/zap/source/arm64/mem/cp.s b/zap/source/arm64/mem/cp.s deleted file mode 100644 index 1eb1569..0000000 --- a/zap/source/arm64/mem/cp.s +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2022-2023 Gabriel Jensen. -// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. -// If a copy of the MPL was not distributed with this file, You can obtasrc one at <https://mozilla.org/MPL/2.0>. - -.globl zap_cp - -.func - -zap_cp: - // zap_i8 tmp1; - // zap_i04 tmp4; - -.wrdcp: // wrdcp:; - cmp x2,0x8 - blt .bytecp // if (num < 0x8u) goto bytecp; - - ldr x3,[x1] // tmp8 = *(zap_i04 *)src; - str x3,[x0] // *(zap_i04 *)dest = tmp8; - - add x0,x0,0x8 // dest += 0x8u; - add x1,x1,0x8 // src += 0x8u; - sub x2,x2,0x8 // num -= 0x4u; - b .wrdcp // goto wrdcp; - -.bytecp: // bytecp:; - cmp x2,0x1 - blt .done // if (num == 0x1u) goto done; - - ldrb w3,[x1] // tmp1 = *(zap_i8 *)src; - strb w3,[x0] // *(zap_i8 *)dest = tmp1; - - add x0,x0,0x1 // ++dest; - add x1,x1,0x1 // ++src; - sub x2,x2,0x1 // --num; - b .bytecp // goto bytecp; - -.done: // done:; - ret // return; - -.endfunc |