+++ title = "Classes of phi-predicated instructions" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["2b1a"] forwardlinks = ["2b1c"] zettelid = "2b1b" +++ There are various types of instructions that are needed. Phi function : This is used to select the right value of the current register from the two alternatives that were generated by predicated instructions. Predicated memory : Memory operations need to be predicated, as these cannot have side-effects, and therefore have to stall the pipeline if the predicate is not evaluated yet. Unconditional compares : These are the operations that update the values of the predicates for the instructions, and also have to have the predicate updated immediately. Internal join : This instruction is needed to update the predicates to a join block, and performs the join of all of the input predicates. This means that if any of the control flow of those instructions was taken, that the predicate will be set to true.