Intel just released a C++ header which allows developers to use Larrabee instructions with current compilers, by simply writing out the future instrisincs as C code. Some interesting bits:
- 512 bit vector types (8x64bit double, 16x32bit float, or 16x32bit integer)
- Lots of 3-operand instructions, like a=a*b+c
- Most combinations of +,-,*,/ are provided, that is, you can choose between a*b-c, c-a*b and so forth.
- Some instructions have built-in constants: 1-a*b
- Many instructions take a predicate mask, which allows to selectively work on just a part of the 16-wide vector primitive types
- 32bit integer multiplications which return the lower 32bit of the result
- ~~Lots of~~ trigonometric functions [Update] They don’t say which ones map directly to instructions, and provide them only for the sake of completeness.
- Bit helper functions (scan for bit, etc.)
- Explicit cache control functions (load a line, evict a line – that would have been helpful on a project I worked on once)
- Horizontal reduce functions: Add all elements inside a vector, multiply all, get the minimum, and logical reduction (or, and, etc.).
Especially the reduce functions look interesting, as they are more general than the dot-product instruction available in SSE. Nothing revolutionary though, but all in all it looks like a very nice and useful instruction set, although I was hoping for 8-bit instructions as well (with 8 bit components, and RGBA, you could process 4x4 pixels at once – that would be a real killer for image processing).
Update: The instructions are 3 operand only, storing the result in the first operand!