*_range and *_mask should execute in blocks, check indices there
remove unnecessary index_type param to array forwarders
use correct offset for register *_mask<> ops
reorganize platform register macros