I said:
A set of Smalltalk primitives that models an ISA that was designed to handle advanced graphics and DSP operations, regardless of whether these are implemented using single instructions, or a larger C-based simulation, would be VERY worthwhile, don't you agree?
I've been looking more closely at the AltiVec instructions.
Here are a few of the potentially useful instructions that I'm thinking of simulating:
vperm: vector permute -takes 3 128-bit registers and merges the byte- contents of registers b and c based on the control bits in register a.
vor: vector logical OR -logical ORs 2 128-bit registers vnor: vector logical NOR -logical NORs 2 128 bit registers etc
vsl: vector shift left -128-bit shift left etc
vrlb: vector rotate left integer byte -rotates each byte in a 128-bit register by the amount specified in the corresponding low 3-bits of each byte in another register
vrlh: vector rotate left half-word -as above with 16-bits vrlw: vector rotate left word -32 bits etc
There are various vector mul-add instructions for bytes, half-words, words and 32-bit floats. Various pixel pack and unpack instructions, etc. 162 instructions in all.
I don't know what the savings would be to perform these operations via C primitives instead of directly in Smalltalk, but I betcha that they CAN save significant time and space. Testing new color transforms (like the GX colors that I want to do) would be a lot easier and faster if efficient multi-pixel bit-manipulation primitives were available, no?
I'm sure that other people could come up with other uses for the ability to perform vector arithmetic, bit-manipulation and logic operations via C-based primitives (and G4 Mac and AIX users would get single-cycle implementations of these in the CPU, of course).
---------------------------------------------------------------------- Use your imagination. ----------------------------------------------------------------------
There is a large list of libraries from Intel that are free for the asking. We don't get source just binary redistribution.
I realize this is not incredibly useful since it is X86 specific but it is an impressive list of libraries for some ideas(or API's):
----- Signal Processing Library The Intel Signal Processing Library provides a set of signal processing functions for the Intel Architecture processors similar to those available for most Digital Signal Processors (DSPs).
Recognition Primitives Library The Intel Recognition Primitives Library provides developers of speech- and character-recognition software with a set of recognition primitives optimized for the Intel Architecture.
Image Processing Library The Intel Image Processing Library provides a set of low-level image manipulation functions in standard DLLs and static libraries form. The functions are optimized for Intel Architecture processors and are particularly effective at taking advantage of MMX technology.
JPEG Library The Intel JPEG Library provides high-performance encoding and decoding of full-color and grayscale continuous-tone still images in JPEG format.
Math Kernel Library The Intel Math Kernel Library provides developers of scientific and engineering software with a set of linear algebra and fast Fourier transform functions as a static library optimized for the Intel Architecture.
---
adam hill...
squeak-dev@lists.squeakfoundation.org