summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2005-09-15 07:05:10 +0000
committerDavid Schleef <ds@schleef.org>2005-09-15 07:05:10 +0000
commitc569cd2fbf70a7017fe2f44140edbf5f8001e64f (patch)
treeab7162be35983dcd67201d3e5d9de2ba2b25ccee
parent2c9c450abd2ec054779f573b795c501e4af7c9fd (diff)
downloadliboil-c569cd2fbf70a7017fe2f44140edbf5f8001e64f.tar.gz
* examples/oil-test.c: Add 64-bit types
* liboil/liboilparameter.h: same * liboil/liboilprototype.c: same * liboil/liboilrandom.h: same * liboil/liboiltest.c: same * liboil/Makefile.am: fix windows build * liboil/simdpack/sincos_f64.c: minor change
-rw-r--r--ChangeLog10
-rw-r--r--examples/oil-test.c8
-rw-r--r--liboil/Makefile.am21
-rw-r--r--liboil/liboilparameter.h4
-rw-r--r--liboil/liboilprototype.c12
-rw-r--r--liboil/liboilrandom.h6
-rw-r--r--liboil/liboiltest.c12
-rw-r--r--liboil/simdpack/sincos_f64.c6
8 files changed, 66 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 675c72c..d220821 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2005-09-15 David Schleef <ds@schleef.org>
+
+ * examples/oil-test.c: Add 64-bit types
+ * liboil/liboilparameter.h: same
+ * liboil/liboilprototype.c: same
+ * liboil/liboilrandom.h: same
+ * liboil/liboiltest.c: same
+ * liboil/Makefile.am: fix windows build
+ * liboil/simdpack/sincos_f64.c: minor change
+
2005-09-13 David Schleef <ds@schleef.org>
* liboil/simdpack/sincos_f64.c: (sincos_f64_sincos): Add impl
diff --git a/examples/oil-test.c b/examples/oil-test.c
index 7fa6192..0ce60e8 100644
--- a/examples/oil-test.c
+++ b/examples/oil-test.c
@@ -76,7 +76,7 @@ dump_array (void *data, void *ref_data, OilType type, int pre_n, int stride,
for(j=0;j<pre_n;j++){ \
x = fabs(OIL_GET(data, i*stride + j*s2, type) - \
OIL_GET(ref_data, i*stride + j*s2, type)); \
- if (x >= 1.0) { \
+ if (x >= 0.00001) { \
printf("*" format "* ", OIL_GET(data, i*stride + j*s2, type)); \
} else { \
printf(format " ", OIL_GET(data, i*stride + j*s2, type)); \
@@ -106,6 +106,12 @@ dump_array (void *data, void *ref_data, OilType type, int pre_n, int stride,
DUMP(uint32_t, "%u");
//DUMP(uint32_t, "%08x");
break;
+ case OIL_TYPE_s64p:
+ DUMP(int64_t, "%lld");
+ break;
+ case OIL_TYPE_u64p:
+ DUMP(uint64_t, "%llu");
+ break;
case OIL_TYPE_f32p:
DUMP(float, "%g");
break;
diff --git a/liboil/Makefile.am b/liboil/Makefile.am
index 530ca28..7e6bfec 100644
--- a/liboil/Makefile.am
+++ b/liboil/Makefile.am
@@ -15,7 +15,11 @@ pkginclude_HEADERS = liboil.h liboilfunction.h liboildebug.h liboilfuncs.h \
liboilrandom.h liboilgcc.h liboiltest.h liboilprofile.h \
liboilinternal.h liboilclasses.h
+if ENABLE_GTK_DOC
nodist_noinst_HEADERS = liboilfuncs-doc.h
+else
+nodist_noinst_HEADERS =
+endif
CLEANFILES = liboilarray.c liboilfuncs-doc.h
@@ -37,8 +41,7 @@ liboilfunctions_la_LIBADD = \
ref/libref.la \
simdpack/libsimdpack.la \
sse/libsse.la \
- utf8/libutf8.la \
- $(LIBM)
+ utf8/libutf8.la
liboilfunctions_la_LDFLAGS = \
-no-undefined
@@ -124,17 +127,17 @@ liboilarray.c: liboiltmp1.la Makefile
cmp liboilarray.c.tmp liboilarray.c || mv liboilarray.c.tmp liboilarray.c
liboilfuncs.h:
- ./build_prototypes >liboilfuncs.h
+ ./build_prototypes$(EXEEXT) >liboilfuncs.h
liboilmarshal.c:
- ./build_marshal >liboilmarshal.c
+ ./build_marshal$(EXEEXT) >liboilmarshal.c
liboilfuncs-doc.h:
- ./build_prototypes_doc >liboilfuncs-doc.h
+ ./build_prototypes_doc$(EXEEXT) >liboilfuncs-doc.h
update:
- ./build_prototypes >liboilfuncs.h
- ./build_marshal >liboilmarshal.c
- ./build_prototypes_doc >liboilfuncs-doc.h
- ./build_class_decls >liboilclasses.h
+ ./build_prototypes$(EXEEXT) >liboilfuncs.h
+ ./build_marshal$(EXEEXT) >liboilmarshal.c
+ ./build_prototypes_doc$(EXEEXT) >liboilfuncs-doc.h
+ ./build_class_decls$(EXEEXT) >liboilclasses.h
diff --git a/liboil/liboilparameter.h b/liboil/liboilparameter.h
index cb0581a..c92a066 100644
--- a/liboil/liboilparameter.h
+++ b/liboil/liboilparameter.h
@@ -39,6 +39,8 @@ typedef enum {
OIL_TYPE_u16,
OIL_TYPE_s32,
OIL_TYPE_u32,
+ OIL_TYPE_s64,
+ OIL_TYPE_u64,
OIL_TYPE_f32,
OIL_TYPE_f64,
OIL_TYPE_s8p,
@@ -47,6 +49,8 @@ typedef enum {
OIL_TYPE_u16p,
OIL_TYPE_s32p,
OIL_TYPE_u32p,
+ OIL_TYPE_s64p,
+ OIL_TYPE_u64p,
OIL_TYPE_f32p,
OIL_TYPE_f64p,
} OilType;
diff --git a/liboil/liboilprototype.c b/liboil/liboilprototype.c
index d137af4..b8d6eef 100644
--- a/liboil/liboilprototype.c
+++ b/liboil/liboilprototype.c
@@ -308,7 +308,11 @@ int oil_type_sizeof (OilType type)
case OIL_TYPE_u32p:
case OIL_TYPE_f32p:
return 4;
+ case OIL_TYPE_s64:
+ case OIL_TYPE_u64:
case OIL_TYPE_f64:
+ case OIL_TYPE_s64p:
+ case OIL_TYPE_u64p:
case OIL_TYPE_f64p:
return 8;
}
@@ -324,6 +328,8 @@ static const char *oil_type_names [] = {
"uint16_t",
"int32_t",
"uint32_t",
+ "int64_t",
+ "uint64_t",
"float",
"double",
"int8_t *",
@@ -332,6 +338,8 @@ static const char *oil_type_names [] = {
"uint16_t *",
"int32_t *",
"uint32_t *",
+ "int64_t *",
+ "uint64_t *",
"float *",
"double *"
};
@@ -342,6 +350,8 @@ static const char *oil_type_names_2 [] = {
"uint16_t",
"int32_t",
"uint32_t",
+ "int64_t",
+ "uint64_t",
"float",
"double"
};
@@ -352,6 +362,8 @@ static const char *oil_type_names_3 [] = {
"type_u16",
"type_s32",
"type_u32",
+ "type_s64",
+ "type_u64",
"type_f32",
"type_f64"
};
diff --git a/liboil/liboilrandom.h b/liboil/liboilrandom.h
index 2a9d928..a681c75 100644
--- a/liboil/liboilrandom.h
+++ b/liboil/liboilrandom.h
@@ -35,6 +35,8 @@
#define oil_rand_s32() ((rand()&0xffff)<<16 | (rand()&0xffff))
#define oil_rand_s32_l31() (((int32_t)rand())-0x40000000)
+#define oil_rand_s64() ((int64_t)(oil_rand_s32())<<32 | oil_rand_s32())
+
#define oil_rand_s16() ((int16_t)(rand()&0xffff))
#define oil_rand_s16_l15() (oil_rand_s16()>>1)
#define oil_rand_s16_l9() (oil_rand_s16()>>7)
@@ -43,9 +45,11 @@
#define oil_rand_s8() ((int8_t)(rand()&0xffff))
-#define oil_rand_u32() ((rand()&0xffff)<<16 | (rand()&0xffff))
+#define oil_rand_u32() ((uint32_t)((rand()&0xffff)<<16 | (rand()&0xffff)))
#define oil_rand_u32_l31() ((uint32_t)rand())
+#define oil_rand_u64() ((uint64_t)(oil_rand_u32())<<32 | oil_rand_u32())
+
#define oil_rand_u16() ((uint16_t)(rand()&0xffff))
#define oil_rand_u8() ((uint8_t)(rand()&0xffff))
diff --git a/liboil/liboiltest.c b/liboil/liboiltest.c
index c92de82..f2bd566 100644
--- a/liboil/liboiltest.c
+++ b/liboil/liboiltest.c
@@ -472,6 +472,12 @@ fill_array (void *data, OilType type, int pre_n, int stride, int post_n)
case OIL_TYPE_u32p:
FILL(uint32_t,oil_rand_u32());
break;
+ case OIL_TYPE_s64p:
+ FILL(int64_t,oil_rand_s64());
+ break;
+ case OIL_TYPE_u64p:
+ FILL(uint64_t,oil_rand_u64());
+ break;
case OIL_TYPE_f32p:
FILL(float,oil_rand_f32_0_1());
break;
@@ -521,6 +527,12 @@ check_array (void *data, void *ref, OilType type, int pre_n, int stride, int pos
case OIL_TYPE_u32p:
CHECK(uint32_t);
break;
+ case OIL_TYPE_s64p:
+ CHECK(int64_t);
+ break;
+ case OIL_TYPE_u64p:
+ CHECK(uint64_t);
+ break;
case OIL_TYPE_f32p:
CHECK(float);
break;
diff --git a/liboil/simdpack/sincos_f64.c b/liboil/simdpack/sincos_f64.c
index 1bf54ff..d76839b 100644
--- a/liboil/simdpack/sincos_f64.c
+++ b/liboil/simdpack/sincos_f64.c
@@ -40,10 +40,12 @@ sincos_f64_ref (double *dest_sin, double *dest_cos, int n, double *offset,
double *interval)
{
int i;
+ double x;
for(i=0;i<n;i++){
- dest_sin[i] = sin(*offset + *interval*i);
- dest_cos[i] = cos(*offset + *interval*i);
+ x = *offset + *interval * i;
+ dest_sin[i] = sin(x);
+ dest_cos[i] = cos(x);
}
}
OIL_DEFINE_IMPL_REF (sincos_f64_ref, sincos_f64);