This change allows the description of instruction clusters by using the new ReadCluster and SchedReadCluster classes, analogously to the ReadAdvance and SchedReadAdvance classes, respectively.
In a subsequent patch, the instruction scheduler is modified to use this information.
The motivation is to allow a target maintainer to specify which instructions pairs should be clustered together in the machine model. Thus the clustering is done as part of instruction scheduling instead of relying in a scheduling mutation and adding code to the backend to match the instructions.
I assume you added the cluster bit here, because the whole machinery for handling "ReadAdvance" can be easily extended to do add cluster dependencies? It feels that after adding the cluster bit, most related function/class names are slightly misleading, e.g. getReadAdvanceCycles now does not only get the number of cycles but also the cluster bit.