import java.lang.foreign.*;

public class Test2 {

    public static void main(String[] args) {
        long size = 200_000;
        MemorySegment data = Arena.ofAuto().allocate(size);
        for (int i = 0; i < 10; i++) {
            test1(data);
            test2(data, i);
        }
    }

    // Vectorizes -> OSR and regular compilation
    static void test1(MemorySegment data) {
        for (int i = 0; i < 100_000; i++) {
            long adr = i;
            byte v = data.get(ValueLayout.JAVA_BYTE, adr);
            data.set(ValueLayout.JAVA_BYTE, adr, (byte)(v + 1));
        }
    }

    // sOSR -> not vectorized: No pair packs generated, abort SuperWord.
    // Vectorize in regular compilation.
    static void test2(MemorySegment data, long invar) {
        for (int i = 0; i < 100_000; i++) {
            long adr = i + invar;
            byte v = data.get(ValueLayout.JAVA_BYTE, adr);
            data.set(ValueLayout.JAVA_BYTE, adr, (byte)(v + 1));
        }
    }
}
