* when VL is set to greater than MAXVL (and truncated), CR0.GT is set to 1 * when VL is non-zero, CR0.LT is set to 1 * when VL is set to zero, CR0.EQ is set to 1 in that order because MAXVL might be zero. overflow (CR0.SO) should be fine this allows detection of some loop conditions that are useful. for example when detecting that VL is set to a last value (between 0 and MAXVL) you know that a loop is terminating, so sv.bc has no need to branch back. this *without* using CTR.