diff mbox

[ARM] Make CLZ_DEFINED_VALUE_AT_ZERO and CTZ_DEFINED_VALUE_AT_ZERO return 2.

Message ID 54B540B1.80800@arm.com
State New
Headers show

Commit Message

Renlin Li Jan. 13, 2015, 3:58 p.m. UTC
Hi all,

This patch update CLZ_DEFINED_VALUE_AT_ZERO and 
CTZ_DEFINED_VALUE_AT_ZERO to make them return 2 in
arm back-end.

Here are the explanations from GCC documentation:

CLZ_DEFINED_VALUE_AT_ZERO (mode, value)
CTZ_DEFINED_VALUE_AT_ZERO (mode, value)
A C expression that indicates whether the architecture defines a value
for @code{clz} or @code{ctz} with a zero operand.
A result of 0 indicates the value is undefined.
If the value is defined for only the RTL expression, the macro should
evaluate to 1; if the value applies also to the corresponding optab
entry (which is normally the case if it expands directly into
the corresponding RTL), then the macro should evaluate to 2.
In the cases where the value is defined, @var{value} should be set to
this value.

arm-none-eabi has been test on the model, no new issue.
Okay for trunk?

gcc/ChangeLog:

     2015-01-13 Renlin Li <renlin.li@arm.com>

     * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): Return 2.
     (CTZ_DEFINED_VALUE_AT_ZERO): Ditto.

Comments

Richard Earnshaw Jan. 13, 2015, 3:59 p.m. UTC | #1
On 13/01/15 15:58, Renlin Li wrote:
> Hi all,
> 
> This patch update CLZ_DEFINED_VALUE_AT_ZERO and 
> CTZ_DEFINED_VALUE_AT_ZERO to make them return 2 in
> arm back-end.
> 
> Here are the explanations from GCC documentation:
> 
> CLZ_DEFINED_VALUE_AT_ZERO (mode, value)
> CTZ_DEFINED_VALUE_AT_ZERO (mode, value)
> A C expression that indicates whether the architecture defines a value
> for @code{clz} or @code{ctz} with a zero operand.
> A result of 0 indicates the value is undefined.
> If the value is defined for only the RTL expression, the macro should
> evaluate to 1; if the value applies also to the corresponding optab
> entry (which is normally the case if it expands directly into
> the corresponding RTL), then the macro should evaluate to 2.
> In the cases where the value is defined, @var{value} should be set to
> this value.
> 
> arm-none-eabi has been test on the model, no new issue.
> Okay for trunk?
> 
> gcc/ChangeLog:
> 
>      2015-01-13 Renlin Li <renlin.li@arm.com>
> 
>      * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): Return 2.
>      (CTZ_DEFINED_VALUE_AT_ZERO): Ditto.
> 
> 

OK.

R.
diff mbox

Patch

diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index d850982..83c9c33 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -2145,9 +2145,9 @@  extern int making_const_table;
    : reverse_condition (code))
 
 #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \
-  ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE))
+  ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE), 2)
 #define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \
-  ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE))
+  ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE), 2)
 
 #define CC_STATUS_INIT \
   do { cfun->machine->thumb1_cc_insn = NULL_RTX; } while (0)