Skip to content

Commit c0c4db9

Browse files
committed
Support single y level processing using Vector API
1 parent 2b31428 commit c0c4db9

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

worldedit-core/src/main/java/com/fastasyncworldedit/core/internal/simd/VectorFacade.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public ShortVector get(VectorSpecies<Short> species) {
2626

2727
public ShortVector getOrZero(VectorSpecies<Short> species) {
2828
if (this.data == null) {
29-
return species.zero().reinterpretAsShorts();
29+
return ShortVector.zero(species);
3030
}
3131
return ShortVector.fromCharArray(species, this.data, this.index);
3232
}

worldedit-core/src/main/java/com/fastasyncworldedit/core/internal/simd/VectorizedCharFilterBlock.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ public VectorizedCharFilterBlock(final Extent extent) {
1515

1616
@Override
1717
public synchronized void filter(final Filter filter) {
18+
filter(filter, 0, 15);
19+
}
20+
21+
@Override
22+
public synchronized void filter(final Filter filter, final int startY, final int endY) {
1823
if (!(filter instanceof VectorizedFilter vecFilter)) {
1924
throw new IllegalStateException("Unexpected VectorizedCharFilterBlock " + filter);
2025
}
@@ -24,9 +29,8 @@ public synchronized void filter(final Filter filter) {
2429
VectorFacade getFassade = new VectorFacade(this.get);
2530
getFassade.setLayer(this.layer);
2631
getFassade.setData(this.getArr);
27-
// assume setArr.length == getArr.length == 4096
2832
VectorMask<Short> affectAll = species.maskAll(true);
29-
for (int i = 0; i < 4096; i += species.length()) {
33+
for (int i = startY << 8; i < ((endY + 1) << 8) - 1; i += species.length()) {
3034
setFassade.setIndex(i);
3135
getFassade.setIndex(i);
3236
vecFilter.applyVector(getFassade, setFassade, affectAll);

0 commit comments

Comments
 (0)