X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=include%2Flibfirm%2Firarch.h;h=278bdfd19158deef2b154cc07e7566ae95752269;hb=188a17803798f8d78b1c02c3b68976056bce33d9;hp=7465fdc57eef42940769a91104531312b2cec610;hpb=dbfc39c03e665d1711b6d2e82b9d956282c951bb;p=libfirm diff --git a/include/libfirm/irarch.h b/include/libfirm/irarch.h index 7465fdc57..278bdfd19 100644 --- a/include/libfirm/irarch.h +++ b/include/libfirm/irarch.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -39,7 +39,7 @@ typedef enum instr { ADD, /**< the ADD instruction */ ZERO, /**< creates a ZERO constant */ MUL, /**< the original MUL instruction */ - ROOT, /**< the ROOT value that is multiplied */ + ROOT /**< the ROOT value that is multiplied */ } insn_kind; /** @@ -59,7 +59,7 @@ typedef int (*evaluate_costs_func)(insn_kind kind, tarval *tv); struct ir_settings_arch_dep_t { /* Mul optimization */ unsigned also_use_subs : 1; /**< Use also Subs when resolving Muls to shifts */ - int maximum_shifts; /**< The maximum number of shifts that shall be inserted for a mul. */ + unsigned maximum_shifts; /**< The maximum number of shifts that shall be inserted for a mul. */ unsigned highest_shift_amount; /**< The highest shift amount you want to tolerate. Muls which would require a higher shift constant are left. */ @@ -68,7 +68,7 @@ struct ir_settings_arch_dep_t { /* Div/Mod optimization */ unsigned allow_mulhs : 1; /**< Use the Mulhs operation for division by constant */ unsigned allow_mulhu : 1; /**< Use the Mulhu operation for division by constant */ - int max_bits_for_mulh; /**< Maximum number of bits the Mulh operation can take. + unsigned max_bits_for_mulh; /**< Maximum number of bits the Mulh operation can take. Modes with higher amount of bits will use Mulh */ }; @@ -109,16 +109,8 @@ void arch_dep_init(arch_dep_params_factory_t factory); void arch_dep_set_opts(arch_dep_opts_t opts); /** - * Replace Muls with Shifts and Add/Subs. - * This function is driven by the 3 parameters: - * - also_use_subs - * - maximum_shifts - * - highest_shift_amount - * - * If irn is a Mul with a Const, the constant is inspected if it meets the - * requirements of the three variables stated above. If a Shl/Add/Sub - * sequence can be generated that meets these requirements, this expression - * is returned. In each other case irn is returned unmodified. + * Replace Muls with Lea/Shifts/Add/Subs if these + * have smaller costs than the original multiplication. * * @param irn The Firm node to inspect. * @return A replacement expression for irn.