This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[RFA/RFT] Tree-level lowering of generic vectors, part 3
Ok with those changes.
Thanks. So here we go with part 3, which shuffles vector modes to the
appropriate machine-dependent files.
(To Janis: sorry for attaching the wrong patch and wasting your time --
this is the part for which I'd like testing).
Paolo
2004-07-22 Paolo Bonzini <bonzini@gnu.org>
* machmode.def: Remove vector modes.
* config/alpha/alpha-modes.def: Add supported vector modes.
* config/arm/arm-modes.def: Likewise.
* config/frv/frv-modes.def: Likewise.
* config/i386/i386-modes.def: Likewise.
* config/rs6000/rs6000-modes.def: Likewise.
* config/sh/sh-modes.def: Likewise.
Index: machmode.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/machmode.def,v
retrieving revision 1.27
diff -u -r1.27 machmode.def
--- machmode.def 6 Nov 2003 08:38:50 -0000 1.27
+++ machmode.def 22 Jul 2004 08:26:17 -0000
@@ -186,36 +186,6 @@
COMPLEX_MODES (INT);
COMPLEX_MODES (FLOAT);
-/* Vector modes. */
-VECTOR_MODES (INT, 2); /* V2QI */
-VECTOR_MODES (INT, 4); /* V4QI V2HI */
-VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */
-VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */
-/* VECTOR_MODES (INT, 32); V8SI V4DI */
-/* VECTOR_MODES (INT, 64); V8DI */
-
-VECTOR_MODE (INT, SI, 8)
-VECTOR_MODE (INT, DI, 4);
-VECTOR_MODE (INT, DI, 8);
-
-/* PPC uses this to distinguish between DImode passed in
- float registers and DImode passed in vector registers.
- It would be in rs6000-modes.def but it's referenced in
- c-common.c. FIXME. */
-
-VECTOR_MODE (INT, DI, 1);
-
-VECTOR_MODES (FLOAT, 4); /* V2HF */
-VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */
-VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */
-/* VECTOR_MODES (FLOAT, 32); V8SF V4DF */
-/* VECTOR_MODES (FLOAT, 64); V16SF V8DF */
-
-VECTOR_MODE (FLOAT, SF, 8);
-VECTOR_MODE (FLOAT, SF, 16);
-VECTOR_MODE (FLOAT, DF, 4);
-VECTOR_MODE (FLOAT, DF, 8);
-
/* The symbol Pmode stands for one of the above machine modes (usually SImode).
The tm.h file specifies which one. It is not a distinct mode. */
Index: config/alpha/alpha-modes.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha-modes.def,v
retrieving revision 1.2
diff -u -r1.2 alpha-modes.def
--- config/alpha/alpha-modes.def 25 Dec 2003 15:17:34 -0000 1.2
+++ config/alpha/alpha-modes.def 22 Jul 2004 08:26:17 -0000
@@ -21,3 +21,8 @@
/* 128-bit floating point. This gets reset in alpha_override_options
if VAX float format is in use. */
FLOAT_MODE (TF, 16, ieee_quad_format);
+
+/* Vector modes. */
+VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */
+VECTOR_MODE (INT, QI, 4); /* V4QI */
+VECTOR_MODE (INT, QI, 2); /* V2QI */
Index: config/arm/arm-modes.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/arm/arm-modes.def,v
retrieving revision 1.5
diff -u -r1.5 arm-modes.def
--- config/arm/arm-modes.def 25 Dec 2003 15:17:36 -0000 1.5
+++ config/arm/arm-modes.def 22 Jul 2004 08:26:17 -0000
@@ -50,3 +50,10 @@
CC_MODE (CC_DGTU);
CC_MODE (CC_C);
CC_MODE (CC_N);
+
+/* Vector modes. */
+VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */
+VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */
+VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */
+VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */
+
Index: config/frv/frv-modes.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/frv/frv-modes.def,v
retrieving revision 1.3
diff -u -r1.3 frv-modes.def
--- config/frv/frv-modes.def 13 Oct 2003 21:16:26 -0000 1.3
+++ config/frv/frv-modes.def 22 Jul 2004 08:26:17 -0000
@@ -28,3 +28,6 @@
CC_MODE (CC_UNS);
CC_MODE (CC_FP);
CC_MODE (CC_CCR);
+
+VECTOR_MODE (INT, QI, 4); /* V4QI */
+VECTOR_MODE (INT, SI, 4); /* V4SI */
Index: config/i386/i386-modes.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386-modes.def,v
retrieving revision 1.6
diff -u -r1.6 i386-modes.def
--- config/i386/i386-modes.def 30 Oct 2003 23:27:30 -0000 1.6
+++ config/i386/i386-modes.def 22 Jul 2004 08:26:17 -0000
@@ -60,3 +60,15 @@
CC_MODE (CCZ);
CC_MODE (CCFP);
CC_MODE (CCFPU);
+
+/* Vector modes. */
+VECTOR_MODES (INT, 4); /* V4QI V2HI */
+VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */
+VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */
+VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */
+VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */
+VECTOR_MODE (INT, DI, 4); /* V4DI */
+VECTOR_MODE (INT, SI, 8); /* V8SI */
+
+/* The symbol Pmode stands for one of the above machine modes (usually SImode).
+ The tm.h file specifies which one. It is not a distinct mode. */
Index: config/rs6000/rs6000-modes.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000-modes.def,v
retrieving revision 1.4
diff -u -r1.4 rs6000-modes.def
--- config/rs6000/rs6000-modes.def 31 Dec 2003 00:25:51 -0000 1.4
+++ config/rs6000/rs6000-modes.def 22 Jul 2004 08:26:17 -0000
@@ -38,3 +38,10 @@
CC_MODE (CCUNS);
CC_MODE (CCFP);
CC_MODE (CCEQ);
+
+/* Vector modes. */
+VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */
+VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */
+VECTOR_MODE (INT, DI, 1);
+VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */
+VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */
Index: config/sh/sh-modes.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/sh/sh-modes.def,v
retrieving revision 1.1
diff -u -r1.1 sh-modes.def
--- config/sh/sh-modes.def 13 Oct 2003 21:16:32 -0000 1.1
+++ config/sh/sh-modes.def 22 Jul 2004 08:26:17 -0000
@@ -21,3 +21,12 @@
/* The SH uses a partial integer mode to represent the FPSCR register. */
PARTIAL_INT_MODE (SI);
+/* Vector modes. */
+VECTOR_MODES (INT, 4); /* V4QI V2HI */
+VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */
+VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */
+VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */
+VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */
+VECTOR_MODE (INT, DI, 4); /* V4DI */
+VECTOR_MODE (INT, DI, 8); /* V8DI */
+VECTOR_MODE (FLOAT, SF, 16); /* V16SF */