X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbemachine.h;h=f106276d645d08d5ba4cb412dec2b692fd73b9ad;hb=7142e46b9e442cacddec26387d8735444fb4421b;hp=64e5833233d813b31a9eaf7b2ca5e968c4b9db42;hpb=101dfcddae2b9cc9b1724faa34fecb14472f46c9;p=libfirm diff --git a/ir/be/bemachine.h b/ir/be/bemachine.h index 64e583323..f106276d6 100644 --- a/ir/be/bemachine.h +++ b/ir/be/bemachine.h @@ -1,36 +1,75 @@ -#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 { +struct be_execution_unit_t { be_execution_unit_type_t *tp; const char *name; }; -struct _be_execution_unit_type_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 { +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. */ @@ -66,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 */