public class SimulasiLane {

    // Lebar lane ilustratif: peniruan konsep, bukan SIMD sungguhan.
    static final int LANE = 4;

    public static void main(String[] args) {
        int[] data = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8};

        // 1) Loop scalar: satu elemen diproses per langkah.
        long totalScalar = 0;
        int langkahScalar = 0;
        for (int nilai : data) {
            totalScalar += (long) nilai * nilai;
            langkahScalar++;
        }

        // 2) Loop "lanewise": satu potongan 4 elemen per langkah.
        long totalLane = 0;
        int langkahLane = 0;
        for (int basis = 0; basis < data.length; basis += LANE) {
            int[] potongan = new int[LANE];
            for (int i = 0; i < LANE; i++) {
                potongan[i] = data[basis + i]; // muat satu lane penuh
            }
            long jumlahLane = 0;
            for (int i = 0; i < LANE; i++) {
                jumlahLane += (long) potongan[i] * potongan[i]; // kuadrat per lane
            }
            totalLane += jumlahLane;
            langkahLane++;
        }

        System.out.println("total scalar : " + totalScalar);
        System.out.println("total lane   : " + totalLane);
        System.out.println("langkah loop scalar: " + langkahScalar);
        System.out.println("langkah loop lane  : " + langkahLane);
    }
}
