sign-extension corrections (from donn@utah-cs)
[unix-history] / usr / src / old / pcc / ccom.vax / table.c
index 0ac57ff..5e97215 100644 (file)
@@ -1,5 +1,8 @@
-static char *sccsid ="@(#)table.c      1.1 (Berkeley) %G%";
-# include "mfile2"
+#ifndef lint
+static char *sccsid ="@(#)table.c      1.9 (Berkeley) %G%";
+#endif lint
+
+# include "pass2.h"
 
 # define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG
 # define AWD SNAME|SOREG|SCON|STARNM|STARREG
 
 # define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG
 # define AWD SNAME|SOREG|SCON|STARNM|STARREG
@@ -34,15 +37,15 @@ PCONV,      INAREG|INTAREG,
                NAREG|NASL,     RLEFT,
                "",
 
                NAREG|NASL,     RLEFT,
                "",
 
+#if defined(FORT) || defined(SPRECC)
 SCONV, INTAREG|FORCC,
 SCONV, INTAREG|FORCC,
-       SAREG,  TDOUBLE,
-       SANY,   TDOUBLE,
-               0,      RLEFT,
-               "",
+       SAREG|AWD,      TDOUBLE,
+       SANY,   TFLOAT,
+               NAREG|NASL,     RESC1|RESCC,
+               "       cvtdf   AL,A1\n",
 
 
-#ifdef FORT
 SCONV, INTAREG|FORCC,
 SCONV, INTAREG|FORCC,
-       SAREG|AWD,      ANYSIGNED|TUNSIGNED|TULONG|TFLOAT,
+       SAREG|AWD,      ANYSIGNED|TUNSIGNED|TULONG,
        SANY,   TFLOAT,
                NAREG|NASL,     RESC1|RESCC,
                "       cvtZLf  AL,TA1\n",
        SANY,   TFLOAT,
                NAREG|NASL,     RESC1|RESCC,
                "       cvtZLf  AL,TA1\n",
@@ -54,12 +57,6 @@ SCONV,       INTAREG|FORCC,
                "       movzZLl AL,A1\n cvtlf   A1,TA1\n",
 #endif
 
                "       movzZLl AL,A1\n cvtlf   A1,TA1\n",
 #endif
 
-SCONV, INTAREG|FORCC,
-       SAREG|AWD,      ANYSIGNED|TUNSIGNED|TULONG|TFLOAT,
-       SANY,   TFLOAT|TDOUBLE,
-               NAREG|NASL,     RESC1|RESCC,
-               "       cvtZLd  AL,A1\n",
-
 SCONV, INTAREG|FORCC,
        SAREG|AWD,      TUCHAR|TUSHORT,
        SANY,   TFLOAT|TDOUBLE,
 SCONV, INTAREG|FORCC,
        SAREG|AWD,      TUCHAR|TUSHORT,
        SANY,   TFLOAT|TDOUBLE,
@@ -67,34 +64,10 @@ SCONV,      INTAREG|FORCC,
                "       movzZLl AL,A1\n cvtld   A1,A1\n",
 
 SCONV, INTAREG|FORCC,
                "       movzZLl AL,A1\n cvtld   A1,A1\n",
 
 SCONV, INTAREG|FORCC,
-       SAREG|AWD,      TFLOAT|TDOUBLE,
-       SANY,   ANYFIXED,
-               NAREG|NASL,     RESC1|RESCC,
-               "       cvtZLZF AL,A1\n",
-
-SCONV, INTAREG|FORCC,
-       SAREG|SNAME|SCON|STARNM,        TANY,
-       SANY,   ANYUSIGNED,
-               NAREG|NASL,     RESC1|RESCC,
-               "       movzZRl AL,A1\n",
-
-SCONV, INTAREG|FORCC,
-       SSOREG, TANY,
-       SANY,   ANYUSIGNED,
-               NAREG|NASL,     RESC1|RESCC,
-               "       movzZRl AL,A1\n",
-
-SCONV, INTAREG|FORCC,
-       SAREG|SNAME|SCON|STARNM,        TANY,
-       SANY,   TANY,
-               NAREG|NASL,     RESC1|RESCC,
-               "       cvtZRl  AL,A1\n",
-
-SCONV, INTAREG|FORCC,
-       SSOREG, TANY,
+       SAREG|AWD,      TANY,
        SANY,   TANY,
                NAREG|NASL,     RESC1|RESCC,
        SANY,   TANY,
                NAREG|NASL,     RESC1|RESCC,
