aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-08-24 14:40:24 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-08-24 14:40:24 -0700
commit0551c32d8bd642833f411c7cea2b870b3d87a70d (patch)
tree918cbf3582921819ef884152684496a332c4558c /gcc/stmt.c
parent7c866fb5223248c7f8ebf7bb462da9e765557f20 (diff)
downloadgcc-0551c32d8bd642833f411c7cea2b870b3d87a70d.zip
gcc-0551c32d8bd642833f411c7cea2b870b3d87a70d.tar.gz
gcc-0551c32d8bd642833f411c7cea2b870b3d87a70d.tar.bz2
stmt.c (expand_asm_operands): Treat EXTRA_CONSTRAINT like g or X.
* stmt.c (expand_asm_operands): Treat EXTRA_CONSTRAINT like g or X. * config/ia64/ia64-protos.h: Update. * config/ia64/ia64.c (gr_register_operand): New. (fr_register_operand, grfr_register_operand): New. (gr_nonimmediate_operand, grfr_nonimmediate_operand): New. (grfr_reg_or_8bit_operand): New. (gr_reg_or_0_operand): Rename from reg_or_0_operand and use gr_register_operand. (gr_reg_or_5bit_operand, gr_reg_or_6bit_operand): Likewise. (gr_reg_or_8bit_operand, gr_reg_or_8bit_adjusted_operand): Likewise. (gr_reg_or_8bit_and_adjusted_operand): Likewise. (gr_reg_or_14bit_operand, gr_reg_or_22bit_operand): Likewise. (fr_reg_or_fp01_operand): Likewise. (not_postinc_memory_operand): New. (ia64_split_timode): Remove unused variables. (rtx_needs_barrier): Check arguments to cmpxchg. (builtin_description): Remove. (bdesc_2argsi, bdesc_2argdi): Remove. (ia64_init_builtins): Declare all builtins directly. (ia64_expand_fetch_and_op): Rewrite to be called from ia64_expand_builtin directly. Use expand_binop and co. (ia64_expand_op_and_fetch): Likewise. (ia64_expand_compare_and_swap): Likewise. (ia64_expand_binop_builtin): Remove. (ia64_expand_lock_test_and_set): New. (ia64_expand_lock_release): New. (ia64_expand_builtin): Use them. * config/ia64/ia64.h (CONSTRAINT_OK_FOR_S): New. (EXTRA_CONSTRAINT): Use it. (PREDICATE_CODES): Update. * config/ia64/ia64.md (*): Use gr_register_operand and co. (mf): Indicate that we set memory as well as use it. (fetchadd_acq_si): Show memory being modified as well. (fetchadd_acq_di, cmpxchg_acq_si, cmpxchg_acq_di): Likewise. (val_compare_and_swap_si, val_compare_and_swap_di): Remove. (lock_test_and_set_si, lock_test_and_set_di): Remove. (fetch_and_add_si, fetch_and_sub_si, fetch_and_or_si): Remove. (fetch_and_and_si, fetch_and_xor_si, fetch_and_nand_si): Remove. (fetch_and_add_di, fetch_and_sub_di, fetch_and_or_di): Remove. (fetch_and_and_di, fetch_and_xor_di, fetch_and_nand_di): Remove. (add_and_fetch_di, sub_and_fetch_di, or_and_fetch_di): Remove. (and_and_fetch_di, xor_and_fetch_di, nand_and_fetch_di): Remove. (add_and_fetch_si, sub_and_fetch_si, or_and_fetch_si): Remove. (and_and_fetch_si, xor_and_fetch_si, nand_and_fetch_si): Remove. * config/ia64/ia64intrin.h (*): Cast result to the appropriate return type. Pretty print definitions. From-SVN: r35956
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 2d7566e..d0dbb9e 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -1489,9 +1489,6 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
case 's': case 'i': case 'n':
case 'I': case 'J': case 'K': case 'L': case 'M':
case 'N': case 'O': case 'P': case ',':
-#ifdef EXTRA_CONSTRAINT
- case 'Q': case 'R': case 'S': case 'T': case 'U':
-#endif
break;
case '0': case '1': case '2': case '3': case '4':
@@ -1511,6 +1508,9 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
break;
case 'g': case 'X':
+#ifdef EXTRA_CONSTRAINT
+ case 'Q': case 'R': case 'S': case 'T': case 'U':
+#endif
allows_reg = 1;
allows_mem = 1;
break;
@@ -1643,13 +1643,10 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
case '<': case '>':
case '?': case '!': case '*':
- case 'E': case 'F': case 'G': case 'H': case 'X':
+ case 'E': case 'F': case 'G': case 'H':
case 's': case 'i': case 'n':
case 'I': case 'J': case 'K': case 'L': case 'M':
case 'N': case 'O': case 'P': case ',':
-#ifdef EXTRA_CONSTRAINT
- case 'Q': case 'R': case 'S': case 'T': case 'U':
-#endif
break;
/* Whether or not a numeric constraint allows a register is
@@ -1688,7 +1685,11 @@ expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line)
allows_reg = 1;
break;
- case 'g':
+ case 'g': case 'X':
+#ifdef EXTRA_CONSTRAINT
+ case 'Q': case 'R': case 'S': case 'T': case 'U':
+#endif
+
allows_reg = 1;
allows_mem = 1;
break;