I'd like to understand the concept of "aligned sets" in RegMask. I
believe I understand the RegMask idea overall, but I don't understand
the idea of alignment of sets (actually the concept of sets in this
context is also fuzzy). I've looked at the code that implements
is_aligned_sets, and I just can't yet seem to grok what requirement it
is trying to verify. I read RegMask.hpp's comments on the method
protoype, and it didn't help me much, I'm afraid. If someone could give
a paragraph or two of explanation, I'd really appreciate it.
Any additional insights into porting the Vector API to other arches
would also be appreciated. For example, maybe we've started the port at
the wrong place.
Thanks for your consideration.
We have started working on adding support to the PPC64-LE hotspot code
for the Vector API. In order to support Vector Masks, it seems we need
to change our current support for fixed-length, 128-bit vectors to
something that can be as short as two booleans. To do that we have
changed the function min_vector_size in hotspot/cpu/ppc.ad to return 2
when the type is T_BOOLEAN, otherwise it still returns 16.
My first task was to add support for vector masks, and so I added a new
instruct to cpu/ppc/ppc.ad to match VectorLoadMask, which then
necessitated adding some instructs for LoadVector and StoreVector of the
I have a test case that loads a vector mask for a vector of shorts: