+tic4x_hash_opcode_special (tic4x_inst_t **optable_special,
+ const tic4x_inst_t *inst)
+{
+ int i;
+
+ for (i = 0;i < TIC4X_SPESOP_SIZE; i++)
+ if (optable_special[i] != NULL
+ && optable_special[i]->opcode == inst->opcode)
+ {
+ /* Collision (we have it already) - overwrite. */
+ optable_special[i] = (tic4x_inst_t *) inst;
+ return;
+ }
+
+ for (i = 0; i < TIC4X_SPESOP_SIZE; i++)
+ if (optable_special[i] == NULL)
+ {
+ /* Add the new opcode. */
+ optable_special[i] = (tic4x_inst_t *) inst;
+ return;
+ }
+
+ /* This should never occur. This happens if the number of special
+ instructions exceeds TIC4X_SPESOP_SIZE. Please increase the variable
+ of this variable */
+#if TIC4X_DEBUG
+ printf ("optable_special[] is full, please increase TIC4X_SPESOP_SIZE!\n");
+#endif
+}
+
+static void
+tic4x_hash_opcode (tic4x_inst_t **optable,
+ tic4x_inst_t **optable_special,
+ const tic4x_inst_t *inst,
+ const unsigned long tic4x_oplevel)