You cannot perform a cross of items that are in different cover groups, because it's ambiguous about when the item samples are valid, if the groups have different sampling events.
I would recommend that you simplify your plans to only use one sampling event, thus merging everything into one group. If you only want to define the items in order to cross them, them use the attribute "no_collect" to provent a hit counter being created for the raw item.
To cross between registers, you have a couple of options:
1. Put the coverage into the enclosing vr_ad_reg_file so it can make accesses into the int_index and int_index_mask register fields.
You'd need to add a coverage event into the reg file and trigger it off the register's access event.
2. Put the coverage into just one of the registers (e.e. int_index) , and also include a pointer to the other register (int_index_mask).
This assumes that only one of the registers would besampling the coverag, so the reg_file approach is probably better.