5
Which Custom Instructions are
Now Enabled?
Arm introduces 2 × 3 classes of instruction extension in the coprocessor instruction space:
Three classes operate on the general-purpose register file, including the
condition code flags APSR_nzcv.
Three classes operate on the floating-point/Single Instruction Multiple
Data (SIMD) register file only.
The three classes are defined by the following instruction patterns:
The destination register or the destination register pair of an instruction might be read,
as well as written (non-accumulator and accumulator variants).
The operation code can be split between a true operation code in the custom datapath
and an immediate value used in the custom datapath.
Immediate consequences of the above are:
No operations on the floating-point registers can set condition codes.
There are no operations using registers from both register files.
Operations on the general-purpose register file operate on 32-bit registers,
or a dual-register consisting of a 64-bit value constructed from an even-numbered,
general-purpose register and its immediately following odd pair.
<operation code> <destination register>
<operation code> <destination register>, <source register>
<operation code> <destination register>, <source register 1>, <source register 2>
Table 1. General-purpose
registers and NZCV ags
Instrucon Assembly Inputs CPU Imm Outputs
CX1 {A} CX1{A} Pn, Rd, #imm Immediate and 1x 32-bit GPR/
NZCV {same as output}
M33,
M55
13b 1x 32-bit GPR or
NZCV
CX2 {A} CX2{A} Pn, Rd, Rn, #imm Immediate and 2x 32-bit GPR/
NZCV {one same as output}
M33,
M55
9b 1x 32-bit GPR or
NZCV
CX3 {A} CX3{A} Pn, Rd, Rn, Rm, #imm Immediate and 3x 32-bit GPR/
NZCV {one same as output}
M33,
M55
6b 1x 32-bit GPR or
NZCV
CX1D {A} CX1D{A} Pn, Rd, Rd+1, #imm Immediate and 1x 32-bit GPR/
NZCV {two same as output}
M33,
M55
13b 2x 32-bit GPR
CX2D {A} CX2D{A} Pn, Rd, Rd+1, Rn,
#imm
Immediate and 2x 32-bit GPR/
NZCV {two same as output}
M33,
M55
9b 2x 32-bit GPR
CX3D {A} CX3D{A} Pn, Rd, Rd+1, Rn,
Rm, #imm
Immediate and 3x 32-bit GPR/
NZCV {two same as output}
M33,
M55
6b 2x 32-bit GPR