# Adaptive Logic Module (ALM) Definition

The Adaptive Logic Module (ALM) is the basic building block of supported
device families (Arria^{®} series, Cyclone^{®} V, Stratix^{®} IV, and Stratix^{®} V) and is designed to maximize performance and resource
usage. Each ALM can support up to eight inputs and eight outputs, contains two or four
register logic cells (`lc_ff`) and two combinational logic
cells (`lc_comb`), two dedicated full adders, a carry chain,
a register chain, and a 64-bit LUT mask. In Stratix^{®} IV,
and Stratix^{®} V family devices, you can implement the two
combinational logic cells (`mp_comb`) as register,
combinational, or MLAB logic cells. In Arria^{®} V, Cyclone^{®} V, and Stratix^{®} V family
devices, you can implement the two combinational logic cells (`mp_comb`) as combinational, or MLAB logic cells

Each LAB inArria^{®} V , Cyclone^{®} V , Stratix^{®} IV, and
Stratix^{®} V family devices contains ten ALMs. Each ALM drives
the local, row, column, carry chain, register chain, and direct link interconnects.

You can implement the following types of functions in a single ALM:

- Two independent 4-input functions
- An independent 5-input function and an independent 3-input function
- A 5-input function and a 4-input function, if they share one input
- Two 5-input functions, if they share two inputs
- An independent 6-input function
- Two 6-input functions, if they share four inputs and share function
- Some 7-input functions

The ALM operates in adaptive combinational logic mode (normal mode), extended LUT mode (7-input function mode), arithmetic mode, and shared arithmetic mode.