X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fbe%2Fbemachine.h;h=31922d1a6c348ccbfc99076851c4dff94f118f9e;hb=29189ce06a4930207bac3adda67d7d663dbb77f7;hp=2f6d1cf0421dc323f1cc52a6fc46000b3205dca6;hpb=41c42d0890e829ac41792a23a163dbf73d288f8e;p=libfirm diff --git a/ir/be/bemachine.h b/ir/be/bemachine.h index 2f6d1cf04..31922d1a6 100644 --- a/ir/be/bemachine.h +++ b/ir/be/bemachine.h @@ -1,16 +1,33 @@ -#ifndef _BE_MACHINE_H_ -#define _BE_MACHINE_H_ +/* + * Copyright (C) 1995-2008 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. + */ /** - * Abstract machine interface. - * @author Christian Wuerdig - * @date 23.10.2006 - * @cvs-id $Id$ + * @file + * @brief Abstract machine interface. + * @author Christian Wuerdig + * @date 23.10.2006 + * @version $Id$ */ +#ifndef FIRM_BE_BEMACHINE_H +#define FIRM_BE_BEMACHINE_H -typedef struct _be_execution_unit_type_t be_execution_unit_type_t; -typedef struct _be_execution_unit_t be_execution_unit_t; -typedef struct _be_machine_t be_machine_t; +#include "be_types.h" struct _be_execution_unit_t { be_execution_unit_type_t *tp; @@ -19,15 +36,40 @@ struct _be_execution_unit_t { struct _be_execution_unit_type_t { unsigned n_units; + unsigned ports_per_unit; const char *name; be_execution_unit_t *units; }; struct _be_machine_t { + unsigned bundle_size; + unsigned bundels_per_cycle; unsigned n_unit_types; be_execution_unit_type_t *unit_types; }; +extern be_execution_unit_t be_machine_execution_units_DUMMY[1]; + +/** + * Initialize generic dummy unit. + */ +void be_machine_init_dummy_unit(void); + +/** + * Returns the generic dummy unit. + */ +be_execution_unit_t *be_machine_get_dummy_unit(void); + +/** + * Check if given unit is the generic dummy unit. + */ +int be_machine_is_dummy_unit(const be_execution_unit_t *unit); + +/** + * Check if given unit is the generic dummy unit type. + */ +int be_machine_is_dummy_unit_type(const be_execution_unit_type_t *tp); + /** * Get the number of available unit types in the given machine. */ @@ -63,4 +105,4 @@ struct _be_machine_t { */ #define be_machine_get_execunit_type(unit) ((unit)->tp) -#endif /* _BE_MACHINE_H_ */ +#endif /* FIRM_BE_BEMACHINE_H */