Instruction
BSRMOVH
ACE instruction that moves the upper 512 bits of the block scale register to or from a ZMM register or memory.
- Extensions
- Forms
- 4 (4 EVEX)
- Data
- Intel XED v2026.08.23
BSRMOVH moves the upper half of ACE’s block scale register,
bits 1023:512, which hold the A scales for the rows of an outer product,
to or from a ZMM register or 64 bytes of memory. W1 is the write form,
bsrmovh bsr0, zmm1/m512, and leaves the B scales in the lower half as
they were; W0 the read form, bsrmovh zmm1/m512, bsr0.
BSRMOVL does the same for the lower half, and
BSRMOVF, whose page shows which byte scales which
element, loads both halves at once.
One side at a time
An outer product combines a row scale and a column scale for each element of the tile. When a loop moves on to new rows of A while the columns of B stay, only the A scales change, and BSRMOVH replaces them without reloading B’s. The read forms are the only way to see the scales apart from saving the register: XSAVE stores it as the SCALEDATA component, XCR0 bit 20, 128 bytes.
Encoding and checks
EVEX opcode 95h in map 6 with the F2 prefix, 512 bits only; BSRMOVL has
F3, BSRMOVF no prefix. ModRM.reg must be 000 for bsr0 and EVEX.vvvv
1111b, with no mask, broadcast or zeroing, under exception class ACE-E3.
It needs 64-bit mode, the tile, scale and AVX-512 state in XCR0 and a
tile configuration with palette 2, or raises #UD; CR0.TS or bit 18 of
IA32_XFD raises #NM.
In our builds
GNU as 2.44 and Clang 23 reject the mnemonic, and neither compiler has
ACE’s intrinsics _bsrmovh(a_scales) and _bsrmovh_r(), for the two
directions. No processor at hand has ACE, so this site’s recorded cases
include none of BSRMOVH.
Forms
| Instruction | Encoding | Requires |
|---|---|---|
BSRMOVH BSR0, zmm 64-bit mode only
BSRMOVH_BSR0_ZMMu64 | EVEX.512.F2.MAP6.W1 95 /0 | ACE v1 |
BSRMOVH BSR0, m512 64-bit mode only
BSRMOVH_BSR0_MEMu64 | EVEX.512.F2.MAP6.W1 95 /0 | ACE v1 |
BSRMOVH zmm, BSR0 64-bit mode only
BSRMOVH_ZMMu64_BSR0 | EVEX.512.F2.MAP6.W0 95 /0 | ACE v1 |
BSRMOVH m512, BSR0 64-bit mode only
BSRMOVH_MEMu64_BSR0 | EVEX.512.F2.MAP6.W0 95 /0 | ACE v1 |
Operation
What the forms do, in pseudocode that our tests run against results recorded on real processors. How to read.
BSRMOVH BSR0, zmm/m512 64-bit mode onlyon = xcr0 if cr4 >> 18 & 1 else 0 # XCR0, where CR4.OSXSAVE is set
if on >> 17 & 0xB != 0xB: # TILECFG, TILEDATA, SCALEDATA
fault(UD)
if on & 0xE6 != 0xE6: # AVX-512's state, AVX's and
fault(UD) # SSE's
if palette != 2: # ACE's palette alone
fault(UD)
if cr0 >> 3 & 1 or xfd >> 18 & 1: # CR0.TS, or the OS keeps the
fault(NM) # tiles from this thread
bsr0.write(src2 << 512 | low(bsr0, 512))Not run on a processor: none of these processors has ACE.
BSRMOVH zmm/m512, BSR0 64-bit mode onlyon = xcr0 if cr4 >> 18 & 1 else 0 # XCR0, where CR4.OSXSAVE is set
if on >> 17 & 0xB != 0xB: # TILECFG, TILEDATA, SCALEDATA
fault(UD)
if on & 0xE6 != 0xE6: # AVX-512's state, AVX's and
fault(UD) # SSE's
if palette != 2: # ACE's palette alone
fault(UD)
if cr0 >> 3 & 1 or xfd >> 18 & 1: # CR0.TS, or the OS keeps the
fault(NM) # tiles from this thread
dest.write(bsr0 >> 512) # the A scales
Not run on a processor: none of these processors has ACE.
Operands
| Operand | Kind | Action |
|---|---|---|
BSRMOVH BSR0, zmm/m512 64-bit mode only | ||
BSR0 | explicit | write |
zmm/m512 | explicit | read |
BSRMOVH zmm/m512, BSR0 64-bit mode only | ||
zmm/m512 | explicit | write |
BSR0 | explicit | read |
Flags
None: XED records no flag that the forms test or change.
Exceptions
The exception class is XED's name for the set of exception conditions that a form follows. How to read.
- All forms
ACE-E3
Attributes
What else XED records about the forms. How to read.
- All forms
- may abort a TSX transaction
CPUID and processors
Each form belongs to an XED ISA set. A form can be used when the processor reports every CPUID bit of one of its ISA set's alternatives.
| ISA set | CPUID | Processors |
|---|---|---|
ACE_1 | ACE v1 | None in XED’s chip model, which lists these instructions only under its placeholder for future processors. |
More ACE instructions
Sources
- Intel XED v2026.08.23 (commit
0bcb6237345c): forms, encodings, operands, flags, exception classes, attributes, ISA sets, CPUID bits and chip model. - x86 Ecosystem Advisory Group: AI Compute Extensions (ACE) Specification, version 1.16.2 (July 2026)
The tables are derived from Intel XED, Copyright Intel Corporation, licensed under the Apache License 2.0; x86-64.net converted and reformatted them. The text is our own.