[Ecls-list] SSE error in build

Alexander Gavrilov angavrilov at gmail.com
Wed Mar 2 20:40:13 UTC 2011


> ;;; Compiling (DEF-UTILITY NEG-SS ...).
> 
> Condition of type: SIMPLE-ERROR
> Cannot externalize object #<SSE -0.0 0.0 0.0 0.0>
> Available restarts:

That's probably because of the change below. SSE packs can currently
only be compiled as static constants, and this really should be the
way they are handled: that negation operation is really supposed
to compile down to one XORPS instruction.

As an alternative, if there is a way to fuse the constant with
the unboxing operation, the unboxed value can probably be represented
as an expression using a couple of C intrinsic functions.

Alexander


Author: Juan Jose Garcia Ripoll <jjgarcia at users.sourceforge.net>  2011-01-23 23:43:37

    Do not use static constants when compiling Lisp code other than ECL's core

------------------------------ src/cmp/cmpwt.lsp ------------------------------
index 24eab26..e316dbd 100644
@@ -280,7 +280,9 @@
   nil
   #-:msvc
   ;; FIXME! The Microsoft compiler does not allow static initialization of bit fields.
-  (unless (or *compiler-constants* (not (listp *static-constants*)))
+  (unless (or *compiler-constants*
+              (not *use-static-constants-p*)
+              (not (listp *static-constants*)))
     (let ((record (find object *static-constants* :key #'first :test #'equal)))
       (if record
           (second record)






More information about the ecl-devel mailing list