-               "       cvtZRl  AL,A1\n",
+               "       ZA\n",
 
 
 INIT,  FOREFF,
 
 
 INIT,  FOREFF,
@@ -124,7 +97,7 @@ GOTO,        FOREFF,
                "       jbr     CL\n",
 
 GOTO,  FOREFF,
                "       jbr     CL\n",
 
 GOTO,  FOREFF,
-       AWD,    TANY,
+       SNAME|SOREG,    TANY,
        SANY,   TANY,
                0,      RNOP,
                "       jmp     *AL\n",
        SANY,   TANY,
                0,      RNOP,
                "       jmp     *AL\n",
@@ -138,12 +111,6 @@ GOTO,      FOREFF,
 STARG, FORARG,
        SCON|SOREG,     TANY,
        SANY,   TANY,
 STARG, FORARG,
        SCON|SOREG,     TANY,
        SANY,   TANY,
-               NTEMP+2*NAREG,  RESC3,
-               "ZS",
-
-STASG, FORARG,
-       SNAME|SOREG,    TANY,
-       SCON|SAREG,     TANY,
                0,      RNULL,
                "       subl2   ZT,sp\nZS",
 
                0,      RNULL,
                "       subl2   ZT,sp\nZS",
 
@@ -252,7 +219,7 @@ CCODES,     INAREG|INTAREG,
 UNARY CALL,    INTAREG,
        SCON,   TANY,
        SANY,   TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
 UNARY CALL,    INTAREG,
        SCON,   TANY,
        SANY,   TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
-               NAREG|NASL,     RESC1, /* should be register 0 */
+               NAREG|NASL,     RESC1,
                "       calls   ZC,CL\n",
 
 UNARY CALL,    INTAREG,
                "       calls   ZC,CL\n",
 
 UNARY CALL,    INTAREG,
@@ -383,6 +350,18 @@ DECR,      INAREG|INTAREG,
                NAREG,  RESC1,
                "       ZD\n",
 
                NAREG,  RESC1,
                "       ZD\n",
 
+ASSIGN,        INAREG|FOREFF|FORCC,
+       SAREG|AWD,      TDOUBLE,
+       SAREG|AWD,      TUCHAR|TUSHORT,
+               NAREG|NASR,     RLEFT|RESCC,
+               "       movzZRl AR,A1\n cvtld   A1,AL\n",
+
+ASSIGN,        INAREG|FOREFF|FORCC,
+       SAREG|AWD,      TFLOAT,
+       SAREG|AWD,      TUCHAR|TUSHORT,
+               NAREG|NASR,     RLEFT|RESCC,
+               "       movzZRl AR,A1\n cvtlf   A1,AL\n",
+
 ASSIGN,        INAREG|FOREFF|FORCC,
        SAREG|AWD,      TANY,
        SAREG|AWD,      TANY,
 ASSIGN,        INAREG|FOREFF|FORCC,
        SAREG|AWD,      TANY,
        SAREG|AWD,      TANY,
@@ -426,8 +405,8 @@ REG,        INTEMP,
                NTEMP,  RESC1,
                "       movZF   AR,A1\n",
 
                NTEMP,  RESC1,
                "       movZF   AR,A1\n",
 
-#ifdef FORT
- REG,  FORARG,
+#if defined(FORT) || defined(SPRECC)
+REG,   FORARG,
        SANY,   TANY,
        SAREG,  TFLOAT,
                0,      RNULL,
        SANY,   TANY,
        SAREG,  TFLOAT,
                0,      RNULL,
@@ -446,12 +425,6 @@ OPLEAF,    FOREFF,
                0,      RLEFT,
                "",
 
                0,      RLEFT,
                "",
 
-OPLTYPE,       INAREG|INTAREG,
-       SANY,   TANY,
-       SANY,   TFLOAT|TDOUBLE,
-               2*NAREG|NASR,   RESC1,
-               "       ZA\n",
-
 OPLTYPE,       INAREG|INTAREG,
        SANY,   TANY,
        SANY,   TANY,
 OPLTYPE,       INAREG|INTAREG,
        SANY,   TANY,
        SANY,   TANY,
