machmode.def (PARTIAL_INT_MODE): Add precision and name.
* machmode.def (PARTIAL_INT_MODE): Add precision and name. * genmodes.c (PARTIAL_INT_MODE): Add precision and name. (make_vector_mode): Increase namebuf to 16. (emit_insn_modes_h): When processing BImode, don't also match partial int modes. (emit_class_narrowest_mode): Likewise. * config/bfin/bfin-modes.def: Add precision to PDI. * config/m32c/m32c-modes.def: Add precision to PSI. * config/msp430/msp430-modes.def: Add precision to PSI. * config/rs6000/rs6000-modes.def: Add precision to PTI. * config/sh/sh-modes.def: Add precision to PSI and PDI. From-SVN: r204193
This commit is contained in:
parent
f0be72ea22
commit
d8487c949a
@ -1,3 +1,18 @@
|
||||
2013-10-29 Mike Stump <mikestump@comcast.net>
|
||||
|
||||
* machmode.def (PARTIAL_INT_MODE): Add precision and name.
|
||||
* genmodes.c (PARTIAL_INT_MODE): Add precision and name.
|
||||
(make_vector_mode): Increase namebuf to 16.
|
||||
(emit_insn_modes_h): When processing BImode, don't
|
||||
also match partial int modes.
|
||||
(emit_class_narrowest_mode): Likewise.
|
||||
|
||||
* config/bfin/bfin-modes.def: Add precision to PDI.
|
||||
* config/m32c/m32c-modes.def: Add precision to PSI.
|
||||
* config/msp430/msp430-modes.def: Add precision to PSI.
|
||||
* config/rs6000/rs6000-modes.def: Add precision to PTI.
|
||||
* config/sh/sh-modes.def: Add precision to PSI and PDI.
|
||||
|
||||
2013-10-29 Oleg Endo <olegendo@gcc.gnu.org>
|
||||
|
||||
PR target/54236
|
||||
|
@ -19,7 +19,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* PDImode for the 40-bit accumulators. */
|
||||
PARTIAL_INT_MODE (DI);
|
||||
PARTIAL_INT_MODE (DI, 40, PDI);
|
||||
|
||||
/* Two of those - covering both accumulators for vector multiplications. */
|
||||
VECTOR_MODE (INT, PDI, 2);
|
||||
|
@ -22,7 +22,7 @@
|
||||
/*INT_MODE (PI, 3);*/
|
||||
|
||||
/* 24-bit pointers, in 32-bit units */
|
||||
PARTIAL_INT_MODE (SI);
|
||||
PARTIAL_INT_MODE (SI, 24, PSI);
|
||||
|
||||
/* 48-bit MULEX result */
|
||||
/* INT_MODE (MI, 6); */
|
||||
|
@ -1,3 +1,3 @@
|
||||
/* 20-bit address */
|
||||
PARTIAL_INT_MODE (SI);
|
||||
PARTIAL_INT_MODE (SI, 20, PSI);
|
||||
|
||||
|
@ -45,4 +45,4 @@ VECTOR_MODES (FLOAT, 32); /* V16HF V8SF V4DF */
|
||||
/* Replacement for TImode that only is allowed in GPRs. We also use PTImode
|
||||
for quad memory atomic operations to force getting an even/odd register
|
||||
combination. */
|
||||
PARTIAL_INT_MODE (TI);
|
||||
PARTIAL_INT_MODE (TI, 128, PTI);
|
||||
|
@ -18,9 +18,9 @@ along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* The SH uses a partial integer mode to represent the FPSCR register. */
|
||||
PARTIAL_INT_MODE (SI);
|
||||
PARTIAL_INT_MODE (SI, 22, PSI);
|
||||
/* PDI mode is used to represent a function address in a target register. */
|
||||
PARTIAL_INT_MODE (DI);
|
||||
PARTIAL_INT_MODE (DI, 64, PDI);
|
||||
|
||||
/* Vector modes. */
|
||||
VECTOR_MODE (INT, QI, 2); /* V2QI */
|
||||
|
@ -644,10 +644,10 @@ reset_float_format (const char *name, const char *format,
|
||||
m->format = format;
|
||||
}
|
||||
|
||||
/* Partial integer modes are specified by relation to a full integer mode.
|
||||
For now, we do not attempt to narrow down their bit sizes. */
|
||||
#define PARTIAL_INT_MODE(M) \
|
||||
make_partial_integer_mode (#M, "P" #M, -1U, __FILE__, __LINE__)
|
||||
/* Partial integer modes are specified by relation to a full integer
|
||||
mode. */
|
||||
#define PARTIAL_INT_MODE(M,PREC,NAME) \
|
||||
make_partial_integer_mode (#M, #NAME, PREC, __FILE__, __LINE__)
|
||||
static void ATTRIBUTE_UNUSED
|
||||
make_partial_integer_mode (const char *base, const char *name,
|
||||
unsigned int precision,
|
||||
@ -684,7 +684,7 @@ make_vector_mode (enum mode_class bclass,
|
||||
struct mode_data *v;
|
||||
enum mode_class vclass = vector_class (bclass);
|
||||
struct mode_data *component = find_mode (base);
|
||||
char namebuf[8];
|
||||
char namebuf[16];
|
||||
|
||||
if (vclass == MODE_RANDOM)
|
||||
return;
|
||||
@ -932,7 +932,7 @@ enum machine_mode\n{");
|
||||
end will try to use it for bitfields in structures and the
|
||||
like, which we do not want. Only the target md file should
|
||||
generate BImode widgets. */
|
||||
if (first && first->precision == 1)
|
||||
if (first && first->precision == 1 && c == MODE_INT)
|
||||
first = first->next;
|
||||
|
||||
if (first && last)
|
||||
@ -1202,7 +1202,7 @@ emit_class_narrowest_mode (void)
|
||||
/* Bleah, all this to get the comment right for MIN_MODE_INT. */
|
||||
tagged_printf ("MIN_%s", mode_class_names[c],
|
||||
modes[c]
|
||||
? (modes[c]->precision != 1
|
||||
? ((c != MODE_INT || modes[c]->precision != 1)
|
||||
? modes[c]->name
|
||||
: (modes[c]->next
|
||||
? modes[c]->next->name
|
||||
|
@ -121,11 +121,11 @@ along with GCC; see the file COPYING3. If not see
|
||||
to FORMAT. Use in an ARCH-modes.def to reset the format
|
||||
of one of the float modes defined in this file.
|
||||
|
||||
PARTIAL_INT_MODE (MODE);
|
||||
PARTIAL_INT_MODE (MODE, PRECISION, NAME);
|
||||
declares a mode of class PARTIAL_INT with the same size as
|
||||
MODE (which must be an INT mode). The name of the new mode
|
||||
is made by prefixing a P to the name MODE. This statement
|
||||
may grow a PRECISION argument in the future.
|
||||
MODE (which must be an INT mode) and precision PREC.
|
||||
Optionally, NAME is the new name of the mode. NAME is the
|
||||
name of the mode.
|
||||
|
||||
VECTOR_MODE (CLASS, MODE, COUNT);
|
||||
Declare a vector mode whose component mode is MODE (of class
|
||||
|
Loading…
Reference in New Issue
Block a user