Re: [PATCH][ARM][1/3] Add vectorization support for rounding functions

2013-02-06 Thread Ramana Radhakrishnan

On 12/18/12 13:33, Kyrylo Tkachov wrote:

Hi all,

This patch does some refactoring by moving the definitions of the NEON
builtins to a separate file (arm_neon_builtins.def) and includes that when
initialising the neon_builtin_data array and also during
the definition of enum arm_builtins (with appropriate redefinitions of the
VAR* macros). This allows us to have symbolic names for the neon builtins
that allows us to look up their declaration in
arm_builtin_decls. This is needed for vectorisation support in the next
patch. The ARM_BUILTIN_NEON_BASE constant which was defined as part of the
arm_builtins enum is now defined as a macro, since
various functions that deal with the initialisation and expansion of
builtins use it.

No regressions on arm-none-eabi with model.

Ok for trunk?

Thanks,
Kyrill


gcc/ChangeLog

2012-12-18  Kyrylo Tkachov  kyrylo.tkachov at arm.com

* config/arm/arm_neon_builtins.def: New file.
* config/arm/arm.c (neon_builtin_data): Move contents to
  arm_neon_builtins.def.
  (enum arm_builtins): Include neon builtin definitions.
  (ARM_BUILTIN_NEON_BASE): Move from enum to macro.




arm.o in t-arm needs to depend on this new file. Otherwise OK for stage1 .


regards,
Ramana




RE: [PATCH][ARM][1/3] Add vectorization support for rounding functions

2013-02-05 Thread Kyrylo Tkachov
Ping?

Thanks,
Kyrill

 -Original Message-
 From: Kyrylo Tkachov [mailto:kyrylo.tkac...@arm.com]
 Sent: 07 January 2013 10:35
 To: gcc-patches@gcc.gnu.org
 Cc: Ramana Radhakrishnan; Richard Earnshaw
 Subject: RE: [PATCH][ARM][1/3] Add vectorization support for rounding
 functions
 
 Ping.
 
 http://gcc.gnu.org/ml/gcc-patches/2012-12/msg0.html
 
 Thanks,
 Kyrill
 
  -Original Message-
  From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
  ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
  Sent: 18 December 2012 13:33
  To: gcc-patches@gcc.gnu.org
  Cc: Ramana Radhakrishnan; Richard Earnshaw
  Subject: [PATCH][ARM][1/3] Add vectorization support for rounding
  functions
 
  Hi all,
 
  This patch does some refactoring by moving the definitions of the
 NEON
  builtins to a separate file (arm_neon_builtins.def) and includes that
  when
  initialising the neon_builtin_data array and also during
  the definition of enum arm_builtins (with appropriate redefinitions
 of
  the
  VAR* macros). This allows us to have symbolic names for the neon
  builtins
  that allows us to look up their declaration in
  arm_builtin_decls. This is needed for vectorisation support in the
 next
  patch. The ARM_BUILTIN_NEON_BASE constant which was defined as part
 of
  the
  arm_builtins enum is now defined as a macro, since
  various functions that deal with the initialisation and expansion of
  builtins use it.
 
  No regressions on arm-none-eabi with model.
 
  Ok for trunk?
 
  Thanks,
  Kyrill
 
 
  gcc/ChangeLog
 
  2012-12-18  Kyrylo Tkachov  kyrylo.tkachov at arm.com
 
  * config/arm/arm_neon_builtins.def: New file.
  * config/arm/arm.c (neon_builtin_data): Move contents to
arm_neon_builtins.def.
(enum arm_builtins): Include neon builtin definitions.
(ARM_BUILTIN_NEON_BASE): Move from enum to macro.





RE: [PATCH][ARM][1/3] Add vectorization support for rounding functions

2013-01-22 Thread Kyrylo Tkachov
Ping^3?

Thanks,
Kyrill

 -Original Message-
 From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
 ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
 Sent: 14 January 2013 17:32
 To: gcc-patches@gcc.gnu.org
 Cc: Ramana Radhakrishnan; Richard Earnshaw
 Subject: RE: [PATCH][ARM][1/3] Add vectorization support for rounding
 functions
 
 Ping.
 
 Thanks,
 Kyrill
 
  -Original Message-
  From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
  ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
  Sent: 07 January 2013 10:35
  To: gcc-patches@gcc.gnu.org
  Cc: Ramana Radhakrishnan; Richard Earnshaw
  Subject: RE: [PATCH][ARM][1/3] Add vectorization support for rounding
  functions
 
  Ping.
 
  http://gcc.gnu.org/ml/gcc-patches/2012-12/msg0.html
 
  Thanks,
  Kyrill
 
   -Original Message-
   From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
   ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
   Sent: 18 December 2012 13:33
   To: gcc-patches@gcc.gnu.org
   Cc: Ramana Radhakrishnan; Richard Earnshaw
   Subject: [PATCH][ARM][1/3] Add vectorization support for rounding
   functions
  
   Hi all,
  
   This patch does some refactoring by moving the definitions of the
  NEON
   builtins to a separate file (arm_neon_builtins.def) and includes
 that
   when
   initialising the neon_builtin_data array and also during
   the definition of enum arm_builtins (with appropriate redefinitions
  of
   the
   VAR* macros). This allows us to have symbolic names for the neon
   builtins
   that allows us to look up their declaration in
   arm_builtin_decls. This is needed for vectorisation support in the
  next
   patch. The ARM_BUILTIN_NEON_BASE constant which was defined as part
  of
   the
   arm_builtins enum is now defined as a macro, since
   various functions that deal with the initialisation and expansion
 of
   builtins use it.
  
   No regressions on arm-none-eabi with model.
  
   Ok for trunk?
  
   Thanks,
   Kyrill
  
  
   gcc/ChangeLog
  
   2012-12-18  Kyrylo Tkachov  kyrylo.tkachov at arm.com
  
 * config/arm/arm_neon_builtins.def: New file.
 * config/arm/arm.c (neon_builtin_data): Move contents to
   arm_neon_builtins.def.
   (enum arm_builtins): Include neon builtin definitions.
   (ARM_BUILTIN_NEON_BASE): Move from enum to macro.
 
 
 
 
 
 
 






