X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Ftv%2Fstrcalc.c;h=6a6e61231bc3e69b54a120c980697a6b8b3cfb37;hb=f8ead9acbe48af00885e64a6f2f895d1b6cae434;hp=c4dd8639cc355fdd4bf7f6f03223196cf61d724c;hpb=f8cc15664f571aa7ef89d6f6bc8d5bd2b8ca7d53;p=libfirm diff --git a/ir/tv/strcalc.c b/ir/tv/strcalc.c index c4dd8639c..6a6e61231 100644 --- a/ir/tv/strcalc.c +++ b/ir/tv/strcalc.c @@ -1566,6 +1566,20 @@ void sc_shr(const void *val1, const void *val2, int bitsize, int sign, void *buf sc_shrI(val1, shift_cnt, bitsize, sign, buffer); } +void sc_shrsI(const void *val1, long shift_cnt, int bitsize, int sign, void *buffer) +{ + carry_flag = 0; + + DEBUGPRINTF_COMPUTATION(("%s >>s %ld ", sc_print_hex(value1), shift_cnt)); + do_shr((const char*) val1, calc_buffer, shift_cnt, bitsize, sign, 1); + + DEBUGPRINTF_COMPUTATION(("-> %s\n", sc_print_hex(calc_buffer))); + + if ((buffer != NULL) && (buffer != calc_buffer)) { + memmove(buffer, calc_buffer, calc_buffer_size); + } +} + void sc_shrs(const void *val1, const void *val2, int bitsize, int sign, void *buffer) { long offset = sc_val_to_long(val2);