summaryrefslogtreecommitdiffstats
path: root/content/zettel/2b1b.md
blob: 1d060fa916ba16ce8ba9f3535d7b2cb100acb529 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
+++
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.