aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-10-11 05:25:55 +0000
committerRichard Stallman <rms@gnu.org>1992-10-11 05:25:55 +0000
commit61fcaf9e42ce0fe7abc5aef429f18e0ea99f16c3 (patch)
tree2a9f72ba88d887e7646169fdb4951e33a6eb884b
parentc2fb3f5754b79756008a1af7983efa99a54f764a (diff)
downloadgcc-61fcaf9e42ce0fe7abc5aef429f18e0ea99f16c3.zip
gcc-61fcaf9e42ce0fe7abc5aef429f18e0ea99f16c3.tar.gz
gcc-61fcaf9e42ce0fe7abc5aef429f18e0ea99f16c3.tar.bz2
(PRINT_OPERAND): Define new code, D.
From-SVN: r2394
-rw-r--r--gcc/config/vax/vax.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h
index 9198525..6cbc39d 100644
--- a/gcc/config/vax/vax.h
+++ b/gcc/config/vax/vax.h
@@ -1188,6 +1188,7 @@ VAX operand formatting codes:
letter print
C reverse branch condition
+ D 64-bit immediate operand
B the low 8 bits of the complement of a constant operand
H the low 16 bits of the complement of a constant operand
M a mask for the N highest bits of a word
@@ -1198,6 +1199,10 @@ VAX operand formatting codes:
h the low 16 bits of a negated constant operand
# 'd' or 'g' depending on whether dfloat or gfloat is used */
+/* The purpose of D is to get around a quirk or bug in vax assembler
+ whereby -1 in a 64-bit immediate operand means 0x00000000ffffffff,
+ which is not a 64-bit minus one. */
+
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \
((CODE) == '#')
@@ -1206,6 +1211,8 @@ VAX operand formatting codes:
if (CODE == '#') fputc (ASM_DOUBLE_CHAR, FILE); \
else if (CODE == 'C') \
fputs (rev_cond_name (X), FILE); \
+ else if (CODE == 'D' && GET_CODE (X) == CONST_INT && INTVAL (X) < 0) \
+ fprintf (FILE, "0xffffffff%08x", INTVAL (X)); \
else if (CODE == 'P' && GET_CODE (X) == CONST_INT) \
fprintf (FILE, "$%d", INTVAL (X) + 1); \
else if (CODE == 'N' && GET_CODE (X) == CONST_INT) \