This means that the instruction following a branch is executed independent of whether the branch is to be taken or not. This code can be rearranged only if there are no data dependencies between the branch and the add instructions. This is a general trend in the field of computer science. Let the sw do more and more to improve performance of the hw. Squashing A fancy name for branch prediction that always presumes the branch will be taken, and keeps a copy of the PC that will be needed in the case of backing out.
Condition codes A historically significant way of branching.
Condition codes were used on MANY machines before pipelining became popular. The result of an instruction set these 4 bits. Conditional branches were then based on these flags. Earlier computers had virtually every instruction set the condition codes. We program in some enhancement to part of our program.