RE: [PATCH 1/5] [ARC] Update sleep builtin.

2018-04-23 Thread Claudiu Zissulescu
Committed. Thank you for your review,
Claudiu

From: Andrew Burgess [andrew.burg...@embecosm.com]
Sent: Wednesday, April 18, 2018 7:51 PM
To: Claudiu Zissulescu
Cc: gcc-patches@gcc.gnu.org; francois.bed...@synopsys.com
Subject: Re: [PATCH 1/5] [ARC] Update sleep builtin.

* Claudiu Zissulescu  [2018-04-06 11:00:10 
+0200]:

> From: claziss 
>
> gcc/
> 2017-05-09  Claudiu Zissulescu  
>
>   * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
>   * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
>   and short u6 immediate.
>   (check_if_valid_sleep_operand): Remove.
>   * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
> ---
>  gcc/config/arc/arc-protos.h |  1 -
>  gcc/config/arc/arc.c| 26 --
>  gcc/config/arc/arc.md   |  4 ++--
>  3 files changed, 2 insertions(+), 29 deletions(-)

Looks good.

Thanks,
Andrew

>
> diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h
> index 75cfeda..0ba6871 100644
> --- a/gcc/config/arc/arc-protos.h
> +++ b/gcc/config/arc/arc-protos.h
> @@ -59,7 +59,6 @@ void arc_asm_output_aligned_decl_local (FILE *, tree, const 
> char *,
>   unsigned HOST_WIDE_INT);
>  extern rtx arc_return_addr_rtx (int , rtx);
>  extern bool check_if_valid_regno_const (rtx *, int);
> -extern bool check_if_valid_sleep_operand (rtx *, int);
>  extern bool arc_legitimate_constant_p (machine_mode, rtx);
>  extern bool arc_legitimate_pic_addr_p (rtx);
>  extern bool arc_raw_symbolic_reference_mentioned_p (rtx, bool);
> diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
> index 3564696..47d3ba4 100644
> --- a/gcc/config/arc/arc.c
> +++ b/gcc/config/arc/arc.c
> @@ -6573,11 +6573,6 @@ arc_expand_builtin (tree exp,
>fold (arg0);
>op0 = expand_expr (arg0, NULL_RTX, VOIDmode, EXPAND_NORMAL);
>
> -  if  (!CONST_INT_P (op0) || !satisfies_constraint_L (op0))
> - {
> -   error ("builtin operand should be an unsigned 6-bit value");
> -   return NULL_RTX;
> - }
>gcc_assert (icode != 0);
>emit_insn (GEN_FCN (icode) (op0));
>return NULL_RTX;
> @@ -6925,27 +6920,6 @@ check_if_valid_regno_const (rtx *operands, int opno)
>return false;
>  }
>
> -/* Check that after all the constant folding, whether the operand to
> -   __builtin_arc_sleep is an unsigned int of 6 bits.  If not, flag an error. 
>  */
> -
> -bool
> -check_if_valid_sleep_operand (rtx *operands, int opno)
> -{
> -  switch (GET_CODE (operands[opno]))
> -{
> -case CONST :
> -case CONST_INT :
> - if( UNSIGNED_INT6 (INTVAL (operands[opno])))
> - return true;
> -/* FALLTHRU */
> -default:
> - fatal_error (input_location,
> -  "operand for sleep instruction must be an unsigned 6 bit 
> compile-time constant");
> - break;
> -}
> -  return false;
> -}
> -
>  /* Return true if it is ok to make a tail-call to DECL.  */
>
>  static bool
> diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
> index fb34329..2ec2b48 100644
> --- a/gcc/config/arc/arc.md
> +++ b/gcc/config/arc/arc.md
> @@ -4794,9 +4794,9 @@ archs4x, archs4xd, archs4xd_slow"
>
>
>  (define_insn "sleep"
> -  [(unspec_volatile [(match_operand:SI 0 "immediate_operand" "L")]
> +  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand" "Lr")]
>  VUNSPEC_ARC_SLEEP)]
> -  "check_if_valid_sleep_operand(operands,0)"
> +  ""
>"sleep %0"
>[(set_attr "length" "4")
>(set_attr "type" "misc")])
> --
> 1.9.1
>


Re: [PATCH 1/5] [ARC] Update sleep builtin.

2018-04-18 Thread Andrew Burgess
* Claudiu Zissulescu  [2018-04-06 11:00:10 
+0200]:

> From: claziss 
> 
> gcc/
> 2017-05-09  Claudiu Zissulescu  
> 
>   * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
>   * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
>   and short u6 immediate.
>   (check_if_valid_sleep_operand): Remove.
>   * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
> ---
>  gcc/config/arc/arc-protos.h |  1 -
>  gcc/config/arc/arc.c| 26 --
>  gcc/config/arc/arc.md   |  4 ++--
>  3 files changed, 2 insertions(+), 29 deletions(-)

Looks good.

Thanks,
Andrew

> 
> diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h
> index 75cfeda..0ba6871 100644
> --- a/gcc/config/arc/arc-protos.h
> +++ b/gcc/config/arc/arc-protos.h
> @@ -59,7 +59,6 @@ void arc_asm_output_aligned_decl_local (FILE *, tree, const 
> char *,
>   unsigned HOST_WIDE_INT);
>  extern rtx arc_return_addr_rtx (int , rtx);
>  extern bool check_if_valid_regno_const (rtx *, int);
> -extern bool check_if_valid_sleep_operand (rtx *, int);
>  extern bool arc_legitimate_constant_p (machine_mode, rtx);
>  extern bool arc_legitimate_pic_addr_p (rtx);
>  extern bool arc_raw_symbolic_reference_mentioned_p (rtx, bool);
> diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
> index 3564696..47d3ba4 100644
> --- a/gcc/config/arc/arc.c
> +++ b/gcc/config/arc/arc.c
> @@ -6573,11 +6573,6 @@ arc_expand_builtin (tree exp,
>fold (arg0);
>op0 = expand_expr (arg0, NULL_RTX, VOIDmode, EXPAND_NORMAL);
>  
> -  if  (!CONST_INT_P (op0) || !satisfies_constraint_L (op0))
> - {
> -   error ("builtin operand should be an unsigned 6-bit value");
> -   return NULL_RTX;
> - }
>gcc_assert (icode != 0);
>emit_insn (GEN_FCN (icode) (op0));
>return NULL_RTX;
> @@ -6925,27 +6920,6 @@ check_if_valid_regno_const (rtx *operands, int opno)
>return false;
>  }
>  
> -/* Check that after all the constant folding, whether the operand to
> -   __builtin_arc_sleep is an unsigned int of 6 bits.  If not, flag an error. 
>  */
> -
> -bool
> -check_if_valid_sleep_operand (rtx *operands, int opno)
> -{
> -  switch (GET_CODE (operands[opno]))
> -{
> -case CONST :
> -case CONST_INT :
> - if( UNSIGNED_INT6 (INTVAL (operands[opno])))
> - return true;
> -/* FALLTHRU */
> -default:
> - fatal_error (input_location,
> -  "operand for sleep instruction must be an unsigned 6 bit 
> compile-time constant");
> - break;
> -}
> -  return false;
> -}
> -
>  /* Return true if it is ok to make a tail-call to DECL.  */
>  
>  static bool
> diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
> index fb34329..2ec2b48 100644
> --- a/gcc/config/arc/arc.md
> +++ b/gcc/config/arc/arc.md
> @@ -4794,9 +4794,9 @@ archs4x, archs4xd, archs4xd_slow"
>  
>  
>  (define_insn "sleep"
> -  [(unspec_volatile [(match_operand:SI 0 "immediate_operand" "L")]
> +  [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand" "Lr")]
>  VUNSPEC_ARC_SLEEP)]
> -  "check_if_valid_sleep_operand(operands,0)"
> +  ""
>"sleep %0"
>[(set_attr "length" "4")
>(set_attr "type" "misc")])
> -- 
> 1.9.1
>