Depending on the casted operand, the generated values can be ICB, IDXTEMP or GROUPSHAREDMEM. The cast decoding code is entirely moved to the second pass, so that we avoid abusing registers to temporarily store other data.