From: Christoph Mallon Date: Fri, 15 Jan 2010 11:15:07 +0000 (+0000) Subject: Remove the and_table[] and simply use &. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=484f76f4b431d3302ac53e67dc4c798772594448;p=libfirm Remove the and_table[] and simply use &. [r26968] --- diff --git a/ir/tv/strcalc.c b/ir/tv/strcalc.c index 0fc6a8048..7f889a6cf 100644 --- a/ir/tv/strcalc.c +++ b/ir/tv/strcalc.c @@ -42,7 +42,7 @@ #define CLEAR_BUFFER(b) assert(b); memset(b, SC_0, calc_buffer_size) #define _val(a) ((a)-SC_0) #define _digit(a) ((a)+SC_0) -#define _bitisset(digit, pos) (and_table[_val(digit)][_val(shift_table[pos])] != SC_0) +#define _bitisset(digit, pos) ((digit & shift_table[pos]) != SC_0) #define fail_char(a, b, c, d) _fail_char((a), (b), (c), (d), __FILE__, __LINE__) @@ -86,55 +86,6 @@ static const char min_digit[4] = { SC_F, SC_E, SC_C, SC_8 }; static const char shift_table[4] = { SC_1, SC_2, SC_4, SC_8 }; -static const char and_table[16][16] = { - { SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, - SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, SC_0 }, - - { SC_0, SC_1, SC_0, SC_1, SC_0, SC_1, SC_0, SC_1, - SC_0, SC_1, SC_0, SC_1, SC_0, SC_1, SC_0, SC_1 }, - - { SC_0, SC_0, SC_2, SC_2, SC_0, SC_0, SC_2, SC_2, - SC_0, SC_0, SC_2, SC_2, SC_0, SC_0, SC_2, SC_2 }, - - { SC_0, SC_1, SC_2, SC_3, SC_0, SC_1, SC_2, SC_3, - SC_0, SC_1, SC_2, SC_3, SC_0, SC_1, SC_2, SC_3 }, - - { SC_0, SC_0, SC_0, SC_0, SC_4, SC_4, SC_4, SC_4, - SC_0, SC_0, SC_0, SC_0, SC_4, SC_4, SC_4, SC_4 }, - - { SC_0, SC_1, SC_0, SC_1, SC_4, SC_5, SC_4, SC_5, - SC_0, SC_1, SC_0, SC_1, SC_4, SC_5, SC_4, SC_5 }, - - { SC_0, SC_0, SC_2, SC_2, SC_4, SC_4, SC_6, SC_6, - SC_0, SC_0, SC_2, SC_2, SC_4, SC_4, SC_6, SC_6 }, - - { SC_0, SC_1, SC_2, SC_3, SC_4, SC_5, SC_6, SC_7, - SC_0, SC_1, SC_2, SC_3, SC_4, SC_5, SC_6, SC_7 }, - - { SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, SC_0, - SC_8, SC_8, SC_8, SC_8, SC_8, SC_8, SC_8, SC_8 }, - - { SC_0, SC_1, SC_0, SC_1, SC_0, SC_1, SC_0, SC_1, - SC_8, SC_9, SC_8, SC_9, SC_8, SC_9, SC_8, SC_9 }, - - { SC_0, SC_0, SC_2, SC_2, SC_0, SC_0, SC_2, SC_2, - SC_8, SC_8, SC_A, SC_A, SC_8, SC_8, SC_A, SC_A }, - - { SC_0, SC_1, SC_2, SC_3, SC_0, SC_1, SC_2, SC_3, - SC_8, SC_9, SC_A, SC_B, SC_8, SC_9, SC_A, SC_B }, - - { SC_0, SC_0, SC_0, SC_0, SC_4, SC_4, SC_4, SC_4, - SC_8, SC_8, SC_8, SC_8, SC_C, SC_C, SC_C, SC_C }, - - { SC_0, SC_1, SC_0, SC_1, SC_4, SC_5, SC_4, SC_5, - SC_8, SC_9, SC_8, SC_9, SC_C, SC_D, SC_C, SC_D }, - - { SC_0, SC_0, SC_2, SC_2, SC_4, SC_4, SC_6, SC_6, - SC_8, SC_8, SC_A, SC_A, SC_C, SC_C, SC_E, SC_E }, - - { SC_0, SC_1, SC_2, SC_3, SC_4, SC_5, SC_6, SC_7, - SC_8, SC_9, SC_A, SC_B, SC_C, SC_D, SC_E, SC_F } }; - static const char or_table[16][16] = { { SC_0, SC_1, SC_2, SC_3, SC_4, SC_5, SC_6, SC_7, SC_8, SC_9, SC_A, SC_B, SC_C, SC_D, SC_E, SC_F }, @@ -422,7 +373,7 @@ static void do_bitand(const char *val1, const char *val2, char *buffer) { int counter; for (counter = 0; counter> 2; - if (and_table[(int) val[nibble]][(int) shift_table[pos & 3]] != SC_0) - return 1; - return 0; + return (val[nibble] & shift_table[pos & 3]) != SC_0; } void sc_set_bit_at(void *value, unsigned pos) @@ -1319,7 +1268,7 @@ const char *sc_print(const void *value, unsigned bits, enum base_t base, int sig /* last nibble must be masked */ if (bits & 3) { mask = zex_digit[(bits & 3) - 1]; - x = and_table[_val(val[counter++])][mask]; + x = val[counter++] & mask; *(--pos) = digits[_val(x)]; } @@ -1346,7 +1295,7 @@ const char *sc_print(const void *value, unsigned bits, enum base_t base, int sig /* last nibble must be masked */ if (bits & 3) { mask = zex_digit[(bits & 3) - 1]; - x = and_table[_val(val[counter++])][mask]; + x = val[counter++] & mask; pos -= 4; p = binary_table[_val(x)]; @@ -1386,7 +1335,7 @@ const char *sc_print(const void *value, unsigned bits, enum base_t base, int sig /* last nibble must be masked */ if (bits & 3) { mask = zex_digit[(bits & 3) - 1]; - div1_res[counter] = and_table[_val(p[counter])][mask]; + div1_res[counter] = p[counter] & mask; ++counter; }