RE: [PATCH][ARM][1/3] Add vectorization support for rounding functions

2013-01-14 Thread Kyrylo Tkachov
Ping.

Thanks,
Kyrill

 -Original Message-
 From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
 ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
 Sent: 07 January 2013 10:35
 To: gcc-patches@gcc.gnu.org
 Cc: Ramana Radhakrishnan; Richard Earnshaw
 Subject: RE: [PATCH][ARM][1/3] Add vectorization support for rounding
 functions
 
 Ping.
 
 http://gcc.gnu.org/ml/gcc-patches/2012-12/msg0.html
 
 Thanks,
 Kyrill
 
  -Original Message-
  From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
  ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
  Sent: 18 December 2012 13:33
  To: gcc-patches@gcc.gnu.org
  Cc: Ramana Radhakrishnan; Richard Earnshaw
  Subject: [PATCH][ARM][1/3] Add vectorization support for rounding
  functions
 
  Hi all,
 
  This patch does some refactoring by moving the definitions of the
 NEON
  builtins to a separate file (arm_neon_builtins.def) and includes that
  when
  initialising the neon_builtin_data array and also during
  the definition of enum arm_builtins (with appropriate redefinitions
 of
  the
  VAR* macros). This allows us to have symbolic names for the neon
  builtins
  that allows us to look up their declaration in
  arm_builtin_decls. This is needed for vectorisation support in the
 next
  patch. The ARM_BUILTIN_NEON_BASE constant which was defined as part
 of
  the
  arm_builtins enum is now defined as a macro, since
  various functions that deal with the initialisation and expansion of
  builtins use it.
 
  No regressions on arm-none-eabi with model.
 
  Ok for trunk?
 
  Thanks,
  Kyrill
 
 
  gcc/ChangeLog
 
  2012-12-18  Kyrylo Tkachov  kyrylo.tkachov at arm.com
 
  * config/arm/arm_neon_builtins.def: New file.
  * config/arm/arm.c (neon_builtin_data): Move contents to
arm_neon_builtins.def.
(enum arm_builtins): Include neon builtin definitions.
(ARM_BUILTIN_NEON_BASE): Move from enum to macro.
 
 
 






RE: [PATCH][ARM][1/3] Add vectorization support for rounding functions

2013-01-07 Thread Kyrylo Tkachov
Ping.

http://gcc.gnu.org/ml/gcc-patches/2012-12/msg0.html

Thanks,
Kyrill

 -Original Message-
 From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
 ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
 Sent: 18 December 2012 13:33
 To: gcc-patches@gcc.gnu.org
 Cc: Ramana Radhakrishnan; Richard Earnshaw
 Subject: [PATCH][ARM][1/3] Add vectorization support for rounding
 functions
 
 Hi all,
 
 This patch does some refactoring by moving the definitions of the NEON
 builtins to a separate file (arm_neon_builtins.def) and includes that
 when
 initialising the neon_builtin_data array and also during
 the definition of enum arm_builtins (with appropriate redefinitions of
 the
 VAR* macros). This allows us to have symbolic names for the neon
 builtins
 that allows us to look up their declaration in
 arm_builtin_decls. This is needed for vectorisation support in the next
 patch. The ARM_BUILTIN_NEON_BASE constant which was defined as part of
 the
 arm_builtins enum is now defined as a macro, since
 various functions that deal with the initialisation and expansion of
 builtins use it.
 
 No regressions on arm-none-eabi with model.
 
 Ok for trunk?
 
 Thanks,
 Kyrill
 
 
 gcc/ChangeLog
 
 2012-12-18  Kyrylo Tkachov  kyrylo.tkachov at arm.com
 
   * config/arm/arm_neon_builtins.def: New file.
   * config/arm/arm.c (neon_builtin_data): Move contents to
 arm_neon_builtins.def.
 (enum arm_builtins): Include neon builtin definitions.
 (ARM_BUILTIN_NEON_BASE): Move from enum to macro.





