Mercurial > hg > CbC > CbC_gcc
comparison gcc/rtl.def @ 132:d34655255c78
update gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 10:21:07 +0900 |
parents | 84e7813d76e9 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
130:e108057fa461 | 132:d34655255c78 |
---|---|
1 /* This file contains the definitions and documentation for the | 1 /* This file contains the definitions and documentation for the |
2 Register Transfer Expressions (rtx's) that make up the | 2 Register Transfer Expressions (rtx's) that make up the |
3 Register Transfer Language (rtl) used in the Back End of the GNU compiler. | 3 Register Transfer Language (rtl) used in the Back End of the GNU compiler. |
4 Copyright (C) 1987-2017 Free Software Foundation, Inc. | 4 Copyright (C) 1987-2018 Free Software Foundation, Inc. |
5 | 5 |
6 This file is part of GCC. | 6 This file is part of GCC. |
7 | 7 |
8 GCC is free software; you can redistribute it and/or modify it under | 8 GCC is free software; you can redistribute it and/or modify it under |
9 the terms of the GNU General Public License as published by the Free | 9 the terms of the GNU General Public License as published by the Free |
310 CLOBBER can not appear as an operand of other rtx except for PARALLEL. | 310 CLOBBER can not appear as an operand of other rtx except for PARALLEL. |
311 CLOBBER of a hard register appearing by itself (not within PARALLEL) | 311 CLOBBER of a hard register appearing by itself (not within PARALLEL) |
312 is considered undeletable before reload. */ | 312 is considered undeletable before reload. */ |
313 DEF_RTL_EXPR(CLOBBER, "clobber", "e", RTX_EXTRA) | 313 DEF_RTL_EXPR(CLOBBER, "clobber", "e", RTX_EXTRA) |
314 | 314 |
315 /* Indicate that the upper parts of something are clobbered in a way that we | |
316 don't want to explain. The MODE references the lower bits that will be | |
317 preserved. Anything above that size will be clobbered. | |
318 | |
319 CLOBBER_HIGH only occurs as the operand of a PARALLEL rtx. It cannot appear | |
320 in other contexts, and unlike CLOBBER, it cannot appear on its own. | |
321 CLOBBER_HIGH can only be used with fixed register rtxes. */ | |
322 | |
323 DEF_RTL_EXPR(CLOBBER_HIGH, "clobber_high", "e", RTX_EXTRA) | |
324 | |
315 /* Call a subroutine. | 325 /* Call a subroutine. |
316 Operand 1 is the address to call. | 326 Operand 1 is the address to call. |
317 Operand 2 is the number of arguments. */ | 327 Operand 2 is the number of arguments. */ |
318 | 328 |
319 DEF_RTL_EXPR(CALL, "call", "ee", RTX_EXTRA) | 329 DEF_RTL_EXPR(CALL, "call", "ee", RTX_EXTRA) |
345 /* numeric integer constant */ | 355 /* numeric integer constant */ |
346 DEF_RTL_EXPR(CONST_INT, "const_int", "w", RTX_CONST_OBJ) | 356 DEF_RTL_EXPR(CONST_INT, "const_int", "w", RTX_CONST_OBJ) |
347 | 357 |
348 /* numeric integer constant */ | 358 /* numeric integer constant */ |
349 DEF_RTL_EXPR(CONST_WIDE_INT, "const_wide_int", "", RTX_CONST_OBJ) | 359 DEF_RTL_EXPR(CONST_WIDE_INT, "const_wide_int", "", RTX_CONST_OBJ) |
360 | |
361 /* An rtx representation of a poly_wide_int. */ | |
362 DEF_RTL_EXPR(CONST_POLY_INT, "const_poly_int", "", RTX_CONST_OBJ) | |
350 | 363 |
351 /* fixed-point constant */ | 364 /* fixed-point constant */ |
352 DEF_RTL_EXPR(CONST_FIXED, "const_fixed", "www", RTX_CONST_OBJ) | 365 DEF_RTL_EXPR(CONST_FIXED, "const_fixed", "www", RTX_CONST_OBJ) |
353 | 366 |
354 /* numeric floating point or integer constant. If the mode is | 367 /* numeric floating point or integer constant. If the mode is |
389 needed, in which case it can remain a SCRATCH. */ | 402 needed, in which case it can remain a SCRATCH. */ |
390 DEF_RTL_EXPR(SCRATCH, "scratch", "", RTX_OBJ) | 403 DEF_RTL_EXPR(SCRATCH, "scratch", "", RTX_OBJ) |
391 | 404 |
392 /* A reference to a part of another value. The first operand is the | 405 /* A reference to a part of another value. The first operand is the |
393 complete value and the second is the byte offset of the selected part. */ | 406 complete value and the second is the byte offset of the selected part. */ |
394 DEF_RTL_EXPR(SUBREG, "subreg", "ei", RTX_EXTRA) | 407 DEF_RTL_EXPR(SUBREG, "subreg", "ep", RTX_EXTRA) |
395 | 408 |
396 /* This one-argument rtx is used for move instructions | 409 /* This one-argument rtx is used for move instructions |
397 that are guaranteed to alter only the low part of a destination. | 410 that are guaranteed to alter only the low part of a destination. |
398 Thus, (SET (SUBREG:HI (REG...)) (MEM:HI ...)) | 411 Thus, (SET (SUBREG:HI (REG...)) (MEM:HI ...)) |
399 has an unspecified effect on the high part of REG, | 412 has an unspecified effect on the high part of REG, |
708 duplicating the input values. The output vector mode must have the same | 721 duplicating the input values. The output vector mode must have the same |
709 submodes as the input vector mode, and the number of output parts must be | 722 submodes as the input vector mode, and the number of output parts must be |
710 an integer multiple of the number of input parts. */ | 723 an integer multiple of the number of input parts. */ |
711 DEF_RTL_EXPR(VEC_DUPLICATE, "vec_duplicate", "e", RTX_UNARY) | 724 DEF_RTL_EXPR(VEC_DUPLICATE, "vec_duplicate", "e", RTX_UNARY) |
712 | 725 |
726 /* Creation of a vector in which element I has the value BASE + I * STEP, | |
727 where BASE is the first operand and STEP is the second. The result | |
728 must have a vector integer mode. */ | |
729 DEF_RTL_EXPR(VEC_SERIES, "vec_series", "ee", RTX_BIN_ARITH) | |
730 | |
713 /* Addition with signed saturation */ | 731 /* Addition with signed saturation */ |
714 DEF_RTL_EXPR(SS_PLUS, "ss_plus", "ee", RTX_COMM_ARITH) | 732 DEF_RTL_EXPR(SS_PLUS, "ss_plus", "ee", RTX_COMM_ARITH) |
715 | 733 |
716 /* Addition with unsigned saturation */ | 734 /* Addition with unsigned saturation */ |
717 DEF_RTL_EXPR(US_PLUS, "us_plus", "ee", RTX_COMM_ARITH) | 735 DEF_RTL_EXPR(US_PLUS, "us_plus", "ee", RTX_COMM_ARITH) |
758 DEF_RTL_EXPR(ENTRY_VALUE, "entry_value", "0", RTX_OBJ) | 776 DEF_RTL_EXPR(ENTRY_VALUE, "entry_value", "0", RTX_OBJ) |
759 | 777 |
760 /* Used in VAR_LOCATION for a reference to a parameter that has | 778 /* Used in VAR_LOCATION for a reference to a parameter that has |
761 been optimized away completely. */ | 779 been optimized away completely. */ |
762 DEF_RTL_EXPR(DEBUG_PARAMETER_REF, "debug_parameter_ref", "t", RTX_OBJ) | 780 DEF_RTL_EXPR(DEBUG_PARAMETER_REF, "debug_parameter_ref", "t", RTX_OBJ) |
781 | |
782 /* Used in marker DEBUG_INSNs to avoid being recognized as an insn. */ | |
783 DEF_RTL_EXPR(DEBUG_MARKER, "debug_marker", "", RTX_EXTRA) | |
763 | 784 |
764 /* All expressions from this point forward appear only in machine | 785 /* All expressions from this point forward appear only in machine |
765 descriptions. */ | 786 descriptions. */ |
766 #ifdef GENERATOR_FILE | 787 #ifdef GENERATOR_FILE |
767 | 788 |
1287 attribute name and the second is the comparison value. */ | 1308 attribute name and the second is the comparison value. */ |
1288 DEF_RTL_EXPR(EQ_ATTR, "eq_attr", "ss", RTX_EXTRA) | 1309 DEF_RTL_EXPR(EQ_ATTR, "eq_attr", "ss", RTX_EXTRA) |
1289 | 1310 |
1290 /* A special case of the above representing a set of alternatives. The first | 1311 /* A special case of the above representing a set of alternatives. The first |
1291 operand is bitmap of the set, the second one is the default value. */ | 1312 operand is bitmap of the set, the second one is the default value. */ |
1292 DEF_RTL_EXPR(EQ_ATTR_ALT, "eq_attr_alt", "ii", RTX_EXTRA) | 1313 DEF_RTL_EXPR(EQ_ATTR_ALT, "eq_attr_alt", "ww", RTX_EXTRA) |
1293 | 1314 |
1294 /* A conditional expression which is true if the specified flag is | 1315 /* A conditional expression which is true if the specified flag is |
1295 true for the insn being scheduled in reorg. | 1316 true for the insn being scheduled in reorg. |
1296 | 1317 |
1297 genattr.c defines the following flags which can be tested by | 1318 genattr.c defines the following flags which can be tested by |