From: Daniel H. <dhe...@te...> - 2007-07-27 02:22:39
|
Hi, How could one embed assembly code into an SBCL source file? Ideally in a form that could be manipulated before it is compiled (without leaving Lisp)? Is there some way to do this without writing out a temporary file, calling the system assembler/C compiler, and then loading the resulting object file? I'm interested in writing some vector-matrix code that took advantage of SSE and the like. However, I'd like to do all the math in Lisp, as looping expressions like "y=a*x+b*x*x" over vectors is difficult to do in C/C++ without creating temporary vectors for subexpressions. Hopefully a few smart macros could perform static optimizations based on things such as vector size -- optimizations that may need to be handwritten in C. Thanks, Daniel |
From: Sidney M. <si...@si...> - 2007-07-27 02:45:14
|
Daniel Herring wrote, On 27/7/07 2:25 PM: > Hopefully a > few smart macros could perform static optimizations based on things such > as vector size -- optimizations that may need to be handwritten in C. Start by looking at VOPS, what they are, how to write them, and find examples of their use in the sbcl source code: http://sbcl-internals.cliki.net/VOP http://sbcl-internals.cliki.net/Adding%20VOPs For many examples in the sbcl source code of VOP optimizations used in arithmetic functions, see src/compiler/x86/arith.lisp -- Sidney Markowitz http://www.sidney.com |
From: Daniel H. <dhe...@te...> - 2007-07-27 03:26:20
|
On Fri, 27 Jul 2007, Sidney Markowitz wrote: > Daniel Herring wrote, On 27/7/07 2:25 PM: >> Hopefully a >> few smart macros could perform static optimizations based on things such >> as vector size -- optimizations that may need to be handwritten in C. > > Start by looking at VOPS, what they are, how to write them, and find > examples of their use in the sbcl source code: > > http://sbcl-internals.cliki.net/VOP > http://sbcl-internals.cliki.net/Adding%20VOPs > > For many examples in the sbcl source code of VOP optimizations used in > arithmetic functions, see > > src/compiler/x86/arith.lisp Thanks; that's what I was looking for. Also of interest: src/compiler/meta-vmdef.lisp:1526 - Daniel |
From: Juho S. <js...@ik...> - 2007-07-27 04:43:31
|
Daniel Herring <dhe...@te...> writes: > I'm interested in writing some vector-matrix code that took advantage of > SSE and the like. However, I'd like to do all the math in Lisp, as > looping expressions like "y=a*x+b*x*x" over vectors is difficult to do in > C/C++ without creating temporary vectors for subexpressions. Hopefully a > few smart macros could perform static optimizations based on things such > as vector size -- optimizations that may need to be handwritten in C. You could look at the (dead?) sb-simd project at cl.net - <http://common-lisp.net/project/sb-simd/> - for some inspiration and existing code. -- Juho Snellman |