[PATCH][ARM][1/3] Add vectorization support for rounding functions

2012-12-18 Thread Kyrylo Tkachov
Hi all,

This patch does some refactoring by moving the definitions of the NEON
builtins to a separate file (arm_neon_builtins.def) and includes that when
initialising the neon_builtin_data array and also during
the definition of enum arm_builtins (with appropriate redefinitions of the
VAR* macros). This allows us to have symbolic names for the neon builtins
that allows us to look up their declaration in
arm_builtin_decls. This is needed for vectorisation support in the next
patch. The ARM_BUILTIN_NEON_BASE constant which was defined as part of the
arm_builtins enum is now defined as a macro, since
various functions that deal with the initialisation and expansion of
builtins use it.

No regressions on arm-none-eabi with model.

Ok for trunk?

Thanks,
Kyrill


gcc/ChangeLog

2012-12-18  Kyrylo Tkachov  kyrylo.tkachov at arm.com

* config/arm/arm_neon_builtins.def: New file.
* config/arm/arm.c (neon_builtin_data): Move contents to
  arm_neon_builtins.def.
  (enum arm_builtins): Include neon builtin definitions.
  (ARM_BUILTIN_NEON_BASE): Move from enum to macro.diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 84ce56f..ba0fdd2 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -19134,7 +19134,8 @@ typedef struct {
   VAR9 (T, N, A, B, C, D, E, F, G, H, I), \
   {#N, NEON_##T, UP (J), CF (N, J), 0}
 
-/* The mode entries in the following table correspond to the key type of the
+/* The NEON builtin data can be found in arm_neon_builtins.def.
+   The mode entries in the following table correspond to the key type of the
instruction variant, i.e. equivalent to that which would be specified after
the assembler mnemonic, which usually refers to the last vector operand.
(Signed/unsigned/polynomial types are not differentiated between though, and
@@ -19144,196 +19145,7 @@ typedef struct {
 
 static neon_builtin_datum neon_builtin_data[] =
 {
-  VAR10 (BINOP, vadd,
-v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
-  VAR3 (BINOP, vaddl, v8qi, v4hi, v2si),
-  VAR3 (BINOP, vaddw, v8qi, v4hi, v2si),
-  VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
-  VAR8 (BINOP, vqadd, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR3 (BINOP, vaddhn, v8hi, v4si, v2di),
-  VAR8 (BINOP, vmul, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR3 (TERNOP, vmlal, v8qi, v4hi, v2si),
-  VAR2 (TERNOP, vfma, v2sf, v4sf),
-  VAR2 (TERNOP, vfms, v2sf, v4sf),
-  VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR3 (TERNOP, vmlsl, v8qi, v4hi, v2si),
-  VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si),
-  VAR2 (TERNOP, vqdmlal, v4hi, v2si),
-  VAR2 (TERNOP, vqdmlsl, v4hi, v2si),
-  VAR3 (BINOP, vmull, v8qi, v4hi, v2si),
-  VAR2 (SCALARMULL, vmull_n, v4hi, v2si),
-  VAR2 (LANEMULL, vmull_lane, v4hi, v2si),
-  VAR2 (SCALARMULL, vqdmull_n, v4hi, v2si),
-  VAR2 (LANEMULL, vqdmull_lane, v4hi, v2si),
-  VAR4 (SCALARMULH, vqdmulh_n, v4hi, v2si, v8hi, v4si),
-  VAR4 (LANEMULH, vqdmulh_lane, v4hi, v2si, v8hi, v4si),
-  VAR2 (BINOP, vqdmull, v4hi, v2si),
-  VAR8 (BINOP, vshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR8 (BINOP, vqshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR8 (SHIFTIMM, vshr_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR3 (SHIFTIMM, vshrn_n, v8hi, v4si, v2di),
-  VAR3 (SHIFTIMM, vqshrn_n, v8hi, v4si, v2di),
-  VAR3 (SHIFTIMM, vqshrun_n, v8hi, v4si, v2di),
-  VAR8 (SHIFTIMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR8 (SHIFTIMM, vqshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si),
-  VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR10 (BINOP, vsub,
-v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di),
-  VAR3 (BINOP, vsubl, v8qi, v4hi, v2si),
-  VAR3 (BINOP, vsubw, v8qi, v4hi, v2si),
-  VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di),
-  VAR6 (BINOP, vhsub, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
-  VAR3 (BINOP, vsubhn, v8hi, v4si, v2di),
-  VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
-  VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
-  VAR2 (BINOP, vcage, v2sf, v4sf),
-  VAR2 (BINOP, vcagt, v2sf, v4sf),
-  VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
-  VAR8 (BINOP, vabd, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR3 (BINOP, vabdl, v8qi, v4hi, v2si),
-  VAR6 (TERNOP, vaba, v8qi, v4hi, v2si, v16qi, v8hi, v4si),
-  VAR3 (TERNOP, vabal, v8qi, v4hi, v2si),
-  VAR8 (BINOP, vmax, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf),
-  VAR8