binutils Newspaper
OCTOBER 6, 2026
x86 — Proposed

x86: decode EVEX 0F38 4B by length

Modifies the EVEX decoder to correctly handle instructions with non-zero L'L, a prerequisite for ACE instructions.

This patch adjusts the EVEX decoder in binutils to properly process entries where the L’L field is non-zero. This is a necessary change to ensure that ACE instructions, which may utilize non-zero L’L values, are decoded correctly.

In Details

The EVEX prefix is an extension to VEX used in AVX-512 and later instruction sets. This patch modifies the evex_len_table and related files in opcodes/ to ensure that the disassembler correctly associates instruction byte sequences starting with 0F38 4B with their corresponding lengths, even when the L'L signaling of the EVEX prefix is set. This is a prerequisite for decoding new ACE V1 instructions that leverage these features.

For Context
EVEX
A 4-byte instruction prefix used in AVX-512 and later x86 instruction sets to encode features like vector length, rounding, and masking. It extends the capabilities of the older VEX prefix.
L'L field
A field within the EVEX prefix that typically encodes vector length information. Modifying how this field is interpreted is crucial for supporting new instruction sets that may use it differently.
ACE
AI Compute Extensions, a set of x86 instructions designed to accelerate AI and machine learning workloads.
disassembler
A program that converts machine code into assembly language source code.
opcodes
The part of an instruction that specifies the operation to be performed. In binutils, 'opcodes' refers to the component responsible for instruction decoding and encoding.
Filed Under: x86EVEXdecoderACE