QCEV99
Newsletter Try Vector Inspector
Newsletter

ARM SVE Explained: Scalable Vectors and Predication

Arm SVE is a scalable vector architecture built around implementation-defined vector length and pervasive predication. Learn the model, loop style and why it differs from NEON.

Author
QCEV99 Editorial
Published
12 Aug 2026
Updated
12 Aug 2026
Reading time
3 min

Arm Scalable Vector Extension, or SVE, is a vector extension for AArch64 designed so software can take advantage of different hardware vector lengths without being rewritten around one fixed lane count.

Its key ideas are scalable vector length, pervasive predication and instructions intended to make a broader set of loops vectorizable.

Why Arm created a scalable vector ISA

Fixed-width SIMD ties the architectural programming model closely to a particular register size. As implementations evolve, widening the ISA normally requires new instructions, new register semantics or new binaries.

SVE instead lets an implementation choose its supported vector length within the architectural model while encouraging software to use vector-length-agnostic loops.

Z registers and predicate registers

SVE uses scalable vector registers commonly referred to as Z registers, alongside a predicate register file. Predicates contain per-element activity information used by loads, stores and arithmetic operations.

This makes masking a central part of the ISA rather than a special-case cleanup mechanism.

The SVE loop style

A conceptual SVE loop looks like this:

i = 0;
while (i < n) {
    p = predicate_for_elements_i_through_n(i, n);
    x = predicated_load(a + i, p);
    y = predicated_load(b + i, p);
    z = x + y;
    predicated_store(c + i, p, z);
    i += hardware_vector_length_in_elements;
}

The same algorithm can run on implementations with different supported SVE vector lengths because the loop increment and active predicate adapt to the machine.

Predication and tail handling

Suppose 19 elements remain but the machine can operate on more than 19 elements in one vector register. The final predicate marks only the valid elements active. Predicated loads avoid reading invalid elements and predicated stores avoid writing inactive lanes.

This is a natural way to handle tails and is one of the most visible differences from classic fixed-width SIMD loops with scalar cleanup.

More than basic lane masking

SVE’s predicate model supports patterns useful for vectorizing conditions and loops that are difficult to express with basic packed SIMD. Arm’s original SVE material highlights features such as per-lane predication, gather/scatter and mechanisms intended to remove barriers to vectorization.

SVE versus SVE2

SVE established the scalable vector model with a strong focus on high-performance and scientific computing. SVE2 extends the model with additional operations useful across broader workloads such as DSP, media and general-purpose integer processing.

The distinction matters when checking instruction availability. “Supports SVE” does not automatically mean every SVE2 operation is present.

SVE versus NEON

Arm NEON uses fixed 128-bit vector registers. SVE is scalable and uses a different vector/predicate programming model.

NEON remains extremely important and is often an excellent target. SVE does not make NEON conceptually obsolete; it provides a different architecture for software that benefits from scalable width and richer predication.

Does SVE guarantee a wide physical datapath?

No. Architectural vector length tells software how much state and element capacity the ISA presents. A processor implementation is free to organize its execution hardware differently, provided it obeys the architecture.

Performance therefore still depends on instruction throughput, memory bandwidth, cache hierarchy, clock behavior and the exact processor.

Programming SVE

Developers can reach SVE through compiler auto-vectorization, compiler language extensions and intrinsics defined through Arm’s C Language Extensions. Auto-vectorization is often the best starting point for ordinary loops because it preserves portability and lets the compiler choose instruction sequences.

Intrinsics become useful when specific predication, permutes or architectural operations must be expressed directly.

Why SVE matters architecturally

SVE changes the contract between software and hardware. Instead of a new software interface for every wider vector register, the ISA lets one program express work in a width-independent form.

That is a significant answer to the long-running problem QCEV99 is interested in: how much parallel structure should be explicit in the ISA without over-constraining the microarchitecture?

Key takeaways

  • SVE is a scalable vector architecture for AArch64.
  • Predication is central to ordinary SVE execution and tail handling.
  • Correct SVE code can avoid assuming one implementation vector width.
  • SVE and NEON are different programming models; SVE2 adds further capabilities beyond SVE.
  • Architectural width does not by itself determine real processor throughput.

References and further reading


Continue learning

Understand the loop. Understand the machine.

QCEV Vector Inspector is designed to help developers reason about vectorization opportunities, dependencies and memory access in performance-critical loops.

Explore QCEV Vector Inspector →

QCEV99 is an independent computer architecture publication focused on vector computing, processor design and performance engineering. We connect architecture research with the code and hardware developers use today.

About QCEV99

Understand the code behind the architecture

QCEV Vector Inspector helps you reason about vectorization opportunities, memory access and dependencies in performance critical loops.

Try Vector Inspector

Continue from here

NEON vs SVE

Fixed 128-bit SIMD against scalable vectors on the same architecture family.

ARM SVE explained

Scalable vectors, predication and vector-length agnostic software on ARM.

ARM NEON explained

The 128-bit ARM SIMD baseline: registers, intrinsics and what it does and does not provide.