X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftv%2Fstrcalc.h;h=9e58958377d9a00e14bc64d8f34873573a09db23;hb=dabeb60673b82e56037c95bf3abf104f2389b0b5;hp=c23307c8e1d28f80dc1e1abbdb9b0f16cf56c50b;hpb=ab1b5847c0167c06091c30c2a6ea4d1d94b7c40d;p=libfirm diff --git a/ir/tv/strcalc.h b/ir/tv/strcalc.h index c23307c8e..9e5895837 100644 --- a/ir/tv/strcalc.h +++ b/ir/tv/strcalc.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. * @@ -137,25 +137,46 @@ void sc_div(const void *value1, const void *value2, void *buffer); */ void sc_mod(const void *value1, const void *value2, void *buffer); +/** + * div_buffer = value1 / value2 + * mod_buffer = value1 % value2 + */ +void sc_divmod(const void *value1, const void *value2, void *div_buffer, void *mod_buffer); + +/** + * buffer = value1 << offset + */ +void sc_shlI(const void *val1, long shift_cnt, int bitsize, int sign, void *buffer); + /** * buffer = value1 << value2 */ -void sc_shl(const void *value1, const void *value2, int radius, int sign, void *buffer); +void sc_shl(const void *value1, const void *value2, int bitsize, int sign, void *buffer); + +/** + * buffer = value1 >>u offset + */ +void sc_shrI(const void *val1, long shift_cnt, int bitsize, int sign, void *buffer); /** * buffer = value1 >>u value2 */ -void sc_shr(const void *value1, const void *value2, int radius, int sign, void *buffer); +void sc_shr(const void *value1, const void *value2, int bitsize, int sign, void *buffer); /** * buffer = value1 >>s value2 */ -void sc_shrs(const void *value1, const void *value2, int radius, int sign, void *buffer); +void sc_shrs(const void *value1, const void *value2, int bitsize, int sign, void *buffer); + +/** + * buffer = value1 <> value2 + */ +void sc_rotl(const void *value1, const void *value2, int bitsize, int sign, void *buffer); /** - * buffer = value1 <<>> value2 + * buffer = 0 */ -void sc_rot(const void *value1, const void *value2, int radius, int sign, void *buffer); +void sc_zero(void *buffer); /* * function declarations @@ -179,6 +200,9 @@ long sc_val_to_long(const void *val); void sc_min_from_bits(unsigned int num_bits, unsigned int sign, void *buffer); void sc_max_from_bits(unsigned int num_bits, unsigned int sign, void *buffer); +/** truncates a value to lowest @p num_bits bits */ +void sc_truncate(unsigned num_bits, void *buffer); + /** * Compares val1 and val2 */