+++ title = "Implementing hyperblock scheduling in CompCert-KVX" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["3c3h1"] forwardlinks = ["3c3h3"] zettelid = "3c3h2" +++ One way to compare hyperblock scheduling to superblock scheduling would be to implement it in CompCert-KVX, and therefore show the difference between the two types of scheduling directly. However, the main issue with this comparison is that this requires quite a lot of work to do, but might also not provide any useful comparison. Firstly, hyperblock scheduling is quite different to superblock scheduling, and if the processor does not support predicated execution natively, then it might be much more efficient to use superblock scheduling to approximate a trace schedule. However, for high-level synthesis, where we have full control over the hardware that is generated, it might be better to use hyperblock scheduling because we could have predicated expressions. Secondly, to even use hyperblock scheduling in an environment that does not have predicated execution would mean that one would have to implement reverse if-conversion. Naïve if-conversion would be easy to implement, however, to not lose any of the performance that was gained by using the scheduling, one would have to implement reverse if-conversion based on some heuristics. This means that one would be comparing the implementation of reverse if-conversion as well as the implementation of the scheduling against superblock scheduling.