summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile109
-rw-r--r--math.c18
2 files changed, 113 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 339da87..94259b8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,14 +1,32 @@
CC=gcc
-CFLAGS=-O3 -mcpu=ev67 -mieee -funroll-loops
-
-TESTS= sin_glibc sin_cpml cos_glibc cos_cpml tan_glibc tan_cpml \
- sinh_glibc sinh_cpml cosh_glibc cosh_cpml tanh_glibc tanh_cpml \
- asin_glibc asin_cpml acos_glibc acos_cpml atan_glibc atan_cpml \
- asinh_glibc asinh_cpml acosh_glibc acosh_cpml atanh_glibc atanh_cpml \
- floor_glibc floor_cpml ceil_glibc ceil_cpml \
- round_glibc round_cpml trunc_glibc trunc_cpml \
- log_glibc log_cpml log10_glibc log10_cpml log2_glibc log2_cpml log1p_glibc log1p_cpml \
- exp_glibc exp_cpml expm1_glibc expm1_cpml exp2_glibc exp2_cpml
+CFLAGS=-O3 -mcpu=ev67 -mieee
+
+CCC=ccc
+CCFLAGS=-O3 -host
+
+TESTS= sin_glibc sin_cpml sin_ccc \
+ cos_glibc cos_cpml cos_ccc \
+ tan_glibc tan_cpml tan_ccc \
+ sinh_glibc sinh_cpml sinh_ccc \
+ cosh_glibc cosh_cpml cosh_ccc \
+ tanh_glibc tanh_cpml tanh_ccc \
+ asin_glibc asin_cpml asin_ccc \
+ acos_glibc acos_cpml acos_ccc \
+ atan_glibc atan_cpml atan_ccc \
+ asinh_glibc asinh_cpml asinh_ccc \
+ acosh_glibc acosh_cpml acosh_ccc \
+ atanh_glibc atanh_cpml atanh_ccc \
+ floor_glibc floor_cpml floor_ccc \
+ ceil_glibc ceil_cpml ceil_ccc \
+ round_glibc round_cpml round_ccc \
+ trunc_glibc trunc_cpml trunc_ccc \
+ log_glibc log_cpml log_ccc \
+ log10_glibc log10_cpml log10_ccc \
+ log2_glibc log2_cpml log2_ccc \
+ log1p_glibc log1p_cpml log1p_ccc \
+ exp_glibc exp_cpml exp_ccc \
+ expm1_glibc expm1_cpml expm1_ccc \
+ exp2_glibc exp2_cpml exp2_ccc
all: $(TESTS)
@@ -28,135 +46,204 @@ sin_glibc: math.c
sin_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=sin -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+sin_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=sin -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+
cos_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=cos -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lm
cos_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=cos -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+cos_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=sin -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+
tan_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=tan -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lm
tan_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=tan -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+tan_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=tan -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+
sinh_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=sinh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lm
sinh_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=sinh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+sinh_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=sinh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+
cosh_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=cosh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lm
cosh_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=cosh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+cosh_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=cosh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+
tanh_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=tanh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lm
tanh_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=tanh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+tanh_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=tanh -DDOMAIN_START="-2.0*M_PI" -DDOMAIN_END="2.0*M_PI" $< -o $@ -lcpml
+
asin_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=asin -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lm
asin_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=asin -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+asin_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=asin -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+
acos_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=acos -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lm
acos_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=acos -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+acos_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=acos -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+
atan_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=atan -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lm
atan_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=atan -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+atan_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=atan -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+
asinh_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=asinh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lm
asinh_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=asinh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+asinh_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=asinh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+
acosh_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=acosh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lm
acosh_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=acosh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+acosh_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=acosh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+
atanh_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=atanh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lm
atanh_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=atanh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+atanh_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=atanh -DDOMAIN_START="-1.0" -DDOMAIN_END="1.0" $< -o $@ -lcpml
+
floor_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=floor -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
floor_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=floor -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+floor_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=floor -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
ceil_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=ceil -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
ceil_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=ceil -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+ceil_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=ceil -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
round_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=round -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
round_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=round -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+round_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=round -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
trunc_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=trunc -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
trunc_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=trunc -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+trunc_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=trunc -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
log_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=log -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
log_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=log -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+log_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=log -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
log10_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=log10 -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
log10_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=log10 -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+log10_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=log10 -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
log2_glibc: math.c
- ${CC} ${CFLAGS} -DFUNCTION=log2 -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
+ ${CCC} ${CFLAGS} -DFUNCTION=log2 -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
log2_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=log2 -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+log2_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=log2 -DDOMAIN_START="0.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
log1p_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=log1p -DDOMAIN_START="-0.75" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
log1p_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=log1p -DDOMAIN_START="-0.75" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+log1p_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=log1p -DDOMAIN_START="-0.75" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
exp_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=exp -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
exp_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=exp -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+exp_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=exp -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
expm1_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=expm1 -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
expm1_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=expm1 -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+expm1_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=expm1 -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
exp2_glibc: math.c
${CC} ${CFLAGS} -DFUNCTION=exp2 -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lm
exp2_cpml: math.c
${CC} ${CFLAGS} -DFUNCTION=exp2 -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+exp2_ccc: math.c
+ ${CCC} ${CCFLAGS} -DFUNCTION=exp2 -DDOMAIN_START="-10.0" -DDOMAIN_END="10.0" -DINCREMENT="0.25" $< -o $@ -lcpml
+
diff --git a/math.c b/math.c
index 3c99e51..8e9629d 100644
--- a/math.c
+++ b/math.c
@@ -1,8 +1,19 @@
+#ifdef __DECC
+
+#include <machine/builtins.h>
+#define __rpcc(x) __RPCC(x)
+extern int printf (const char * format, ...);
+#define M_PI 3.14159265358979323846 /* pi */
+
+#elif defined __GNUC__
+
+#define __rpcc(x) __builtin_alpha_rpcc(x)
#include <stdio.h>
#include <math.h>
-#include <stdint.h>
-#define __rpcc __builtin_alpha_rpcc
+#else
+#error Unknown compiler
+#endif
#define CPML "cpml"
#define GLIBC "glibc"
@@ -25,13 +36,14 @@ double FUNCTION(double);
#define INCREMENT 0.1
#endif
+
int main(int argc, char * argv[]) {
double x;
double results[100];
int i;
int iterations;
- uint32_t start, end;
+ unsigned int start, end;
start = __rpcc();