hint
Hint
HINT #<imm>
Provides a hint to the processor (e.g., NOP, YIELD).
Details
Hint provides a processor hint via an immediate value; the processor may optimize behavior based on the hint type but is not required to act on it. Common hints include NOP (0x0), YIELD (0x1), WFE (0x2), and WFI (0x3). Condition flags (N, Z, C, V) are unaffected. The instruction executes in all exception levels without privilege requirements.
Pseudocode Operation
Example
HINT #16
Encoding
Binary Layout
11010101000000110010
CRm
op2
11111
Operands
-
imm
Hint ID
Reference (Arm A64 ISA)
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0xD503201F | HINT #<imm> | A64 | 11010101000000110010 | CRm | op2 | 11111 |
Description
Hint instruction is for the instruction set space that is reserved for architectural hint instructions.
Some encodings described here are not allocated in this revision of the architecture, and behave as NOPs. These encodings might be allocated to other hint functionality in future revisions of the architecture and therefore must not be used by software.
Operation
case op of
when SystemHintOp_YIELD
Hint_Yield();
when SystemHintOp_DGH
Hint_DGH();
when SystemHintOp_WFE
integer localtimeout = 1 << 64; // No local timeout event is generated
Hint_WFE(localtimeout, WFxType_WFE);
when SystemHintOp_WFI
integer localtimeout = 1 << 64; // No local timeout event is generated
Hint_WFI(localtimeout, WFxType_WFI);
when SystemHintOp_SEV
SendEvent();
when SystemHintOp_SEVL
SendEventLocal();
when SystemHintOp_ESB
if IsFeatureImplemented(FEAT_TME) && TSTATE.depth > 0 then
FailTransaction(TMFailure_ERR, FALSE);
SynchronizeErrors();
AArch64.ESBOperation();
if PSTATE.EL IN {EL0, EL1} && EL2Enabled() then AArch64.vESBOperation();
TakeUnmaskedSErrorInterrupts();
when SystemHintOp_PSB
ProfilingSynchronizationBarrier();
when SystemHintOp_TSB
TraceSynchronizationBarrier();
when SystemHintOp_GCSB
GCSSynchronizationBarrier();
when SystemHintOp_CHKFEAT
X[16, 64] = AArch64.ChkFeat(X[16, 64]);
when SystemHintOp_CSDB
ConsumptionOfSpeculativeDataBarrier();
when SystemHintOp_CLRBHB
Hint_CLRBHB();
when SystemHintOp_BTI
SetBTypeNext('00');
when SystemHintOp_NOP
return; // do nothing
otherwise
Unreachable();