This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: CCmode size


Quoting Paul_Koning@Dell.com:

It would seem that making it equal to word size (whatever that is on the platform) or size of the int type would be a way to make this better. Would that have any bad consequences for other platforms?

For MXP (16-bit word addressed, with 128 bit vector registers) I had this:


2008-04-25  J"orn Rennecke  <joern.rennecke@arc.com>
        * genmodes.c (vector_class):
        (complete_mode): Allow bytesize to have been set for MODE_CC.


case MODE_CC: /* Again, nothing more need be said. For historical reasons, - the size of a CC mode is four units. */ - validate_mode (m, UNSET, UNSET, UNSET, UNSET, UNSET); + the size of a CC mode defaults to four units. */ + if (m->bytesize != blank_mode.bytesize) + validate_mode (m, UNSET, SET, UNSET, UNSET, UNSET); + else + { + validate_mode (m, UNSET, UNSET, UNSET, UNSET, UNSET); + m->bytesize = 4; + }

-      m->bytesize = 4;
       m->ncomponents = 1;
       m->component = 0;
       break;
Then there was also:

ChangeLog.ARC:  (SIZED_CC_MODE): New macro.
genmodes.c:#define SIZED_CC_MODE(N, Y) (CC_MODE (N)->bytesize = (Y))

Of course, MXP needed a few more patches to support MODE_VECTOR_PARTIAL_INT
and MODE_VECTOR_CC modes.

In mxp-modes.def, I had then:

VECTOR_MODES (INT, 4); /* V4QI V2HI */
VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */
VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */
PARTIAL_INT_MODE (SI); /* Needed to make V2PSI / V4PSI. */
VECTOR_MODE (PARTIAL_INT, PSI, 2); /* V2PSI, flags for DImode arithmetic. */
VECTOR_MODE (PARTIAL_INT, PSI, 4); /* V4PSI, flags for V2DImode arithmetic. */
VECTOR_MODES (FLOAT, 8); /* V2SF */
VECTOR_MODES (FLOAT, 16); /* V4SF V2DF */
#define CC_MODES(N) SIZED_CC_MODE (N, 2); \
VECTOR_MODE (CC, N, 2); VECTOR_MODE (CC, N, 4); VECTOR_MODE (CC, N, 8)
CC_MODES (CCI); /* Ordinary integer flags. */
CC_MODES (CCZN); /* Only zero / negative flag relevant. */
CC_MODES (CCZ); /* Only zero flag relevant. */
VECTOR_MODE (CC, CC, 2); /* V2CCmode - flag clobber for DI arithmetic. */
VECTOR_MODE (CC, CC, 4); /* V4CCmode - flag clobber for V2DI arithmetic. */



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]