compiler->loop_shift = loop_shift;
}
+ switch (orc_program_get_max_accumulator_size (compiler->program)) {
+ case 0:
+ loop_shift = 4;
+ break;
+ case 1:
+ loop_shift = 3;
+ break;
+ case 2:
+ loop_shift = 2;
+ break;
+ case 4:
+ loop_shift = 1;
+ break;
+ case 8:
+ loop_shift = 0;
+ break;
+ default:
+ ORC_ERROR("unhandled max var size %d",
+ orc_program_get_max_var_size (compiler->program));
+ break;
+ }
+ if (loop_shift < compiler->loop_shift) {
+ compiler->loop_shift = loop_shift;
+ }
+
compiler->need_mask_regs = TRUE;
}
return max;
}
+/**
+ * orc_program_get_max_accumulator_size:
+ * @program: a pointer to an OrcProgram structure
+ *
+ * Returns the size of the largest array used in the program.
+ *
+ * Returns: the number of bytes
+ */
+int
+orc_program_get_max_accumulator_size (OrcProgram *program)
+{
+ int i;
+ int max;
+
+ max = 0;
+ for(i=0;i<ORC_N_VARIABLES;i++){
+ if (program->vars[i].size) {
+ if (program->vars[i].vartype == ORC_VAR_TYPE_ACCUMULATOR) {
+ max = MAX(max, program->vars[i].size);
+ }
+ }
+ }
+
+ return max;
+}
+
OrcTarget *orc_target_get_by_name (const char *target_name);
int orc_program_get_max_var_size (OrcProgram *program);
int orc_program_get_max_array_size (OrcProgram *program);
+int orc_program_get_max_accumulator_size (OrcProgram *program);
#endif