117740Sralph #ifndef lint 2*32974Sdonn static char *sccsid ="@(#)table.c 1.30 (Berkeley) 12/11/87"; 317740Sralph #endif lint 417740Sralph 518558Sralph # include "pass2.h" 69705Slinton 79705Slinton # define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG 89705Slinton # define AWD SNAME|SOREG|SCON|STARNM|STARREG 99705Slinton /* tbl */ 109705Slinton # define ANYSIGNED TPOINT|TINT|TLONG|TSHORT|TCHAR 119705Slinton # define ANYUSIGNED TUNSIGNED|TULONG|TUSHORT|TUCHAR 129705Slinton # define ANYFIXED ANYSIGNED|ANYUSIGNED 139705Slinton # define TWORD TINT|TUNSIGNED|TPOINT|TLONG|TULONG 149705Slinton # define NIAWD SNAME|SCON|STARNM 159705Slinton /* tbl */ 169705Slinton 179705Slinton struct optab table[] = { 189705Slinton 199705Slinton /* the following entry is to fix a problem with 209705Slinton the manner that the first pass handles the 219705Slinton type of a shift expression */ 229705Slinton PCONV, INAREG|INTAREG, 239705Slinton SAREG|AWD, TINT|TUNSIGNED, 249705Slinton SANY, TPOINT, 259705Slinton NAREG|NASL, RLEFT, 269705Slinton "", 279705Slinton 2817740Sralph #if defined(FORT) || defined(SPRECC) 299705Slinton SCONV, INTAREG|FORCC, 3016182Sralph SAREG|AWD, TDOUBLE, 3116182Sralph SANY, TFLOAT, 3216182Sralph NAREG|NASL, RESC1|RESCC, 3316182Sralph " cvtdf AL,A1\n", 349705Slinton 359705Slinton SCONV, INTAREG|FORCC, 3625753Sdonn SAREG|AWD, ANYSIGNED, 379705Slinton SANY, TFLOAT, 389705Slinton NAREG|NASL, RESC1|RESCC, 399705Slinton " cvtZLf AL,TA1\n", 409705Slinton #endif 419705Slinton 4219934Smckusick /* take care of redundant conversions introduced by reclaim() */ 4319934Smckusick SCONV, INTAREG, 4419934Smckusick STAREG, TWORD, 4519934Smckusick SANY, TWORD, 4619934Smckusick 0, RLEFT, 4719934Smckusick "", 4819934Smckusick 4932971Sdonn SCONV, INTAREG, 5032971Sdonn STAREG, TDOUBLE, 5132971Sdonn SANY, TDOUBLE, 5232971Sdonn 0, RLEFT, 5332971Sdonn "", 5432971Sdonn 559705Slinton SCONV, INTAREG|FORCC, 5616182Sralph SAREG|AWD, TANY, 579705Slinton SANY, TANY, 589705Slinton NAREG|NASL, RESC1|RESCC, 5916182Sralph " ZA\n", 609705Slinton 6132970Sdonn SCONV, FORARG, 6232970Sdonn SAREG|AWD, TANY, 6332970Sdonn SANY, TANY, 6432973Sdonn NAREG|NASL, RNULL, 6532970Sdonn " ZV\n", 6632970Sdonn 679705Slinton INIT, FOREFF, 689705Slinton SCON, TANY, 699705Slinton SANY, TWORD, 709705Slinton 0, RNOP, 719705Slinton " .long CL\n", 729705Slinton 739705Slinton INIT, FOREFF, 749705Slinton SCON, TANY, 759705Slinton SANY, TSHORT|TUSHORT, 769705Slinton 0, RNOP, 779705Slinton " .word CL\n", 789705Slinton 799705Slinton INIT, FOREFF, 809705Slinton SCON, TANY, 819705Slinton SANY, TCHAR|TUCHAR, 829705Slinton 0, RNOP, 839705Slinton " .byte CL\n", 849705Slinton 8532971Sdonn #ifdef FORT 869705Slinton /* for the use of fortran only */ 879705Slinton 889705Slinton GOTO, FOREFF, 899705Slinton SCON, TANY, 909705Slinton SANY, TANY, 919705Slinton 0, RNOP, 929705Slinton " jbr CL\n", 9332971Sdonn #endif 949705Slinton 959705Slinton GOTO, FOREFF, 9617740Sralph SNAME|SOREG, TANY, 979705Slinton SANY, TANY, 989705Slinton 0, RNOP, 999705Slinton " jmp *AL\n", 1009705Slinton 1019705Slinton GOTO, FOREFF, 1029705Slinton SAREG, TANY, 1039705Slinton SANY, TANY, 1049705Slinton 0, RNOP, 1059705Slinton " jmp (AL)\n", 1069705Slinton 1079705Slinton STARG, FORARG, 1089705Slinton SCON|SOREG, TANY, 1099705Slinton SANY, TANY, 1109705Slinton 0, RNULL, 1119705Slinton " subl2 ZT,sp\nZS", 1129705Slinton 1139705Slinton STASG, FOREFF, 1149705Slinton SNAME|SOREG, TANY, 1159705Slinton SCON|SAREG, TANY, 1169705Slinton 0, RNOP, 1179705Slinton "ZS", 1189705Slinton 1199705Slinton STASG, INAREG, 1209705Slinton SNAME|SOREG, TANY, 1219705Slinton SCON, TANY, 1229705Slinton NAREG, RESC1, 1239705Slinton "ZS movl AR,A1\n", 1249705Slinton 1259705Slinton STASG, INAREG, 1269705Slinton SNAME|SOREG, TANY, 1279705Slinton SAREG, TANY, 1289705Slinton 0, RRIGHT, 1299705Slinton " pushl AR\nZS movl (sp)+,AR\n", 1309705Slinton 1319705Slinton FLD, INAREG|INTAREG, 1329705Slinton SANY, TANY, 1339705Slinton SFLD, ANYSIGNED, 1349705Slinton NAREG|NASR, RESC1, 1359705Slinton " extv $H,$S,AR,A1\n", 1369705Slinton 1379705Slinton FLD, INAREG|INTAREG, 1389705Slinton SANY, TANY, 1399705Slinton SFLD, ANYUSIGNED, 1409705Slinton NAREG|NASR, RESC1, 1419705Slinton " extzv $H,$S,AR,A1\n", 1429705Slinton 1439705Slinton FLD, FORARG, 1449705Slinton SANY, TANY, 1459705Slinton SFLD, ANYSIGNED, 1469705Slinton 0, RNULL, 1479705Slinton " extv $H,$S,AR,-(sp)\n", 1489705Slinton 1499705Slinton FLD, FORARG, 1509705Slinton SANY, TANY, 1519705Slinton SFLD, ANYUSIGNED, 1529705Slinton 0, RNULL, 1539705Slinton " extzv $H,$S,AR,-(sp)\n", 1549705Slinton 1559705Slinton OPLOG, FORCC, 1569705Slinton SAREG|AWD, TWORD, 1579705Slinton SAREG|AWD, TWORD, 1589705Slinton 0, RESCC, 1599705Slinton " cmpl AL,AR\nZP", 1609705Slinton 1619705Slinton OPLOG, FORCC, 16219934Smckusick SAREG|AWD, TSHORT, 16319934Smckusick SAREG|AWD, TSHORT, 1649705Slinton 0, RESCC, 1659705Slinton " cmpw AL,AR\nZP", 1669705Slinton 1679705Slinton OPLOG, FORCC, 16819934Smckusick SAREG|AWD, TUSHORT, 16919934Smckusick SAREG|AWD, TUSHORT, 1709705Slinton 0, RESCC, 17119934Smckusick " cmpw AL,AR\nZP", 17219934Smckusick 17319934Smckusick OPLOG, FORCC, 17419934Smckusick SAREG|AWD, TCHAR, 17519934Smckusick SAREG|AWD, TCHAR, 17619934Smckusick 0, RESCC, 1779705Slinton " cmpb AL,AR\nZP", 1789705Slinton 1799705Slinton OPLOG, FORCC, 18019934Smckusick SAREG|AWD, TUCHAR, 18119934Smckusick SAREG|AWD, TUCHAR, 18219934Smckusick 0, RESCC, 18319934Smckusick " cmpb AL,AR\nZP", 18419934Smckusick 18532971Sdonn /* optim2() handles degenerate comparisons with constants */ 18619934Smckusick OPLOG, FORCC, 18732971Sdonn SAREG|AWD, TCHAR|TUCHAR|TSHORT|TUSHORT, 18832971Sdonn SCON, ANYFIXED, 1899705Slinton 0, RESCC, 19032971Sdonn " cmpZL AL,AR\nZP", 1919705Slinton 1929705Slinton OPLOG, FORCC, 1939705Slinton SAREG|AWD, TDOUBLE, 1949705Slinton SAREG|AWD, TDOUBLE, 1959705Slinton 0, RESCC, 1969705Slinton " cmpd AL,AR\nZP", 1979705Slinton 1989705Slinton OPLOG, FORCC, 1999705Slinton SAREG|AWD, TFLOAT, 2009705Slinton SAREG|AWD, TFLOAT, 2019705Slinton 0, RESCC, 2029705Slinton " cmpf AL,AR\nZP", 2039705Slinton 2049705Slinton CCODES, INAREG|INTAREG, 2059705Slinton SANY, TANY, 2069705Slinton SANY, TANY, 2079705Slinton NAREG, RESC1, 2089705Slinton " movl $1,A1\nZN", 2099705Slinton 2109705Slinton UNARY CALL, INTAREG, 2119705Slinton SCON, TANY, 21216182Sralph SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE, 21316182Sralph NAREG|NASL, RESC1, 21416182Sralph " calls ZC,CL\n", 21516182Sralph 21616182Sralph UNARY CALL, INTAREG, 2179705Slinton SAREG, TANY, 2189705Slinton SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE, 2199705Slinton NAREG|NASL, RESC1, /* should be 0 */ 2209705Slinton " calls ZC,(AL)\n", 2219705Slinton 2229705Slinton UNARY CALL, INAREG|INTAREG, 2239705Slinton SNAME, TANY, 2249705Slinton SANY, TANY, 2259705Slinton NAREG|NASL, RESC1, /* really reg 0 */ 2269705Slinton " calls ZC,*AL\n", 2279705Slinton 2289705Slinton UNARY CALL, INAREG|INTAREG, 2299705Slinton SSOREG, TANY, 2309705Slinton SANY, TANY, 2319705Slinton NAREG|NASL, RESC1, /* really reg 0 */ 2329705Slinton " calls ZC,*AL\n", 2339705Slinton 2349705Slinton ASG RS, INAREG|FOREFF|FORCC, 2359705Slinton SAREG, TWORD, 23632964Sdonn SCON, TINT|TUNSIGNED, 2379705Slinton 0, RLEFT|RESCC, 2389705Slinton " extzv AR,ZU,AL,AL\n", 2399705Slinton 2409705Slinton ASG RS, INAREG|FOREFF|FORCC, 2419705Slinton SAREG, TWORD, 2429705Slinton SAREG, ANYFIXED, 2439705Slinton NAREG, RLEFT|RESCC, 2449705Slinton " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n", 2459705Slinton 2469705Slinton ASG RS, INAREG|FOREFF|FORCC, 2479705Slinton SAREG, TWORD, 2489705Slinton SAREG|AWD, TWORD, 2499705Slinton NAREG, RLEFT|RESCC, 2509705Slinton " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n", 2519705Slinton 2529705Slinton RS, INAREG|INTAREG|FORCC, 2539705Slinton SAREG, TWORD, 25432964Sdonn SCON, TINT|TUNSIGNED, 2559705Slinton NAREG|NASL, RESC1|RESCC, 2569705Slinton " extzv AR,ZU,AL,A1\n", 2579705Slinton 2589705Slinton ASG LS, INAREG|FOREFF|FORCC, 2599705Slinton SAREG|AWD, TWORD, 2609705Slinton SAREG|NIAWD, ANYSIGNED|ANYUSIGNED, 2619705Slinton 0, RLEFT|RESCC, 2629705Slinton " ashl AR,AL,AL\n", 2639705Slinton 2649705Slinton ASG LS, INAREG|FOREFF|FORCC, 2659705Slinton SAREG|AWD, TWORD, 2669705Slinton SSOREG, ANYSIGNED|ANYUSIGNED, 2679705Slinton 0, RLEFT|RESCC, 2689705Slinton " ashl AR,AL,AL\n", 2699705Slinton 2709705Slinton ASG LS, INAREG|FOREFF|FORCC, 2719705Slinton SAREG|AWD, TWORD, 2729705Slinton SOREG, ANYSIGNED|ANYUSIGNED, 2739705Slinton NAREG, RLEFT|RESCC, 2749705Slinton " ZB AR,A1\n ashl A1,AL,AL\n", 2759705Slinton 2769705Slinton LS, INAREG|INTAREG|FORCC, 2779705Slinton SAREG|AWD, TWORD, 2789705Slinton SAREG|NIAWD, ANYSIGNED|ANYUSIGNED, 2799705Slinton NAREG|NASL|NASR, RESC1|RESCC, 2809705Slinton " ashl AR,AL,A1\n", 2819705Slinton 2829705Slinton LS, INAREG|INTAREG|FORCC, 2839705Slinton SAREG|AWD, TWORD, 2849705Slinton SSOREG, ANYSIGNED|ANYUSIGNED, 2859705Slinton NAREG|NASL|NASR, RESC1|RESCC, 2869705Slinton " ashl AR,AL,A1\n", 2879705Slinton 2889705Slinton LS, INAREG|INTAREG|FORCC, 2899705Slinton SAREG|AWD, TWORD, 2909705Slinton SOREG, ANYSIGNED|ANYUSIGNED, 2919705Slinton NAREG|NASR, RESC1|RESCC, 2929705Slinton " ZB AR,A1\n ashl A1,AL,A1\n", 2939705Slinton 2949705Slinton INCR, FOREFF, 29532971Sdonn SAREG|AWD, TANY, 29632969Sdonn SCON|SNAME, TANY, 2979705Slinton 0, RLEFT, 2989705Slinton " ZE\n", 2999705Slinton 3009705Slinton DECR, FOREFF, 30132971Sdonn SAREG|AWD, TANY, 30232969Sdonn SCON|SNAME, TANY, 3039705Slinton 0, RLEFT, 3049705Slinton " ZE\n", 3059705Slinton 3069705Slinton INCR, INAREG|INTAREG, 30732971Sdonn SAREG|AWD, TANY, 30832969Sdonn SCON|SNAME, TANY, 3099705Slinton NAREG, RESC1, 3109705Slinton " ZD\n", 3119705Slinton 3129705Slinton DECR, INAREG|INTAREG, 31332971Sdonn SAREG|AWD, TANY, 31432969Sdonn SCON|SNAME, TANY, 3159705Slinton NAREG, RESC1, 3169705Slinton " ZD\n", 3179705Slinton 3189705Slinton ASSIGN, INAREG|FOREFF|FORCC, 31932973Sdonn SAREG|AWD, TFLOAT|TDOUBLE, 32032973Sdonn SAREG|AWD, TUCHAR|TUSHORT, 32132973Sdonn NAREG|NASL, RLEFT|RESCC, 32232973Sdonn " ZA\n", 32332973Sdonn 32432973Sdonn ASSIGN, INAREG|FOREFF|FORCC, 3259705Slinton SAREG|AWD, TANY, 3269705Slinton SAREG|AWD, TANY, 32725582Sbloom 0, RLEFT|RESCC, 3289705Slinton " ZA\n", 3299705Slinton 33032958Sdonn ASSIGN, FOREFF, 3319705Slinton SFLD, TANY, 3329705Slinton SAREG|AWD, TWORD, 33332958Sdonn 0, RNOP, 3349705Slinton " insv AR,$H,$S,AL\n", 3359705Slinton 33632958Sdonn ASSIGN, INAREG, 33732960Sdonn SFLD, ANYSIGNED, 33832958Sdonn SAREG|AWD, TWORD, 33932958Sdonn NAREG, RESC1, 34032958Sdonn " insv AR,$H,$S,AL\n extv $H,$S,AL,A1\n", 34132958Sdonn 34232960Sdonn ASSIGN, INAREG, 34332960Sdonn SFLD, ANYUSIGNED, 34432960Sdonn SAREG|AWD, TWORD, 34532960Sdonn NAREG, RESC1, 34632960Sdonn " insv AR,$H,$S,AL\n extzv $H,$S,AL,A1\n", 34732960Sdonn 3489705Slinton ASSIGN, INAREG|FOREFF|FORCC, 3499705Slinton SAREG|AWD, TWORD, 3509705Slinton SFLD, ANYSIGNED, 3519705Slinton 0, RLEFT|RESCC, 3529705Slinton " extv $H,$S,AR,AL\n", 3539705Slinton 3549705Slinton ASSIGN, INAREG|FOREFF|FORCC, 3559705Slinton SAREG|AWD, TWORD, 3569705Slinton SFLD, ANYUSIGNED, 3579705Slinton 0, RLEFT|RESCC, 3589705Slinton " extzv $H,$S,AR,AL\n", 3599705Slinton 3609705Slinton /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */ 3619705Slinton UNARY MUL, FOREFF, 3629705Slinton SCC, TANY, 3639705Slinton SCC, TANY, 3649705Slinton 0, RNULL, 3659705Slinton " HELP HELP HELP\n", 3669705Slinton 36732959Sdonn OREG, INTEMP, 36832959Sdonn SANY, TANY, 36932959Sdonn SOREG, TDOUBLE, 37032959Sdonn 2*NTEMP, RESC1, 37132971Sdonn " movq AR,A1\n", 37232959Sdonn 37332959Sdonn OREG, INTEMP, 37432959Sdonn SANY, TANY, 37532959Sdonn SOREG, TANY, 37632959Sdonn NTEMP, RESC1, 37732959Sdonn " movZF AR,A1\n", 37832959Sdonn 3799705Slinton REG, INTEMP, 3809705Slinton SANY, TANY, 3819705Slinton SAREG, TDOUBLE, 3829705Slinton 2*NTEMP, RESC1, 38332971Sdonn " movq AR,A1\n", 3849705Slinton 3859705Slinton REG, INTEMP, 3869705Slinton SANY, TANY, 3879705Slinton SAREG, TANY, 3889705Slinton NTEMP, RESC1, 3899705Slinton " movZF AR,A1\n", 3909705Slinton 39117740Sralph #if defined(FORT) || defined(SPRECC) 39217740Sralph REG, FORARG, 3939705Slinton SANY, TANY, 3949705Slinton SAREG, TFLOAT, 3959705Slinton 0, RNULL, 3969705Slinton " cvtfd AR,-(sp)\n", 3979705Slinton 3989705Slinton REG, FORARG, 3999705Slinton SANY, TANY, 4009705Slinton SAREG, TDOUBLE, 4019705Slinton 0, RNULL, 40232971Sdonn " movq AR,-(sp)\n", 4039705Slinton #endif 4049705Slinton 4059705Slinton OPLEAF, FOREFF, 4069705Slinton SANY, TANY, 4079705Slinton SAREG|AWD, TANY, 4089705Slinton 0, RLEFT, 4099705Slinton "", 4109705Slinton 4119705Slinton OPLTYPE, INAREG|INTAREG, 4129705Slinton SANY, TANY, 4139705Slinton SANY, TANY, 4149705Slinton NAREG|NASR, RESC1, 4159705Slinton " ZA\n", 4169705Slinton 4179705Slinton OPLTYPE, FORCC, 4189705Slinton SANY, TANY, 4199705Slinton SANY, TANY, 4209705Slinton 0, RESCC, 4219705Slinton " tstZR AR\n", 4229705Slinton 4239705Slinton OPLTYPE, FORARG, 4249705Slinton SANY, TANY, 4259705Slinton SANY, TANY, 4269705Slinton 0, RNULL, 42732970Sdonn " ZV\n", 4289705Slinton 42917740Sralph #if defined(FORT) || defined(SPRECC) 4309705Slinton UNARY MINUS, INTAREG|FORCC, 43124417Smckusick SAREG|AWD, TFLOAT, 43216182Sralph SANY, TANY, 43316182Sralph NAREG|NASL, RESC1|RESCC, 43416182Sralph " mnegZL TAL,A1\n", 43516182Sralph 43624417Smckusick #endif 43716182Sralph 43816182Sralph UNARY MINUS, INTAREG|FORCC, 43932971Sdonn SAREG|AWD, TWORD|TDOUBLE, 4409705Slinton SANY, TANY, 4419705Slinton NAREG|NASL, RESC1|RESCC, 4429705Slinton " mnegZL AL,A1\n", 4439705Slinton 4449705Slinton COMPL, INTAREG|FORCC, 44532971Sdonn SAREG|AWD, TWORD, 4469705Slinton SANY, TANY, 4479705Slinton NAREG|NASL, RESC1|RESCC, 4489705Slinton " mcomZL AL,A1\n", 4499705Slinton 4509705Slinton AND, FORCC, 45132971Sdonn SAREG|AWD, TCHAR|TSHORT, 45232971Sdonn SCON, ANYFIXED, 45332971Sdonn NAREG|NASL, RESCC, 45432971Sdonn " ZZ\n", 4559705Slinton 4569705Slinton AND, FORCC, 45732971Sdonn SAREG|AWD, TWORD|ANYUSIGNED, 45832971Sdonn SCON, ANYFIXED, 4599705Slinton 0, RESCC, 46032971Sdonn " ZZ\n", 4619705Slinton 4629705Slinton ASG AND, INAREG|FOREFF|FORCC, 4639705Slinton SAREG, TWORD, 4649705Slinton SCON, TWORD, 4659705Slinton 0, RLEFT|RESCC, 4669705Slinton " bicl2 AR,AL\n", 4679705Slinton 46832971Sdonn /* General cases for DIV and ASG DIV are handled below with OPMUL */ 46932971Sdonn /* Some special cases are handled in optim2() */ 47032971Sdonn 47132962Sdonn DIV, INAREG|FOREFF|FORCC, 47232962Sdonn SAREG|AWD, TUNSIGNED|TULONG, 47332967Sdonn SCON, ANYUSIGNED, 47432962Sdonn NAREG|NEVEN, RESC1|RESCC, 47532963Sdonn " movl AL,A1\n clrl U1\n ediv AR,A1,A1,U1\n", 47632962Sdonn 47732962Sdonn ASG DIV, INAREG|FOREFF|FORCC, 47832971Sdonn SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, 47932967Sdonn SMCON, ANYUSIGNED, 48032962Sdonn 0, RLEFT|RESCC, 48132962Sdonn " ZJ\n", 48232962Sdonn 48332962Sdonn ASG DIV, INAREG|FOREFF|FORCC, 48432971Sdonn SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, 48532967Sdonn SCON, ANYUSIGNED, 48632962Sdonn NAREG|NEVEN, RLEFT|RESCC, 48732963Sdonn " movl AL,A1\n clrl U1\n ediv AR,A1,AL,U1\n", 48832962Sdonn 48932962Sdonn MOD, INAREG|INTAREG, 49032962Sdonn SAREG|AWD, TINT|TLONG, 49132962Sdonn SAREG|AWD, TINT|TLONG, 49232962Sdonn NAREG, RESC1, 49332962Sdonn " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n", 49432962Sdonn 49532962Sdonn MOD, INAREG|FOREFF, 49632962Sdonn SAREG|AWD, TUNSIGNED|TULONG, 49732967Sdonn SMCON, ANYUSIGNED, 49832962Sdonn NAREG|NASL, RLEFT|RESC1, 49932962Sdonn " ZJ\n", 50032962Sdonn 50132962Sdonn MOD, INAREG|FOREFF, 50232962Sdonn SAREG|AWD, TUNSIGNED|TULONG, 50332967Sdonn SCON, ANYUSIGNED, 50432971Sdonn NAREG|NEVEN, RESC1, 50532963Sdonn " movl AL,A1\n clrl U1\n ediv AR,A1,U1,A1\n", 50632962Sdonn 50732967Sdonn /* should only see UNSIGNED lhs here if converted from UCHAR/USHORT lhs */ 50832967Sdonn ASG MOD, INAREG|FOREFF|FORCC, 50932967Sdonn SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, 51032962Sdonn SAREG|AWD, TINT|TLONG, 51132962Sdonn NAREG, RLEFT|RESCC, 51232962Sdonn " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n", 51332962Sdonn 51432962Sdonn ASG MOD, INAREG|FOREFF, 51532971Sdonn SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, 51632967Sdonn SMCON, ANYUSIGNED, 51732971Sdonn 0, RLEFT, 51832962Sdonn " ZJ\n", 51932962Sdonn 52032962Sdonn ASG MOD, INAREG|FOREFF, 52132971Sdonn SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG, 52232967Sdonn SCON, ANYUSIGNED, 52332971Sdonn NAREG|NEVEN, RLEFT, 52432963Sdonn " movl AL,A1\n clrl U1\n ediv AR,A1,A1,AL\n", 52532962Sdonn 5269705Slinton ASG OPMUL, INAREG|FOREFF|FORCC, 5279705Slinton SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 5289705Slinton SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 5299705Slinton 0, RLEFT|RESCC, 5309705Slinton " OL2 AR,AL\n", 5319705Slinton 5329705Slinton OPMUL, INAREG|INTAREG|FORCC, 5339705Slinton STAREG, TINT|TUNSIGNED|TLONG|TULONG, 5349705Slinton SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 5359705Slinton 0, RLEFT|RESCC, 5369705Slinton " OL2 AR,AL\n", 5379705Slinton 5389705Slinton OPMUL, INAREG|INTAREG|FORCC, 5399705Slinton SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 5409705Slinton SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG, 5419705Slinton NAREG|NASL|NASR, RESC1|RESCC, 5429705Slinton " OL3 AR,AL,A1\n", 5439705Slinton 5449705Slinton ASG PLUS, INAREG|FOREFF|FORCC, 54532971Sdonn SAREG|AWD, ANYFIXED, 54632971Sdonn SONE, TANY, 5479705Slinton 0, RLEFT|RESCC, 5489705Slinton " incZL AL\n", 5499705Slinton 5509705Slinton ASG MINUS, INAREG|FOREFF|FORCC, 55132971Sdonn SAREG|AWD, ANYFIXED, 55232971Sdonn SONE, TANY, 5539705Slinton 0, RLEFT|RESCC, 5549705Slinton " decZL AL\n", 5559705Slinton 5569705Slinton PLUS, INAREG|INTAREG|FORCC, 5579705Slinton STAREG, TWORD, 5589705Slinton SONE, TWORD, 5599705Slinton 0, RLEFT|RESCC, 5609705Slinton " incZL AL\n", 5619705Slinton 5629705Slinton MINUS, INAREG|INTAREG|FORCC, 5639705Slinton STAREG, TWORD, 5649705Slinton SONE, TWORD, 5659705Slinton 0, RLEFT|RESCC, 5669705Slinton " decZL AL\n", 5679705Slinton 5689705Slinton ASG OPSIMP, INAREG|FOREFF|FORCC, 5699705Slinton SAREG|AWD, TWORD, 5709705Slinton SAREG|AWD, TWORD, 5719705Slinton 0, RLEFT|RESCC, 5729705Slinton " OL2 AR,AL\n", 5739705Slinton 5749705Slinton ASG OPSIMP, INAREG|FOREFF|FORCC, 5759705Slinton AWD, TSHORT|TUSHORT, 57632971Sdonn SAREG|SNAME|STARNM, TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG, 5779705Slinton 0, RLEFT|RESCC, 5789705Slinton " OW2 AR,AL\n", 5799705Slinton 5809705Slinton ASG OPSIMP, INAREG|FOREFF|FORCC, 5819705Slinton AWD, TSHORT|TUSHORT, 58232971Sdonn SSOREG, TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG, 5839705Slinton 0, RLEFT|RESCC, 5849705Slinton " OW2 AR,AL\n", 5859705Slinton 5869705Slinton ASG OPSIMP, INAREG|FOREFF|FORCC, 58732961Sdonn AWD, TSHORT|TUSHORT, 58832961Sdonn SSCON, ANYFIXED, 58932961Sdonn 0, RLEFT|RESCC, 59032961Sdonn " OW2 AR,AL\n", 59132961Sdonn 59232961Sdonn ASG OPSIMP, INAREG|FOREFF|FORCC, 59332961Sdonn AWD, TSHORT|TUSHORT, 59432961Sdonn AWD, TSHORT|TUSHORT, 59532961Sdonn 0, RLEFT|RESCC, 59632961Sdonn " OW2 AR,AL\n", 59732961Sdonn 59832961Sdonn ASG OPSIMP, INAREG|FOREFF|FORCC, 5999705Slinton AWD, TCHAR|TUCHAR, 60032961Sdonn SSOREG, ANYFIXED, 6019705Slinton 0, RLEFT|RESCC, 6029705Slinton " OB2 AR,AL\n", 6039705Slinton 6049705Slinton ASG OPSIMP, INAREG|FOREFF|FORCC, 6059705Slinton AWD, TCHAR|TUCHAR, 60632961Sdonn SAREG|SNAME|STARNM, ANYFIXED, 6079705Slinton 0, RLEFT|RESCC, 6089705Slinton " OB2 AR,AL\n", 6099705Slinton 6109705Slinton ASG OPSIMP, INAREG|FOREFF|FORCC, 61132961Sdonn AWD, TCHAR|TUCHAR, 61232961Sdonn SCCON, ANYFIXED, 61332961Sdonn 0, RLEFT|RESCC, 61432961Sdonn " OB2 AR,AL\n", 61532961Sdonn 61632961Sdonn ASG OPSIMP, INAREG|FOREFF|FORCC, 61732961Sdonn AWD, TCHAR|TUCHAR, 61832961Sdonn AWD, TCHAR|TUCHAR, 61932961Sdonn 0, RLEFT|RESCC, 62032961Sdonn " OB2 AR,AL\n", 62132961Sdonn 6229705Slinton OPSIMP, INAREG|INTAREG|FORCC, 6239705Slinton STAREG, ANYFIXED, 6249705Slinton SAREG|AWD, TWORD, 6259705Slinton 0, RLEFT|RESCC, 6269705Slinton " OL2 AR,AL\n", 6279705Slinton 6289705Slinton OPSIMP, INAREG|INTAREG|FORCC, 6299705Slinton SAREG|AWD, TWORD, 6309705Slinton SAREG|AWD, TWORD, 6319705Slinton NAREG|NASL|NASR, RESC1|RESCC, 6329705Slinton " OL3 AR,AL,A1\n", 6339705Slinton 6349705Slinton ASG OPFLOAT, INAREG|FOREFF|FORCC, 6359705Slinton SAREG|AWD, TDOUBLE, 6369705Slinton SAREG|AWD, TDOUBLE, 6379705Slinton 0, RLEFT|RESCC, 6389705Slinton " OD2 AR,AL\n", 6399705Slinton 6409705Slinton ASG OPFLOAT, INAREG|FOREFF|FORCC, 6419705Slinton SAREG|AWD, TFLOAT, 6429705Slinton SAREG|AWD, TFLOAT, 6439705Slinton 0, RLEFT|RESCC, 64417740Sralph #if defined(FORT) || defined(SPRECC) 64516937Sralph " OF2 AR,TAL\n", 64616937Sralph #else 6479705Slinton " OF2 AR,AL\n", 64816937Sralph #endif 6499705Slinton 6509705Slinton ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC, 6519705Slinton SAREG|AWD, TFLOAT, 6529705Slinton SAREG|AWD, TDOUBLE, 6539705Slinton NAREG, RLEFT|RESC1|RESCC, 6549705Slinton " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n", 6559705Slinton 65625753Sdonn ASG OPFLOAT, INAREG|FOREFF|FORCC, 65725753Sdonn SAREG|AWD, ANYFIXED, 65825753Sdonn #ifndef SPRECC 65925753Sdonn SAREG|AWD, TDOUBLE, /* force FLOAT to register */ 66025753Sdonn #else 66125753Sdonn SAREG|AWD, TFLOAT|TDOUBLE, 66225753Sdonn #endif 66325753Sdonn NAREG, RLEFT|RESCC, /* usable() knows we need a reg pair */ 66425753Sdonn " ZG\n", 66525753Sdonn 6669705Slinton OPFLOAT, INAREG|INTAREG|FORCC, 6679705Slinton STAREG, TDOUBLE, 6689705Slinton SAREG|AWD, TDOUBLE, 6699705Slinton 0, RLEFT|RESCC, 6709705Slinton " OD2 AR,AL\n", 6719705Slinton 6729705Slinton OPFLOAT, INAREG|INTAREG|FORCC, 6739705Slinton SAREG|AWD, TDOUBLE, 6749705Slinton SAREG|AWD, TDOUBLE, 6759705Slinton NAREG|NASL|NASR, RESC1|RESCC, 6769705Slinton " OD3 AR,AL,A1\n", 6779705Slinton 67817740Sralph #if defined(FORT) || defined(SPRECC) 6799705Slinton OPFLOAT, INAREG|INTAREG|FORCC, 68016937Sralph STAREG, TFLOAT, 68116937Sralph SAREG|AWD, TFLOAT, 6829705Slinton 0, RLEFT|RESCC, 68316937Sralph " OF2 AR,TAL\n", 6849705Slinton 6859705Slinton OPFLOAT, INAREG|INTAREG|FORCC, 6869705Slinton SAREG|AWD, TFLOAT, 6879705Slinton SAREG|AWD, TFLOAT, 6889705Slinton NAREG|NASL|NASR, RESC1|RESCC, 6899705Slinton " OF3 AR,AL,TA1\n", 6909705Slinton #endif 6919705Slinton 692*32974Sdonn #ifdef FORT 693*32974Sdonn /* perform some implicit conversions XXX SHOULD FIX f77 FRONT END */ 694*32974Sdonn OPFLOAT, INAREG|INTAREG|FORCC, 695*32974Sdonn SAREG|AWD, TFLOAT, 696*32974Sdonn SAREG|AWD, TDOUBLE, 697*32974Sdonn NAREG|NASL, RESC1|RESCC, 698*32974Sdonn " cvtfd AL,A1\n OD2 AR,A1\n", 699*32974Sdonn 700*32974Sdonn OPFLOAT, INAREG|INTAREG|FORCC, 701*32974Sdonn SAREG|AWD, TDOUBLE, 702*32974Sdonn SAREG|AWD, TFLOAT, 703*32974Sdonn NAREG|NASR, RESC1|RESCC, 704*32974Sdonn " cvtfd AR,A1\n OD3 A1,AL,A1\n", 705*32974Sdonn #endif 706*32974Sdonn 7079705Slinton /* Default actions for hard trees ... */ 7089705Slinton 7099705Slinton # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,"" 7109705Slinton 7119705Slinton UNARY MUL, DF( UNARY MUL ), 7129705Slinton 7139705Slinton INCR, DF(INCR), 7149705Slinton 7159705Slinton DECR, DF(INCR), 7169705Slinton 7179705Slinton ASSIGN, DF(ASSIGN), 7189705Slinton 7199705Slinton STASG, DF(STASG), 7209705Slinton 7219705Slinton FLD, DF(FLD), 7229705Slinton 7239705Slinton OPLEAF, DF(NAME), 7249705Slinton 7259705Slinton OPLOG, FORCC, 7269705Slinton SANY, TANY, 7279705Slinton SANY, TANY, 7289705Slinton REWRITE, BITYPE, 7299705Slinton "", 7309705Slinton 7319705Slinton OPLOG, DF(NOT), 7329705Slinton 7339705Slinton COMOP, DF(COMOP), 7349705Slinton 7359705Slinton INIT, DF(INIT), 7369705Slinton 7379705Slinton OPUNARY, DF(UNARY MINUS), 7389705Slinton 7399705Slinton ASG OPANY, DF(ASG PLUS), 7409705Slinton 7419705Slinton OPANY, DF(BITYPE), 7429705Slinton 7439705Slinton FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" }; 744