SuperWord optimization
Chuck Rasbold
rasbold at google.com
Tue Dec 23 10:21:36 PST 2008
You are looking in the wrong spot. The match rules for the server
compiler are in src/cpu/x86/vm/x86*.ad. There you will see match rules
for some double arithmetic operations, but not float or int, for
example.
Without the appropriate match rule, the superword transformation will
reject an operation as unimplemented. Operations which are implemented
but do not have the necessary vector inputs will be reported as
unprofitable.
Remember that superword is a work in progress, and one that is
stalled, at that. There are bugs, as well as unimplemented features,
and as you play with it, you'll run into a little of both.
-- Chuck
On Fri, Dec 19, 2008 at 7:23 PM, James Walsh
<groundskeeperwiley at yahoo.com> wrote:
> I have some basic questions about this optimization. Can anyone tell me what SSE instructions are supported by SuperWord? I've run a very simple program that should be accelerated by the packed move and arithmetic opcodes available in SSE but the code generated appears to be MMX. I've run the program with a 1.7 debug build with -XX:+TraceSuperWord and -XX:+Verbose and from the resulting data printed out it looks like SuperWord does recognize that my program should be optimized. Yet in the end the arithmetic optimizations are rejected as unsupported and the load/stores are rejected as unproductive. I looked in the file called /src/cpu/x86/vm/assembler_x86 and the only SSE opcode that I recognize is MOVAPS(xmm,xmm). Does the compiler know how to emit ADDPS/SUBPS/MULPS/DIVPS opcodes and I'm just looking in the wrong spot?
>
>
>
>
More information about the hotspot-dev
mailing list