Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/i386/i386.h @ 19:58ad6c70ea60
update gcc from 4.4.0 to 4.4.1.
author | kent@firefly.cr.ie.u-ryukyu.ac.jp |
---|---|
date | Thu, 24 Sep 2009 13:21:57 +0900 |
parents | a06113de4d67 |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
18:33936f7f2835 | 19:58ad6c70ea60 |
---|---|
806 data to make it all fit in fewer cache lines. */ | 806 data to make it all fit in fewer cache lines. */ |
807 | 807 |
808 #define LOCAL_DECL_ALIGNMENT(DECL) \ | 808 #define LOCAL_DECL_ALIGNMENT(DECL) \ |
809 ix86_local_alignment ((DECL), VOIDmode, DECL_ALIGN (DECL)) | 809 ix86_local_alignment ((DECL), VOIDmode, DECL_ALIGN (DECL)) |
810 | 810 |
811 /* If defined, a C expression to compute the minimum required alignment | |
812 for dynamic stack realignment purposes for EXP (a TYPE or DECL), | |
813 MODE, assuming normal alignment ALIGN. | |
814 | |
815 If this macro is not defined, then (ALIGN) will be used. */ | |
816 | |
817 #define MINIMUM_ALIGNMENT(EXP, MODE, ALIGN) \ | |
818 ix86_minimum_alignment (EXP, MODE, ALIGN) | |
819 | |
811 | 820 |
812 /* If defined, a C expression that gives the alignment boundary, in | 821 /* If defined, a C expression that gives the alignment boundary, in |
813 bits, of an argument with the specified mode and type. If it is | 822 bits, of an argument with the specified mode and type. If it is |
814 not defined, `PARM_BOUNDARY' is used for all arguments. */ | 823 not defined, `PARM_BOUNDARY' is used for all arguments. */ |
815 | 824 |
935 | 944 |
936 | 945 |
937 #define OVERRIDE_ABI_FORMAT(FNDECL) ix86_call_abi_override (FNDECL) | 946 #define OVERRIDE_ABI_FORMAT(FNDECL) ix86_call_abi_override (FNDECL) |
938 | 947 |
939 /* Macro to conditionally modify fixed_regs/call_used_regs. */ | 948 /* Macro to conditionally modify fixed_regs/call_used_regs. */ |
940 #define CONDITIONAL_REGISTER_USAGE \ | 949 #define CONDITIONAL_REGISTER_USAGE ix86_conditional_register_usage () |
941 do { \ | |
942 int i; \ | |
943 unsigned int j; \ | |
944 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ | |
945 { \ | |
946 if (fixed_regs[i] > 1) \ | |
947 fixed_regs[i] = (fixed_regs[i] == (TARGET_64BIT ? 3 : 2)); \ | |
948 if (call_used_regs[i] > 1) \ | |
949 call_used_regs[i] = (call_used_regs[i] \ | |
950 == (TARGET_64BIT ? 3 : 2)); \ | |
951 } \ | |
952 j = PIC_OFFSET_TABLE_REGNUM; \ | |
953 if (j != INVALID_REGNUM) \ | |
954 fixed_regs[j] = call_used_regs[j] = 1; \ | |
955 if (TARGET_64BIT \ | |
956 && ((cfun && cfun->machine->call_abi == MS_ABI) \ | |
957 || (!cfun && DEFAULT_ABI == MS_ABI))) \ | |
958 { \ | |
959 call_used_regs[SI_REG] = 0; \ | |
960 call_used_regs[DI_REG] = 0; \ | |
961 call_used_regs[XMM6_REG] = 0; \ | |
962 call_used_regs[XMM7_REG] = 0; \ | |
963 for (i = FIRST_REX_SSE_REG; i <= LAST_REX_SSE_REG; i++) \ | |
964 call_used_regs[i] = 0; \ | |
965 } \ | |
966 if (! TARGET_MMX) \ | |
967 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ | |
968 if (TEST_HARD_REG_BIT (reg_class_contents[(int)MMX_REGS], i)) \ | |
969 fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ | |
970 if (! TARGET_SSE) \ | |
971 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ | |
972 if (TEST_HARD_REG_BIT (reg_class_contents[(int)SSE_REGS], i)) \ | |
973 fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ | |
974 if (! (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387)) \ | |
975 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) \ | |
976 if (TEST_HARD_REG_BIT (reg_class_contents[(int)FLOAT_REGS], i)) \ | |
977 fixed_regs[i] = call_used_regs[i] = 1, reg_names[i] = ""; \ | |
978 if (! TARGET_64BIT) \ | |
979 { \ | |
980 for (i = FIRST_REX_INT_REG; i <= LAST_REX_INT_REG; i++) \ | |
981 reg_names[i] = ""; \ | |
982 for (i = FIRST_REX_SSE_REG; i <= LAST_REX_SSE_REG; i++) \ | |
983 reg_names[i] = ""; \ | |
984 } \ | |
985 } while (0) | |
986 | 950 |
987 /* Return number of consecutive hard regs needed starting at reg REGNO | 951 /* Return number of consecutive hard regs needed starting at reg REGNO |
988 to hold something of mode MODE. | 952 to hold something of mode MODE. |
989 This is ordinarily the length in words of a value of mode MODE | 953 This is ordinarily the length in words of a value of mode MODE |
990 but can be less for certain modes in special long registers. | 954 but can be less for certain modes in special long registers. |
1206 enum reg_class | 1170 enum reg_class |
1207 { | 1171 { |
1208 NO_REGS, | 1172 NO_REGS, |
1209 AREG, DREG, CREG, BREG, SIREG, DIREG, | 1173 AREG, DREG, CREG, BREG, SIREG, DIREG, |
1210 AD_REGS, /* %eax/%edx for DImode */ | 1174 AD_REGS, /* %eax/%edx for DImode */ |
1175 CLOBBERED_REGS, /* call-clobbered integers */ | |
1211 Q_REGS, /* %eax %ebx %ecx %edx */ | 1176 Q_REGS, /* %eax %ebx %ecx %edx */ |
1212 NON_Q_REGS, /* %esi %edi %ebp %esp */ | 1177 NON_Q_REGS, /* %esi %edi %ebp %esp */ |
1213 INDEX_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp */ | 1178 INDEX_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp */ |
1214 LEGACY_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp */ | 1179 LEGACY_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp */ |
1215 GENERAL_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp %r8 - %r15*/ | 1180 GENERAL_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp %r8 - %r15*/ |
1254 #define REG_CLASS_NAMES \ | 1219 #define REG_CLASS_NAMES \ |
1255 { "NO_REGS", \ | 1220 { "NO_REGS", \ |
1256 "AREG", "DREG", "CREG", "BREG", \ | 1221 "AREG", "DREG", "CREG", "BREG", \ |
1257 "SIREG", "DIREG", \ | 1222 "SIREG", "DIREG", \ |
1258 "AD_REGS", \ | 1223 "AD_REGS", \ |
1224 "CLOBBERED_REGS", \ | |
1259 "Q_REGS", "NON_Q_REGS", \ | 1225 "Q_REGS", "NON_Q_REGS", \ |
1260 "INDEX_REGS", \ | 1226 "INDEX_REGS", \ |
1261 "LEGACY_REGS", \ | 1227 "LEGACY_REGS", \ |
1262 "GENERAL_REGS", \ | 1228 "GENERAL_REGS", \ |
1263 "FP_TOP_REG", "FP_SECOND_REG", \ | 1229 "FP_TOP_REG", "FP_SECOND_REG", \ |
1271 "FLOAT_INT_REGS", \ | 1237 "FLOAT_INT_REGS", \ |
1272 "INT_SSE_REGS", \ | 1238 "INT_SSE_REGS", \ |
1273 "FLOAT_INT_SSE_REGS", \ | 1239 "FLOAT_INT_SSE_REGS", \ |
1274 "ALL_REGS" } | 1240 "ALL_REGS" } |
1275 | 1241 |
1276 /* Define which registers fit in which classes. | 1242 /* Define which registers fit in which classes. This is an initializer |
1277 This is an initializer for a vector of HARD_REG_SET | 1243 for a vector of HARD_REG_SET of length N_REG_CLASSES. |
1278 of length N_REG_CLASSES. */ | 1244 |
1245 Note that the default setting of CLOBBERED_REGS is for 32-bit; this | |
1246 is adjusted by CONDITIONAL_REGISTER_USAGE for the 64-bit ABI in effect. */ | |
1279 | 1247 |
1280 #define REG_CLASS_CONTENTS \ | 1248 #define REG_CLASS_CONTENTS \ |
1281 { { 0x00, 0x0 }, \ | 1249 { { 0x00, 0x0 }, \ |
1282 { 0x01, 0x0 }, { 0x02, 0x0 }, /* AREG, DREG */ \ | 1250 { 0x01, 0x0 }, { 0x02, 0x0 }, /* AREG, DREG */ \ |
1283 { 0x04, 0x0 }, { 0x08, 0x0 }, /* CREG, BREG */ \ | 1251 { 0x04, 0x0 }, { 0x08, 0x0 }, /* CREG, BREG */ \ |
1284 { 0x10, 0x0 }, { 0x20, 0x0 }, /* SIREG, DIREG */ \ | 1252 { 0x10, 0x0 }, { 0x20, 0x0 }, /* SIREG, DIREG */ \ |
1285 { 0x03, 0x0 }, /* AD_REGS */ \ | 1253 { 0x03, 0x0 }, /* AD_REGS */ \ |
1254 { 0x07, 0x0 }, /* CLOBBERED_REGS */ \ | |
1286 { 0x0f, 0x0 }, /* Q_REGS */ \ | 1255 { 0x0f, 0x0 }, /* Q_REGS */ \ |
1287 { 0x1100f0, 0x1fe0 }, /* NON_Q_REGS */ \ | 1256 { 0x1100f0, 0x1fe0 }, /* NON_Q_REGS */ \ |
1288 { 0x7f, 0x1fe0 }, /* INDEX_REGS */ \ | 1257 { 0x7f, 0x1fe0 }, /* INDEX_REGS */ \ |
1289 { 0x1100ff, 0x0 }, /* LEGACY_REGS */ \ | 1258 { 0x1100ff, 0x0 }, /* LEGACY_REGS */ \ |
1290 { 0x1100ff, 0x1fe0 }, /* GENERAL_REGS */ \ | 1259 { 0x1100ff, 0x1fe0 }, /* GENERAL_REGS */ \ |
1473 || ((CLASS) == CREG) \ | 1442 || ((CLASS) == CREG) \ |
1474 || ((CLASS) == BREG) \ | 1443 || ((CLASS) == BREG) \ |
1475 || ((CLASS) == AD_REGS) \ | 1444 || ((CLASS) == AD_REGS) \ |
1476 || ((CLASS) == SIREG) \ | 1445 || ((CLASS) == SIREG) \ |
1477 || ((CLASS) == DIREG) \ | 1446 || ((CLASS) == DIREG) \ |
1447 || ((CLASS) == SSE_FIRST_REG) \ | |
1478 || ((CLASS) == FP_TOP_REG) \ | 1448 || ((CLASS) == FP_TOP_REG) \ |
1479 || ((CLASS) == FP_SECOND_REG)) | 1449 || ((CLASS) == FP_SECOND_REG)) |
1480 | 1450 |
1481 /* Return a class of registers that cannot change FROM mode to TO mode. */ | 1451 /* Return a class of registers that cannot change FROM mode to TO mode. */ |
1482 | 1452 |