Quexal offers a rich
graphical user interface
that turns MMX / SSE
/ SSE2 integer
programming into a point-and-click task.
The programmer works with
basic operations just like in high-level languages. This abstraction
flattens the learning curve and shortens the development cycle.
The graphical display of
the source code helps you gain more insight into the structure of the
algorithm you are developing, and lets you visually detect bottlenecks
in the logic of the code that would harm the performance of optimized
Frequently used code
fragments can be
saved as macros, and Quexal provides a macro
library that streamlines common MMX / SSE programming tasks.
The Quexal compiler turns
into highly optimized assembly code, ready to be pasted into your
environment of choice. Quexal supports the following languages:
The compiler performs
extensive error checking
tests on source code to catch partially or incorrectly defined
and uninitialized variables.
- Microsoft Visual C++
- Borland C++ Builder
- Intel / Microsoft
The SSE / SSE2 bytecode
compiler lets you use SSE / SSE2
integer instructions even if your development environment does not
them by turning source instructions directly in machine bytecode.
programmers can also enable the MMX
You can also choose to
optimize the source
code for the following processors:
tools, that let you see how the optimized code runs on the Pentium
III / Athlon / Pentium 4 micro architectures. Pinpointing
is therefore much easier and faster.
Quexal includes a visual Debugger
that re-arranges source code in a graph showing dependency bonds among
instructions. You can enter source values and analyze what the
defined in source code do, and therefore easily detect troublesome
The Visual Debugger lets
test your code without even compiling and running it! You can enter the
data values that are read at the beginning of the loop and check the
values at the bottom of the loop: if they do not match the correct
you can move up from the latest instructions step by step (or move down
from the first ones) and find out where are the bugs: when you can see
at the same time all values assigned to a variable during the
it is much easier to discover errors.
Thanks to the SSE / SSE2
emulator, you can also
design and test SSE / SSE2 code on a CPU without SSE
/ SSE2 extensions.
- MMX Instructions: MOVD,
MOVQ, PACKSSDW, PACKSSWB, PACKUSWB, PADDB, PADDW, PADDD, PADDSB,
PADDUSB, PADDUSW, PAND, PANDN, PCMPEQB, PCMPEQW, PCMPEQD, PCMPGTB,
PCMPGTD, PMADDWD, PMULHW, PMULLW, POR, PSLLD, PSLLW, PSLLQ, PSRAD,
PSRLW, PSRLD, PSRLQ, PSUBB, PSUBW, PSUBD, PSUBSB, PSUBSW, PSUBUSB,
PUNPCKHBW, PUNPCKHDQ, PUNPCKHWD, PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ, PXOR,
- SSE Instructions: PSHUFW,
PSADW, PMINUB, PMINSW, PMAXUB, PMAXSW, PMULHUW, PAVGB, PAVGW, PINSRW,
- SSE2 Instructions:
PADDQ, PSUBQ, PMULUDQ;
- x86 Instructions:
INC, DEC, ADD,
SUB, JMP, conditional jumps, generic assembly line, comment line.