summaryrefslogtreecommitdiff
path: root/zap/source
diff options
context:
space:
mode:
Diffstat (limited to 'zap/source')
-rw-r--r--zap/source/amd64/mem/cp.s15
-rw-r--r--zap/source/any/math/abs.cc18
-rw-r--r--zap/source/any/math/divmod.cc10
-rw-r--r--zap/source/any/math/exp.cc23
-rw-r--r--zap/source/arm64/math/abs.s29
-rw-r--r--zap/source/arm64/mem/cp.s40
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