summaryrefslogtreecommitdiff
path: root/zap/src/abs.c
diff options
context:
space:
mode:
Diffstat (limited to 'zap/src/abs.c')
-rw-r--r--zap/src/abs.c96
1 files changed, 0 insertions, 96 deletions
diff --git a/zap/src/abs.c b/zap/src/abs.c
deleted file mode 100644
index 8fe97e6..0000000
--- a/zap/src/abs.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- Copyright 2022 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/priv.h>
-
-#include <zap/math.h>
-
-#include <stdint.h>
-
-#if zap_priv_fastimpl
-__asm__ (
- ".globl zap_abs_c\n"
- ".globl zap_abs_i\n"
- ".globl zap_abs_l\n"
- ".globl zap_abs_ll\n"
- ".globl zap_abs_s\n"
-
- "zap_abs_c:\n"
- /*
- signed char val
- */
-#if defined(sus_arch_amd64) || defined(sus_arch_ia32)
- "movb %dil,%al\n"
- "sarb $0x3F,%al\n"
- "xorb %al,%dil\n"
- "subb %al,%dil\n"
- "movb %dil,%al\n"
- "ret\n"
-#endif
-
- "zap_abs_i:\n"
- /*
- int val
- */
-#if defined(sus_arch_amd64) || defined(sus_arch_ia32)
- "movl %edi,%eax\n"
- "sarl $0x3F,%eax\n"
- "xorl %eax,%edi\n"
- "subl %eax,%edi\n"
- "movl %edi,%eax\n"
- "ret\n"
-#endif
-
- "zap_abs_l:\n"
- /*
- long val
- */
-#if defined(sus_arch_amd64)
- "movq %rdi,%rax\n"
- "sarq $0x3F,%rax\n"
- "xorq %rax,%rdi\n"
- "subq %rax,%rdi\n"
- "movq %rdi,%rax\n"
- "ret\n"
-#endif
-
- "zap_abs_ll:\n"
- /*
- long long val
- */
-#if defined(sus_arch_amd64)
- "movq %rdi,%rax\n"
- "sarq $0x3F,%rax\n"
- "xorq %rax,%rdi\n"
- "subq %rax,%rdi\n"
- "movq %rdi,%rax\n"
- "ret\n"
-#endif
-
- "zap_abs_s:\n"
- /*
- short val
- */
-#if defined(sus_arch_amd64) || defined(sus_arch_ia32)
- "movw %di,%ax\n"
- "sarw $0x3F,%ax\n"
- "xorw %ax,%di\n"
- "subw %ax,%di\n"
- "movw %di,%ax\n"
- "ret\n"
-#endif
-);
-#else
-#define zap_local_abs(_typ,_sufx) \
- _typ zap_abs_ ## _sufx (_typ const _val) {return _val > (_typ)0x0 ? _val : -_val;}
-
-zap_local_abs(signed char,c)
-zap_local_abs(int,i)
-zap_local_abs(long,l)
-zap_local_abs(long long,ll)
-zap_local_abs(short,s)
-
-#endif