Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8083069 | emb-9 | Goetz Lindenmaier | P4 | Resolved | Fixed | b35 |
This effect is similar to USE_DEF, except that a TEMP node will be generated
that represents the USE.
With this effect one can express that the def'ed register must be
different from the used ones corresponding to ins. Currently this is
already possible by specifying effect TEMP for the operand with effect
DEF from the match rule.
Introducing this new identifyer makes the code more readable and
allows to specify the effect for nodes without match rules.
An example is an optimized encode node, if the base of the compressed heap
is 35G aligned, i.e., the shifted narrow oop can be merged with the base by
an or instruction.
On PPC we can shift and or with a single instruction:
decodeN(dst, src):
mov Rdst = Rbase
rldimi Rdst = Rdst || (Rsrc << 3)
As the move is off the critical path, this is superior to do a shift and an add.
Unfortunately we must guarantee that Rdst != Rsrc. which we do with a TEMP_DEF effect:
instruct decodeN(iRegPdst dst, iRegNsrc src) %{
match(Set dst (DecodeN src));
effect(TEMP_DEF dst);
- backported by
-
JDK-8083069 Introduce identifier TEMP_DEF for effects in adl.
- Resolved