Handshaking flow control
Handshaking ensures that one part of your design is ready and able to accept data from another part of your design.
Loop controls control the data flow through the hardware generated for loops in your code, including any loop carried dependencies.
Branch controls implement conditional statements in your code. Branch control can include parallelizing parts of conditional statements to improve performance.