Re: [68/77] Use scalar_mode for is_int_mode/is_float_mode pairs

2017-08-24 Thread Jeff Law
On 07/13/2017 03:02 AM, Richard Sandiford wrote:
> This patch uses scalar_mode for code that operates only on MODE_INT
> and MODE_FLOAT.
> 
> 2017-07-13  Richard Sandiford  
>   Alan Hayward  
>   David Sherwood  
> 
> gcc/
>   * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
>   and scalar_mode.
>   * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.
OK.
jeff


[68/77] Use scalar_mode for is_int_mode/is_float_mode pairs

2017-07-13 Thread Richard Sandiford
This patch uses scalar_mode for code that operates only on MODE_INT
and MODE_FLOAT.

2017-07-13  Richard Sandiford  
Alan Hayward  
David Sherwood  

gcc/
* omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
and scalar_mode.
* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.

Index: gcc/omp-expand.c
===
--- gcc/omp-expand.c2017-06-30 12:50:38.243662675 +0100
+++ gcc/omp-expand.c2017-07-13 09:18:55.598479800 +0100
@@ -6724,17 +6724,18 @@ expand_omp_atomic (struct omp_region *re
   if (exact_log2 (align) >= index)
{
  /* Atomic load.  */
+ scalar_mode smode;
  if (loaded_val == stored_val
- && (GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
- || GET_MODE_CLASS (TYPE_MODE (type)) == MODE_FLOAT)
- && GET_MODE_BITSIZE (TYPE_MODE (type)) <= BITS_PER_WORD
+ && (is_int_mode (TYPE_MODE (type), )
+ || is_float_mode (TYPE_MODE (type), ))
+ && GET_MODE_BITSIZE (smode) <= BITS_PER_WORD
  && expand_omp_atomic_load (load_bb, addr, loaded_val, index))
return;
 
  /* Atomic store.  */
- if ((GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
-  || GET_MODE_CLASS (TYPE_MODE (type)) == MODE_FLOAT)
- && GET_MODE_BITSIZE (TYPE_MODE (type)) <= BITS_PER_WORD
+ if ((is_int_mode (TYPE_MODE (type), )
+  || is_float_mode (TYPE_MODE (type), ))
+ && GET_MODE_BITSIZE (smode) <= BITS_PER_WORD
  && store_bb == single_succ (load_bb)
  && first_stmt (store_bb) == store
  && expand_omp_atomic_store (load_bb, addr, loaded_val,
Index: gcc/tree-vect-stmts.c
===
--- gcc/tree-vect-stmts.c   2017-07-13 09:18:54.003596374 +0100
+++ gcc/tree-vect-stmts.c   2017-07-13 09:18:55.599479728 +0100
@@ -8936,18 +8936,16 @@ free_stmt_vec_info (gimple *stmt)
 get_vectype_for_scalar_type_and_size (tree scalar_type, unsigned size)
 {
   tree orig_scalar_type = scalar_type;
-  machine_mode inner_mode = TYPE_MODE (scalar_type);
+  scalar_mode inner_mode;
   machine_mode simd_mode;
-  unsigned int nbytes = GET_MODE_SIZE (inner_mode);
   int nunits;
   tree vectype;
 
-  if (nbytes == 0)
+  if (!is_int_mode (TYPE_MODE (scalar_type), _mode)
+  && !is_float_mode (TYPE_MODE (scalar_type), _mode))
 return NULL_TREE;
 
-  if (GET_MODE_CLASS (inner_mode) != MODE_INT
-  && GET_MODE_CLASS (inner_mode) != MODE_FLOAT)
-return NULL_TREE;
+  unsigned int nbytes = GET_MODE_SIZE (inner_mode);
 
   /* For vector types of elements whose mode precision doesn't
  match their types precision we use a element type of mode