On Tue, 19 Oct 2021 19:51:54 GMT, Paul Sandoz <psan...@openjdk.org> wrote:

>> src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java 
>> line 603:
>> 
>>> 601:         if (opKind(op, VO_SPECIAL)) {
>>> 602:             if (op == ZOMO) {
>>> 603:                 return blend(broadcast(-1), compare(NE, 0, m));
>> 
>> This doesn't look correct. The lanes where mask is false should get the 
>> original lane value in this vector.
>
> That should work, since `compare(NE, 0, m) === compare(NE, 0).and(m)`, so 
> when an `m` lane is unset the lane element of `this` vector will be selected.
> 
> Running jshell against a build of PR:
> 
> $ ~/Projects/jdk/jdk/build/macosx-x86_64-server-release/images/jdk/bin/jshell 
> --add-modules jdk.incubator.vector
> |  Welcome to JShell -- Version 18-internal
> |  For an introduction type: /help intro
> 
> jshell> import jdk.incubator.vector.*
> 
> jshell> var s = IntVector.SPECIES_256;
> s ==> Species[int, 8, S_256_BIT]
> 
> jshell> var v = IntVector.fromArray(s, new int[]{0, 1, 0, -2, 0, 3, 0, -4}, 
> 0);
> v ==> [0, 1, 0, -2, 0, 3, 0, -4]
> 
> jshell> var z = v.lanewise(VectorOperators.ZOMO);
> z ==> [0, -1, 0, -1, 0, -1, 0, -1]
> 
> jshell> z = v.lanewise(VectorOperators.ZOMO, s.loadMask(new boolean[]{false, 
> false, false, false, true, true, true, true}, 0));
> z ==> [0, 1, 0, -2, 0, -1, 0, -1]
> 
> jshell>

Yes, you are correct. There is no problem here.

-------------

PR: https://git.openjdk.java.net/jdk/pull/5873

Reply via email to