summaryrefslogtreecommitdiffstats
path: root/content/zettel/1c8.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/zettel/1c8.md')
-rw-r--r--content/zettel/1c8.md29
1 files changed, 29 insertions, 0 deletions
diff --git a/content/zettel/1c8.md b/content/zettel/1c8.md
new file mode 100644
index 0000000..9997554
--- /dev/null
+++ b/content/zettel/1c8.md
@@ -0,0 +1,29 @@
++++
+title = "If-conversion"
+author = "Yann Herklotz"
+tags = []
+categories = []
+backlinks = ["2b1e", "1c7", "1c2h", "1c", "1b8"]
+forwardlinks = ["1b6", "1b8", "1c9"]
+zettelid = "1c8"
++++
+
+If-conversion is an optimisation which is very common in HLS tools. It
+transforms basic blocks ([\#1b6]) that do not contain any loops, into
+single hyperblocks ([\#1b8]), which use predicated instructions instead.
+However, to support such an optimisation in a verified high-level
+synthesis tool, the verification algorithm needs to support SAT checking
+of the predicates. It is the conversion that introduces predicated
+instructions which can make use of the hyperblocks. It converts
+conditional statements into predicated instructions. This transformation
+has a few limitations on the kind of conditional statements that it can
+translate. First, only conditional statements without loops can be
+translated, therefore, one must identify cycles in the control-flow
+before performing the if-conversion. Secondly, if-conversion will not
+always result in more efficient code, so it should not be applied to any
+conditional statements. Instead, it is best applied to conditional
+statements where each branch will take a similar amount of time to
+execute.
+
+ [\#1b6]: /zettel/1b6
+ [\#1b8]: /zettel/1b8