-qbool ir_block_create_store_op(ir_block*, int op, ir_value *target, ir_value *what);
-qbool ir_block_create_store(ir_block*, ir_value *target, ir_value *what);
+ir_value* ir_block_create_unary(ir_block*, const char *label, int op,
+ ir_value *operand);
+bool GMQCC_WARN ir_block_create_store_op(ir_block*, int op, ir_value *target, ir_value *what);
+bool GMQCC_WARN ir_block_create_store(ir_block*, ir_value *target, ir_value *what);
+bool GMQCC_WARN ir_block_create_storep(ir_block*, ir_value *target, ir_value *what);
+
+/* field must be of TYPE_FIELD */
+ir_value* ir_block_create_load_from_ent(ir_block*, const char *label, ir_value *ent, ir_value *field, int outype);
+
+ir_value* ir_block_create_fieldaddress(ir_block*, const char *label, ir_value *entity, ir_value *field);
+
+/* This is to create an instruction of the form
+ * <outtype>%label := opcode a, b
+ */
+ir_value* ir_block_create_general_instr(ir_block *self, const char *label,
+ int op, ir_value *a, ir_value *b, int outype);