int SIM_instruction_is_sync(instruction_id_t ii);
There are currently two types of synchronizing instructions, category 1 and category 2. An instruction in category 1 can only be executed if all previous instructions in the tree has been executed (reached the Sim_Phase_Executed) non-speculatively. An instruction in category 2 has to be alone in the instruction tree to be able to execute.
Note that this is a Simics limitation and not an architectural limitation. The instructions that can execute out of order may change in future.