]> git.mxchange.org Git - simgear.git/commitdiff
MAT3mat.c: Borland tweaks.
authorcurt <curt>
Thu, 22 Apr 1999 18:46:27 +0000 (18:46 +0000)
committercurt <curt>
Thu, 22 Apr 1999 18:46:27 +0000 (18:46 +0000)
mat3.h:  Some inline assembly from Norman.

Lib/Math/MAT3mat.c
Lib/Math/mat3.h

index 4355f176904b28fc90b04c9fe4a3f6923553ef70..2054f7731b4aeb8f9cdb77aa2b95834228b19575 100644 (file)
 
 #ifdef WIN32
 #  ifndef HAVE_STL_SGI_PORT
-#    include <memory.h>      /* required for memset() and memcpy() */
+#    ifdef __BORLANDC__
+#      include <mem.h>
+#    else
+#      include <memory.h>      /* required for memset() and memcpy() */
+#    endif
 #  endif
 #endif
 
index e11896ce158d091f1445b08f5c5a515582535c8e..cb8a0d33b888e26624949189c20e74b1d5fcf3d5 100644 (file)
@@ -47,6 +47,32 @@ typedef double MAT3hvec[4];             /* Vector with homogeneous coord */
 
 extern MAT3mat identityMatrix;
 
+#if defined(i386)
+#define USE_X86_ASM
+#endif
+
+#if defined(USE_X86_ASM)
+static __inline__ int FloatToInt(float f)
+{
+   int r;
+   __asm__ ("fistpl %0" : "=m" (r) : "t" (f) : "st");
+   return r;
+}
+#elif  defined(__MSC__) && defined(__WIN32__)
+static __inline int FloatToInt(float f)
+{
+   int r;
+   _asm {
+     fld f
+     fistp r
+    }
+   return r;
+}
+#else
+#define FloatToInt(F) ((int) (F))
+#endif
+
+
 /* Tests if a number is within EPSILON of zero */
 #define MAT3_IS_ZERO(N)        ((N) < MAT3_EPSILON && (N) > -MAT3_EPSILON)