@@ -494,11 +467,21 @@ OPLTYPE,  FORARG,
                0,      RNULL,
                "       cvtfd   AR,-(sp)\n",
 
                0,      RNULL,
                "       cvtfd   AR,-(sp)\n",
 
+#if defined(FORT) || defined(SPRECC)
+UNARY MINUS,   INTAREG|FORCC,
+       SAREG|AWD,      TINT|TUNSIGNED|TLONG|TULONG|TFLOAT|TDOUBLE,
+       SANY,   TANY,
+               NAREG|NASL,     RESC1|RESCC,
+               "       mnegZL  TAL,A1\n",
+
+#else
+
 UNARY MINUS,   INTAREG|FORCC,
        SAREG|AWD,      TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
        SANY,   TANY,
                NAREG|NASL,     RESC1|RESCC,
                "       mnegZL  AL,A1\n",
 UNARY MINUS,   INTAREG|FORCC,
        SAREG|AWD,      TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
        SANY,   TANY,
                NAREG|NASL,     RESC1|RESCC,
                "       mnegZL  AL,A1\n",
+#endif
 
 COMPL, INTAREG|FORCC,
        SAREG|AWD,      TINT|TUNSIGNED,
 
 COMPL, INTAREG|FORCC,
        SAREG|AWD,      TINT|TUNSIGNED,
@@ -732,7 +715,11 @@ ASG OPFLOAT,       INAREG|FOREFF|FORCC,
        SAREG|AWD,      TFLOAT,
        SAREG|AWD,      TFLOAT,
                0,      RLEFT|RESCC,
        SAREG|AWD,      TFLOAT,
        SAREG|AWD,      TFLOAT,
                0,      RLEFT|RESCC,
+#if defined(FORT) || defined(SPRECC)
+               "       OF2     AR,TAL\n",
+#else
                "       OF2     AR,AL\n",
                "       OF2     AR,AL\n",
+#endif
 
 ASG OPFLOAT,   INAREG|FOREFF|FORCC,
        SAREG|AWD,      TDOUBLE,
 
 ASG OPFLOAT,   INAREG|FOREFF|FORCC,
        SAREG|AWD,      TDOUBLE,
@@ -770,25 +757,18 @@ OPFLOAT,  INAREG|INTAREG|FORCC,
                NAREG|NASR,     RESC1|RESCC,
                "       cvtfd   AR,A1\n OD3     A1,AL,A1\n",
 
                NAREG|NASR,     RESC1|RESCC,
                "       cvtfd   AR,A1\n OD3     A1,AL,A1\n",
 
-#ifdef FORT
+#if defined(FORT) || defined(SPRECC)
 OPFLOAT,       INAREG|INTAREG|FORCC,
 OPFLOAT,       INAREG|INTAREG|FORCC,
-       STAREG, TFLOAT,
-    SAREG|AWD,  TFLOAT,
+       STAREG,         TFLOAT,
+       SAREG|AWD,      TFLOAT,
                0,      RLEFT|RESCC,
                0,      RLEFT|RESCC,
-               "       OF2     TAR,AL\n",
+               "       OF2     AR,TAL\n",
 
 OPFLOAT,       INAREG|INTAREG|FORCC,
        SAREG|AWD,      TFLOAT,
        SAREG|AWD,      TFLOAT,
                NAREG|NASL|NASR,        RESC1|RESCC,
                "       OF3     AR,AL,TA1\n",
 
 OPFLOAT,       INAREG|INTAREG|FORCC,
        SAREG|AWD,      TFLOAT,
        SAREG|AWD,      TFLOAT,
                NAREG|NASL|NASR,        RESC1|RESCC,
                "       OF3     AR,AL,TA1\n",
-
-#else
-OPFLOAT,       INAREG|INTAREG|FORCC,
-       SAREG|AWD,      TFLOAT,
-       SAREG|AWD,      TFLOAT,
-               NAREG|NASL|NASR,        RESC1|RESCC,
-               "       OF3     AR,AL,A1\n      cvtfd   A1,A1\n",
 #endif
 
        /* Default actions for hard trees ... */
 #endif
 
        /* Default actions for hard trees ... */