CSDB
Consumption of Speculative Data Barrier
Consumption of Speculative Data Barrier is a memory barrier that controls speculative execution and data value prediction.
No instruction other than branch instructions and instructions that write to the PC appearing in program order after the CSDB can be speculatively executed using the results of any:
Data value predictions of any instructions.
PSTATE.{N,Z,C,V} predictions of any instructions other than conditional branch instructions and conditional instructions that write to the PC appearing in program order before the CSDB that have not been architecturally resolved.
For purposes of the definition of CSDB, PSTATE.{N,Z,C,V} is not considered a data value. This definition permits:
Control flow speculation before and after the CSDB.
Speculative execution of conditional data processing instructions after the CSDB, unless they use the results of data value or PSTATE.{N,Z,C,V} predictions of instructions appearing in program order before the CSDB that have not been architecturally resolved.
For more information about the constrained unpredictable behavior, see Architectural Constraints on UNPREDICTABLE behaviors.
It has encodings from the following instruction sets:
A32 (
A1
)
and
T32 (
T1
)
.
!= 1111
0
0
1
1
0
0
1
0
0
0
0
0
(1)
(1)
(1)
(1)
(0)
(0)
(0)
(0)
0
0
0
1
0
1
0
0
CSDB{<c>}{<q>}
if cond != '1110' then UNPREDICTABLE; // CSDB must be encoded with AL condition
cond != '1110'
1
1
1
1
0
0
1
1
1
0
1
0
(1)
(1)
(1)
(1)
1
0
(0)
0
(0)
0
0
0
0
0
0
1
0
1
0
0
CSDB{<c>}{<q>}
if InITBlock() then UNPREDICTABLE;
InITBlock()
<c>
See Standard assembler syntax fields.
<q>
See Standard assembler syntax fields.
if ConditionPassed() then
EncodingSpecificOperations();
ConsumptionOfSpeculativeDataBarrier();