Different UBO reads have different shift requirements.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
unsigned mir_use_count(compiler_context *ctx, unsigned value);
bool mir_is_written_before(compiler_context *ctx, midgard_instruction *ins, unsigned node);
unsigned mir_mask_of_read_components(midgard_instruction *ins, unsigned node);
+unsigned mir_ubo_shift(midgard_load_store_op op);
/* MIR printing */
return mask;
}
+
+unsigned
+mir_ubo_shift(midgard_load_store_op op)
+{
+ switch (op) {
+ case midgard_op_ld_ubo_char:
+ return 0;
+ case midgard_op_ld_ubo_char2:
+ return 1;
+ case midgard_op_ld_ubo_char4:
+ return 2;
+ case midgard_op_ld_ubo_short4:
+ return 3;
+ case midgard_op_ld_ubo_int4:
+ return 4;
+ default:
+ unreachable("Invalid op");
+ }
+}
+
+