00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #define INCLUDING_IN_REGISTER // we modify register classes and we're
00040
00041
00042 #include "defs.h"
00043 #include "errors.h"
00044 #include "tracing.h"
00045 #include "mempool.h"
00046 #include "config.h"
00047 #include "glob.h"
00048 #include "util.h"
00049 #include "calls.h"
00050 #include "data_layout.h"
00051 #include "tn.h"
00052 #include "targ_sim.h"
00053 #include "op.h"
00054 #include "cg_flags.h"
00055
00056 #include "register.h"
00057
00059 void
00060 REGISTER_Init_Stacked(ISA_REGISTER_CLASS rclass)
00062
00063
00064
00066 {
00067 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00068 }
00069
00071 void REGISTER_Request_Stacked_Rotating_Register()
00073
00074
00075
00077 {
00078 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00079 }
00080
00082 REGISTER REGISTER_Request_Stacked_Register(INT has_abi_property,
00083 ISA_REGISTER_CLASS rclass)
00085
00086
00087
00089 {
00090 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00091 return REGISTER_UNDEFINED;
00092 }
00093
00095 REGISTER
00096 REGISTER_Allocate_Stacked_Register(INT has_abi_property,
00097 ISA_REGISTER_CLASS rclass,
00098 REGISTER reg)
00100
00101
00102
00104 {
00105 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00106 return REGISTER_UNDEFINED;
00107 }
00108
00110 void
00111 REGISTER_Unallocate_Stacked_Register (
00112 ISA_REGISTER_CLASS rclass, REGISTER reg)
00113 {
00114 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00115 }
00116
00118 BOOL
00119 REGISTER_Is_Allocatable_Stacked_Register (
00120 ISA_REGISTER_CLASS rclass, REGISTER reg)
00121 {
00122 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00123 return FALSE;
00124 }
00125
00127 REGISTER_SET
00128 REGISTER_Get_Stacked_Avail_Set(INT has_abi_property, ISA_REGISTER_CLASS rclass)
00130
00131
00132
00134 {
00135 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00136 return REGISTER_SET_EMPTY_SET;
00137 }
00138
00140 BOOL
00141 REGISTER_Is_Stacked_Output(ISA_REGISTER_CLASS rclass, REGISTER reg)
00143
00144
00145
00147 {
00148 return FALSE;
00149 }
00150
00151
00153 BOOL
00154 REGISTER_Is_Stacked_Local(ISA_REGISTER_CLASS rclass, REGISTER reg)
00156
00157
00158
00160 {
00161 return FALSE;
00162 }
00163
00164
00166 BOOL
00167 REGISTER_Is_Stacked(ISA_REGISTER_CLASS rclass, REGISTER reg)
00169
00170
00171
00173 {
00174 return FALSE;
00175 }
00176
00178 BOOL
00179 REGISTER_Is_Rotating(ISA_REGISTER_CLASS rclass, REGISTER reg)
00181
00182
00183
00185 {
00186 return FALSE;
00187 }
00188
00190 REGISTER
00191 REGISTER_Translate_Stacked_Output(REGISTER reg)
00193
00194
00195
00197 {
00198 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00199 return REGISTER_UNDEFINED;
00200 }
00201
00202
00204 char *
00205 REGISTER_Stacked_Output_Name (REGISTER reg)
00207 {
00208 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00209 return NULL;
00210 }
00211
00212
00214 INT
00215 REGISTER_Number_Stacked_Local (ISA_REGISTER_CLASS rclass)
00217
00218
00219
00221 {
00222 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00223 return 0;
00224 }
00225
00227 INT
00228 REGISTER_Number_Stacked_Output (ISA_REGISTER_CLASS rclass)
00230
00231
00232
00234 {
00235 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00236 return 0;
00237 }
00238
00239
00241 INT
00242 REGISTER_Number_Stacked_Rotating (ISA_REGISTER_CLASS rclass)
00244
00245
00246
00248 {
00249 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00250 return 0;
00251 }
00252
00253 INT REGISTER_Number_Stacked_Registers_Available (ISA_REGISTER_CLASS rclass)
00254 {
00255 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00256 return 0;
00257 }
00258
00259
00261 void REGISTER_Reserve_Rotating_Registers(ISA_REGISTER_CLASS rclass, INT n)
00263
00264
00265
00267 {
00268 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00269 }
00270
00272 void
00273 REGISTER_Set_Stacked_Output_Minimum(ISA_REGISTER_CLASS rclass, INT num)
00275
00276
00277
00279 {
00280 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00281 }
00282
00283
00285 REGISTER REGISTER_First_Rotating_Registers(ISA_REGISTER_CLASS rclass)
00287
00288
00289
00291 {
00292 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00293 return REGISTER_UNDEFINED;
00294 }
00295
00297 REGISTER REGISTER_Last_Rotating_Registers(ISA_REGISTER_CLASS rclass)
00299
00300
00301
00303 {
00304 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00305 return REGISTER_UNDEFINED;
00306 }
00307
00308
00310 REGISTER_SET REGISTER_Get_Requested_Rotating_Registers(ISA_REGISTER_CLASS rclass)
00312
00313
00314
00316 {
00317 FmtAssert(FALSE, ("UNIMPLEMENTED"));
00318 return REGISTER_SET_EMPTY_SET;
00319 }
00320
00321
00322 mISA_REGISTER_CLASS Mtype_RegClass_Map[MTYPE_LAST+1];
00323
00324 void Init_Mtype_RegClass_Map(void)
00325 {
00326 INT i;
00327 mISA_REGISTER_CLASS * const map = Mtype_RegClass_Map;
00328
00329 for (i = 0; i <= MTYPE_LAST; ++i) map[i] = ISA_REGISTER_CLASS_UNDEFINED;
00330
00331 map[MTYPE_I1] = ISA_REGISTER_CLASS_integer;
00332 map[MTYPE_I2] = ISA_REGISTER_CLASS_integer;
00333 map[MTYPE_I4] = ISA_REGISTER_CLASS_integer;
00334 map[MTYPE_I8] = ISA_REGISTER_CLASS_integer;
00335 map[MTYPE_U1] = ISA_REGISTER_CLASS_integer;
00336 map[MTYPE_U2] = ISA_REGISTER_CLASS_integer;
00337 map[MTYPE_U4] = ISA_REGISTER_CLASS_integer;
00338 map[MTYPE_U8] = ISA_REGISTER_CLASS_integer;
00339
00340 map[MTYPE_F4] = Is_Target_SSE2() ? ISA_REGISTER_CLASS_float : ISA_REGISTER_CLASS_x87;
00341 map[MTYPE_F8] = Is_Target_SSE2() ? ISA_REGISTER_CLASS_float : ISA_REGISTER_CLASS_x87;
00342 map[MTYPE_F10] = Is_Target_SSE2() ? ISA_REGISTER_CLASS_float : ISA_REGISTER_CLASS_x87;
00343 map[MTYPE_FQ] = ISA_REGISTER_CLASS_x87;
00344 map[MTYPE_F16] = ISA_REGISTER_CLASS_UNDEFINED;
00345
00346 map[MTYPE_V16C4] = ISA_REGISTER_CLASS_float;
00347 map[MTYPE_C8] = ISA_REGISTER_CLASS_float;
00348 map[MTYPE_V16C8] = ISA_REGISTER_CLASS_float;
00349 map[MTYPE_V16F4] = ISA_REGISTER_CLASS_float;
00350 map[MTYPE_V16F8] = ISA_REGISTER_CLASS_float;
00351 map[MTYPE_V16I1] = ISA_REGISTER_CLASS_float;
00352 map[MTYPE_V16I2] = ISA_REGISTER_CLASS_float;
00353 map[MTYPE_V16I4] = ISA_REGISTER_CLASS_float;
00354 map[MTYPE_V16I8] = ISA_REGISTER_CLASS_float;
00355 map[MTYPE_V8I1] = ISA_REGISTER_CLASS_float;
00356 map[MTYPE_V8I2] = ISA_REGISTER_CLASS_float;
00357 map[MTYPE_V8I4] = ISA_REGISTER_CLASS_float;
00358 map[MTYPE_V8F4] = ISA_REGISTER_CLASS_float;
00359 map[MTYPE_M8I1] = ISA_REGISTER_CLASS_mmx;
00360 map[MTYPE_M8I2] = ISA_REGISTER_CLASS_mmx;
00361 map[MTYPE_M8I4] = ISA_REGISTER_CLASS_mmx;
00362 map[MTYPE_M8F4] = ISA_REGISTER_CLASS_mmx;
00363 }