<commit_before>/*
 * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
 *
 * This file is part of libFirm.
 *
 * This file may be distributed and/or modified under the terms of the
 * GNU General Public License version 2 as published by the Free Software
 * Foundation and appearing in the file LICENSE.GPL included in the
 * packaging of this file.
 *
 * Licensees holding valid libFirm Professional Edition licenses may use
 * this file in accordance with the libFirm Commercial License.
 * Agreement provided with the Software.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE.
 */

/**
 * @file
 * @brief   datastructures and declarations for the mips backend
 * @author  <NAME>, Mehdi
 * @version $Id$
 */
#ifndef FIRM_BE_MIPS_BEARCH_MIPS_T_H
#define FIRM_BE_MIPS_BEARCH_MIPS_T_H

#include "debug.h"
#include "irgopt.h"
#include "bearch_mips.h"
#include "mips_nodes_attr.h"
#include "../be.h"
#include "../beemitter.h"
#include "set.h"

typedef struct mips_isa_t            mips_isa_t;
typedef struct mips_irn_ops_t        mips_irn_ops_t;
typedef struct mips_transform_env_t  mips_transform_env_t;

struct mips_code_gen_t {
	const arch_code_generator_if_t *impl;           /**< implementation */
	ir_graph                       *irg;            /**< current irg */
	const arch_env_t               *arch_env;       /**< the arch env */
	set                            *reg_set;        /**< set to memorize registers for FIRM nodes (e.g. phi) */
	int                             emit_decls;     /**< flag indicating if decls were already emitted */
	mips_isa_t                     *isa;            /**< the isa instance */
	const be_irg_t                 *birg;           /**< The be-irg (contains additional information about the irg) */
	ir_node                        **bl_list;		/**< The block schedule list. */
	survive_dce_t				   *bl_list_sdce;	/**< survive dce environment for the block schedule list */
	DEBUG_ONLY(firm_dbg_module_t   *mod;)           /**< debugging module */
};

struct mips_isa_t {
	arch_isa_t             arch_isa;    /**< must be derived from arch_isa_t */

	be_emit_env_t          emit;
};

struct mips_irn_ops_t {
	const arch_irn_ops_if_t *impl;
	mips_code_gen_t         *cg;
};


/**
 * this is a struct to minimize the number of parameters
 * for transformation walker
 */
struct mips_transform_env_t {
	dbg_info          *dbg;      /**< The node debug info */<commit_msg>doxygen docu added<commit_after>/*
 * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
 *
 * This file is part of libFirm.
 *
 * This file may be distributed and/or modified under the terms of the
 * GNU General Public License version 2 as published by the Free Software
 * Foundation and appearing in the file LICENSE.GPL included in the
 * packaging of this file.
 *
 * Licensees holding valid libFirm Professional Edition licenses may use
 * this file in accordance with the libFirm Commercial License.
 * Agreement provided with the Software.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE.
 */

/**
 * @file
 * @brief   datastructures and declarations for the mips backend
 * @author  <NAME>, Mehdi
 * @version $Id$
 */
#ifndef FIRM_BE_MIPS_BEARCH_MIPS_T_H
#define FIRM_BE_MIPS_BEARCH_MIPS_T_H

#include "debug.h"
#include "irgopt.h"
#include "bearch_mips.h"
#include "mips_nodes_attr.h"
#include "../be.h"
#include "../beemitter.h"
#include "set.h"

typedef struct mips_isa_t            mips_isa_t;
typedef struct mips_irn_ops_t        mips_irn_ops_t;
typedef struct mips_transform_env_t  mips_transform_env_t;

struct mips_code_gen_t {
	const arch_code_generator_if_t *impl;           /**< implementation */
	ir_graph                       *irg;            /**< current irg */
	const arch_env_t               *arch_env;       /**< the arch env */
	set                            *reg_set;        /**< set to memorize registers for FIRM nodes (e.g. phi) */
	int                             emit_decls;     /**< flag indicating if decls were already emitted */
	mips_isa_t                     *isa;            /**< the isa instance */
	const be_irg_t                 *birg;           /**< The be-irg (contains additional information about the irg) */
	ir_node                        **bl_list;		/**< The block schedule list. */
	survive_dce_t				   *bl_list_sdce;	/**< survive dce environment for the block schedule list */
	DEBUG_ONLY(firm_dbg_module_t   *mod;)           /**< debugging module */
};

struct mips_isa_t {
	arch_isa_t             arch_isa;    /**< must be derived from arch_isa_t */
	be_emit_env_t          emit;        /**< An emitter environment for the GAS emitter. */
};

struct mips_irn_ops_t {
	const arch_irn_ops_if_t *impl;
	mips_code_gen_t         *cg;
};


/**
 * this is a struct to minimize the number of parameters
 * for transformation walker
 */
struct mips_transform_env_t {
	dbg_info          *dbg;      /**< The node debug info */
{'fraction_non_alphanumeric': 0.087405100253066, 'fraction_numerical': 0.0035039906560249173, 'mean_word_length': 2.5361321403991743, 'pattern_counts': {'":': 0, '<': 30, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2820412', 'n_tokens_mistral': 1654, 'n_tokens_neox': 1587, 'n_words': 521}