Commit graph

978 commits

Author SHA1 Message Date
Alexander Gavrilov
03049ee7e2 Make boxed SSE packs untyped for all purposes but printing.
Now the following rules hold:

- (type-of pack) = SSE-PACK
- (typep pack '*-SSE-PACK) = T

The compiler is tweaked to unbox unidentified packs as
__m128i (integer), assuming that a cast would be inserted
later if that is not what was needed.
2010-10-03 23:43:52 +02:00
Alexander Gavrilov
8f835233d6 Enable automatic coercion of SSE subtypes via _mm_cast* intrinsics.
Assume that any sse-pack subtype matches any other one in inline
expansion matcher, and insert casts when required.

This uses intrinsics that are present only in the recent versions
of compilers, so add fallback inline definitions to a header file.
2010-10-03 23:42:57 +02:00
Alexander Gavrilov
2f4723012e Open-code array-row-major-index too if enabled for aref/aset.
This should make manually expanded index computations faster.
2010-10-03 23:41:33 +02:00
Juan Jose Garcia Ripoll
c2d8e70d1b In LET/LET* forms, a local binding did not shadow a special variable binding.
> (defun test ()
   (let ((a 5))
     (declare (special a))
     (flet ((x () a))
       (let ((a 10))
         (x)))))
> (test)
5
> (compile 'test)
> (test)
10
2010-09-28 23:42:15 +02:00
Juan Jose Garcia Ripoll
33a9087056 Optimization policies were overwritten by its own code, not being available in a fresh new image. 2010-09-27 10:24:48 +02:00
Juan Jose Garcia Ripoll
145e0e6ec2 The C inliner always inlined forms whose return type matched exactly, even when POLICY-ASSUME-RIGHT-TYPE was false 2010-09-27 10:24:04 +02:00
Juan Jose Garcia Ripoll
f53e1fc768 After recompiling cmppolicy the declaration specifiers were lost. 2010-09-22 00:03:23 +02:00
Juan Jose Garcia Ripoll
09ae1f43c0 Fixed type warning in macroexpansion of sequece iterators 2010-09-21 09:25:26 +02:00
Juan Jose Garcia Ripoll
c2661518a9 The compiler no longer interferes with the debugger hooks. 2010-09-21 09:12:52 +02:00
Juan Jose Garcia Ripoll
9904da236e When computing the init name of a compiled module, use the physical namestring 2010-09-12 09:57:48 +02:00
Juan Jose Garcia Ripoll
4518b18892 Rewrite var-changed-in... because it was missing special variables without explicit references 2010-08-22 01:07:32 +02:00
Alexander Gavrilov
dcf08cd6c0 Warn about automatic boxing of SSE values in the compiler.
Since the whole point of SSE is high performance, boxing
defeats the purpose and should be immediately flagged.
Also enable marking functions so that the compiler warns
if they are not inlined.
2010-08-20 20:29:03 +02:00
Alexander Gavrilov
5088dd10b5 Implement compilation of SSE packed vector constants.
The constants are dumped as static C constants, with
data represented as integer byte values. This should
provide optimal performance and exact equality.
2010-08-20 20:29:03 +02:00
Alexander Gavrilov
c348b6f948 Implement boxing and unboxing of SSE values in the compiler.
This makes the SSE types marginally usable via c-inline:

(defun foo (xx yy)
  (let ((sum (ffi:c-inline
                 (xx yy) (:float-sse-pack :float-sse-pack)
                 :float-sse-pack
               "_mm_add_ps(#0,#1)" :one-liner t)))
    (ffi:c-inline (sum) (:float-sse-pack) :float-sse-pack
      "_mm_mul_ps(#0,_mm_set1_ps(3.0))" :one-liner t)))
2010-08-20 20:29:03 +02:00
Juan Jose Garcia Ripoll
e83bd3dfb4 Unboxed type SHORT-FLOAT removed from the core. 2010-08-17 19:47:14 +02:00
Juan Jose Garcia Ripoll
2f1e68128e Fixed proclamation for compiled-function-file. 2010-07-31 13:34:26 +02:00
Juan Jose Garcia Ripoll
cda6b38a9d Missing double quotes in argument to MSVC compiler 2010-07-24 00:00:42 +02:00
Juan Jose Garcia Ripoll
d275538e07 Fixed the optimizer for OR 2010-07-15 23:02:52 +02:00
Juan Jose Garcia Ripoll
b079b1208c In VALUES-TYPE-TO-N-TYPES the number of requested types may be zero (i.e. multiple-value-bind with zero arguments) 2010-07-14 22:47:06 +02:00
Juan Jose Garcia Ripoll
1dadff58e6 Sometimes in the list of forms, when simplifying, NIL and other atomic expressions get in. Ignore them in the type propagation phase. 2010-07-14 22:31:05 +02:00
Juan Jose Garcia Ripoll
d31e14eedc Removed a debug statement in PROCLAIM 2010-07-14 18:44:12 +02:00
Juan Jose Garcia Ripoll
ab29bc1438 Fixed the expansion of DECLAIM (in cmpenv-declaim.lsp) 2010-07-14 18:39:44 +02:00
Juan Jose Garcia Ripoll
905475f954 Allo (declare (notinline (setf ...))) (A. Gavrilov) 2010-07-11 12:35:00 +02:00
Juan Jose Garcia Ripoll
330ee771d8 In (DECLARE (IGNORE (FUNCTION ...))) ECL complained about the arguments. Remove a spurious check. (A. Gavrilov) 2010-07-11 12:34:01 +02:00
Juan Jose Garcia Ripoll
a1ccbbe972 Deactivate warning about missing type propagation code for FUNCALL. 2010-07-01 23:39:12 +02:00
Juan Jose Garcia Ripoll
1eb33bb8af Fixed typo in GET-ARG-TYPES: local declarations were not properly parsed. 2010-07-01 22:45:19 +02:00
Juan Jose Garcia Ripoll
9b548005fb Silence some type propagation messages 2010-06-30 21:30:07 +02:00
Juan Jose Garcia Ripoll
fd2848c9c7 Function proclamations are also used to deduce the argument types and automatically generate type checks. 2010-06-28 21:39:20 +02:00
Juan Jose Garcia Ripoll
2cacf0aefc Simplifications in compiler macro for TYPEP 2010-06-28 21:37:07 +02:00
Juan Jose Garcia Ripoll
87482f66a9 Reimplemented the compiler flags to allow switching off the flags 2010-06-28 21:36:04 +02:00
Juan Jose Garcia Ripoll
25634d1534 Fix various function proclamations and declarations 2010-06-28 21:34:13 +02:00
Juan Jose Garcia Ripoll
f6ed398f40 Fixed typo in cmptype-prop.lsp 2010-06-22 00:07:33 +02:00
Juan Jose Garcia Ripoll
04874bbc7a Fix inliners for EXP and SIN 2010-06-20 16:57:35 +02:00
Juan Jose Garcia Ripoll
54cb5493e8 When omitting redundant or unused constants, emit a bit more clear warning in cmpwt.lsp and make this a compiler note, not a warning. 2010-06-20 15:21:06 +02:00
Juan Jose Garcia Ripoll
2f83e196da Differentiate the init names of statically linked libraries from the DLLs derived from them 2010-06-20 00:46:10 +02:00
Juan Jose Garcia Ripoll
687f3d8fdd Fix the type of arguments to FEwrong_index 2010-06-20 00:30:35 +02:00
Juan Jose Garcia Ripoll
a49dad3e6d cl_cos/cl_sin/... now have a slightly cheaper working function ecl_cos/ecl_sin/... that can be directly called 2010-06-19 17:48:33 +02:00
Juan Jose Garcia Ripoll
bdb6dcad1c Remove debug statements from CMPERR 2010-06-19 16:02:37 +02:00
Juan Jose Garcia Ripoll
0ae89e2494 When finding type errors in in ENFORCE-TYPES, emit a warning 2010-06-19 16:02:23 +02:00
Juan Jose Garcia Ripoll
5a47ccedd3 Ensure that files from MKSTEMP carry an extension 2010-06-19 00:04:06 +02:00
Juan Jose Garcia Ripoll
061354cd61 Use OR types instead of type-or when computing the element type of an array 2010-06-09 23:04:35 +02:00
Juan Jose Garcia Ripoll
6a4f59e5d4 Use :unsigned-char instead of :char for base-char objects 2010-06-09 23:04:08 +02:00
Juan Jose Garcia Ripoll
6f27907c8f Eliminate unused code. 2010-06-09 21:47:23 +02:00
Juan Jose Garcia Ripoll
bd0bd20f98 First steps towards an implementation of the compiler that uses SERIALIZABLE 2010-06-06 23:03:08 +02:00
Juan Jose Garcia Ripoll
0abe27afb1 The object associated to the VV location is now stored in it 2010-06-05 23:16:17 +02:00
Juan Jose Garcia Ripoll
4d71ab1b2f Rewritten SET-LOC / WT-LOC for a bit more efficiency 2010-06-05 22:43:39 +02:00
Juan Jose Garcia Ripoll
54e09d8acf VV and VV-TEMP merged into the same object 2010-06-05 22:15:18 +02:00
Juan Jose Garcia Ripoll
a1bccd39ef Do not produce textual representations for unused objects 2010-06-05 22:00:32 +02:00
Juan Jose Garcia Ripoll
524f0792a5 VV/VV-TEMP locations are now structures 2010-06-05 21:39:20 +02:00
Juan Jose Garcia Ripoll
e5e835abcc New special form COMPILER-TYPECASES 2010-06-05 11:27:54 +02:00