Development
environment
Quexal offers a rich
graphical user interface
that turns MMX / SSE
/ SSE2 integer
programming into a point-and-click task.

The programmer works with
variables and
basic operations just like in high-level languages. This abstraction
layer
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
code.
Frequently used code
fragments can be
saved as macros, and Quexal provides a macro
library that streamlines common MMX / SSE programming tasks.

Optimizing
compiler
The Quexal compiler turns
source code
into highly optimized assembly code, ready to be pasted into your
development
environment of choice. Quexal supports the following languages:
- Microsoft Visual C++
- Borland C++ Builder
- Borland
Delphi
- Intel / Microsoft
C++
Intrinsics
The compiler performs
extensive error checking
tests on source code to catch partially or incorrectly defined
instructions
and uninitialized variables.
The SSE / SSE2 bytecode
compiler lets you use SSE / SSE2
integer instructions even if your development environment does not
support
them by turning source instructions directly in machine bytecode.
Delphi
programmers can also enable the MMX
bytecode
compiler.
You can also choose to
optimize the source
code for the following processors:
Performance
analysis
Quexal includes
break-through analysis
tools, that let you see how the optimized code runs on the Pentium
III / Athlon / Pentium 4 micro architectures. Pinpointing
performance bottlenecks
is therefore much easier and faster.


Error
detection
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
instructions
defined in source code do, and therefore easily detect troublesome
spots.

The Visual Debugger lets
you effectively
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
output
values at the bottom of the loop: if they do not match the correct
ones,
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
computation,
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.

Supported
Instructions
- MMX Instructions: MOVD,
MOVQ, PACKSSDW, PACKSSWB, PACKUSWB, PADDB, PADDW, PADDD, PADDSB,
PADDSW,
PADDUSB, PADDUSW, PAND, PANDN, PCMPEQB, PCMPEQW, PCMPEQD, PCMPGTB,
PCMPGTW,
PCMPGTD, PMADDWD, PMULHW, PMULLW, POR, PSLLD, PSLLW, PSLLQ, PSRAD,
PSRAW,
PSRLW, PSRLD, PSRLQ, PSUBB, PSUBW, PSUBD, PSUBSB, PSUBSW, PSUBUSB,
PSUBUSW,
PUNPCKHBW, PUNPCKHDQ, PUNPCKHWD, PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ, PXOR,
EMMS;
- SSE Instructions: PSHUFW,
PSADW, PMINUB, PMINSW, PMAXUB, PMAXSW, PMULHUW, PAVGB, PAVGW, PINSRW,
PEXTRW,
PMOVMSKB;
- SSE2 Instructions:
PADDQ, PSUBQ, PMULUDQ;
- x86 Instructions:
MOV,
INC, DEC, ADD,
SUB, JMP, conditional jumps, generic assembly line, comment line.
|