diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-06-26 11:54:58 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-06-26 11:54:58 -0700 |
commit | 241abac138d2b3bd184cbc9d5bf53cde3857a7a4 (patch) | |
tree | 50e18f41c302adc6a4d490cad98365f60c9465c1 /gcc/config/rs6000/rs6000.c | |
parent | e7e782527af100a7802b6903b15524fac6cd5da2 (diff) | |
parent | 24fe62c79a89d579257790e268b0b9ea87940a89 (diff) | |
download | gcc-hjl/x32/gcc-4_6-branch+mx32.tar.gz |
Merge branch 'hjl/x32/gcc-4_6-branch' into hjl/x32/gcc-4_6-branch+mx32hjl/x32/gcc-4_6-branch+mx32
Diffstat (limited to 'gcc/config/rs6000/rs6000.c')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5c101a51aff..36aba430eb9 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -15822,7 +15822,6 @@ void print_operand (FILE *file, rtx x, int code) { int i; - HOST_WIDE_INT val; unsigned HOST_WIDE_INT uval; switch (code) @@ -16263,34 +16262,17 @@ print_operand (FILE *file, rtx x, int code) case 'W': /* MB value for a PowerPC64 rldic operand. */ - val = (GET_CODE (x) == CONST_INT - ? INTVAL (x) : CONST_DOUBLE_HIGH (x)); - - if (val < 0) - i = -1; - else - for (i = 0; i < HOST_BITS_PER_WIDE_INT; i++) - if ((val <<= 1) < 0) - break; + i = clz_hwi (GET_CODE (x) == CONST_INT + ? INTVAL (x) : CONST_DOUBLE_HIGH (x)); #if HOST_BITS_PER_WIDE_INT == 32 - if (GET_CODE (x) == CONST_INT && i >= 0) + if (GET_CODE (x) == CONST_INT && i > 0) i += 32; /* zero-extend high-part was all 0's */ else if (GET_CODE (x) == CONST_DOUBLE && i == 32) - { - val = CONST_DOUBLE_LOW (x); - - gcc_assert (val); - if (val < 0) - --i; - else - for ( ; i < 64; i++) - if ((val <<= 1) < 0) - break; - } + i = clz_hwi (CONST_DOUBLE_LOW (x)) + 32; #endif - fprintf (file, "%d", i + 1); + fprintf (file, "%d", i); return; case 'x': |