Expand description
Constraints that affect program generation
Defines specific configurations that are not allowed, causing programs or program fragments to be rejected during the generation process.
The motivation for these constraints are in producing a good quality hash function by avoiding hazards that affect timing or hash mixing. However, they also form an integral part of the program generation model. Generating correct HashX output depends on applying exactly the right constraints.
Modules§
- model 🔒
- The
model
attempts to document what the HashX constraints are, separate from the process of implementing those constraints.
Structs§
- DstRegister
Checker 🔒 - State information returned by
Validator::dst_registers_allowed
- Register
Writer 🔒Map - Map each
RegisterId
to anRegisterWriter
- Validator 🔒
- Stateful program constraint checker
Functions§
- opcode_
pair_ 🔒allowed - Should
proposed
be allowed as an opcode selector output immediately following an output ofprevious
? - src_
registers_ 🔒allowed - Figure out the allowed register set for an operation, given what’s available in the schedule.