--- cci/usr/src/lib/fpcc/table.c 2019/07/28 12:24:19 1.1.1.1 +++ cci/usr/src/lib/fpcc/table.c 2019/07/28 12:24:50 1.1.1.2 @@ -55,6 +55,13 @@ SCONV, INAREG|INTAREG|FORCC, NAREG|NASL, RESC1|RESCC, " ldZL AL\n cvZLl A1\n", +/* cast to longer types */ +SCONV, INAREG|INTAREG|FORCC, + SAREG|AWD, TCHAR, + SANY, TUSHORT, + NAREG|NASL, RESC1|RESCC, + " cvtbw AL,A1\n andl2 $0xffff,A1\n", + /* casts to shorter types */ SCONV, INAREG|INTAREG|FORCC, SAREG|SCON, ANYFIXED, @@ -508,9 +515,15 @@ OPLTYPE, FORCC, OPLTYPE, FORCC, SANY, TANY, - SAREG|AWD, TFLOAT|TDOUBLE, + SAREG|AWD, TFLOAT, + 0, RESCC, + " ldf AR\n tstf\n", + +OPLTYPE, FORCC, + SANY, TANY, + SAREG|AWD, TDOUBLE, 0, RESCC, - " tstl AR\n", + " ldd AR\n tstd\n", OPLTYPE, FORCC, SANY, TANY, @@ -621,26 +634,26 @@ ASG DIV, INAREG|FOREFF|FORCC, /* should " tstZL AL\n", ASG DIV, INAREG|FOREFF|FORCC, - SAREG|AWD, TUNSIGNED, - SAREG|AWD, TWORD, - 3*NAREG|NEVEN, RLEFT|RESCC, - "ZM OE AR,A1,A2,A3\n movl A2,AL\n", + SAREG|AWD, TUCHAR|TUSHORT, + SAREG|AWD, TUCHAR|TUSHORT, + 2*NAREG, RLEFT|RESC1|RESCC, + "ZX OL2 A2,A1\n cvtlZL A1,AL\n", ASG DIV, INAREG|FOREFF|FORCC, - SAREG|AWD, TUSHORT|TUCHAR, SAREG|AWD, TWORD, - NAREG|NASL, RLEFT|RESC1|RESCC, - " movzZLl AL,A1\n OL2 AR,A1\n cvtlZL A1,AL\n", + SAREG|AWD, TUNSIGNED, + 3*NAREG|NEVEN, RLEFT|RESCC, + "ZM OE AR,A1,A2,A3\n movl A2,AL\n", DIV, INAREG|INTAREG|FORCC, - SAREG|AWD, TUSHORT|TUCHAR, - SAREG|AWD, TWORD, - NAREG|NASL, RESC1|RESCC, - " movzZLl AL,A1\n OL2 AR,A1\n", + SAREG|AWD, TUCHAR|TUSHORT, + SAREG|AWD, TUCHAR|TUSHORT, + 2*NAREG, RESC1|RESCC, + "ZX OL2 A2,A1\n", DIV, INAREG|INTAREG|FORCC, - SAREG|AWD, TUNSIGNED, SAREG|AWD, TWORD, + SAREG|AWD, TUNSIGNED, 3*NAREG|NEVEN, RESC2|RESCC, "ZM OE AR,A1,A2,A3\n", @@ -674,42 +687,71 @@ MOD, INAREG|INTAREG, 3*NAREG|NEVEN, RESC3, "ZM OE AR,A1,A2,A3\n", -ASG OPMUL, INAREG|FOREFF|FORCC, - SAREG|AWD, TINT, - SAREG|AWD, TINT, - 0, RLEFT|RESCC, - " OL2 AR,AL\n", +ASG MUL, INAREG|FOREFF|FORCC, + SAREG|AWD, TCHAR|TUCHAR, + SAREG|AWD, TCHAR|TUCHAR, + 2*NAREG, RLEFT|RESCC, + "ZX OL2 A2,A1\n cvtlb A1,AL\n", + +ASG MUL, INAREG|FOREFF|FORCC, + SAREG|AWD, TUNSIGNED, + SAREG|AWD, TUNSIGNED|TINT, + NAREG|NEVEN, RLEFT|RESCC, + " emul AR,AL,$0,A1\n movl U1,AL\n", + +ASG MUL, INAREG|FOREFF|FORCC, + SAREG|AWD, TUNSIGNED|TINT, + SAREG|AWD, TUNSIGNED, + NAREG|NEVEN, RLEFT|RESCC, + " emul AR,AL,$0,A1\n movl U1,AL\n", ASG OPMUL, INAREG|FOREFF|FORCC, SAREG|AWD, TWORD, SAREG|AWD, TWORD, + 0, RLEFT|RESCC, + " OL2 AR,AL\n", + +MUL, INAREG|INTAREG|FORCC, + STAREG, TUNSIGNED, + SAREG|AWD, TUNSIGNED|TINT, NAREG|NEVEN, RLEFT|RESCC, " emul AR,AL,$0,A1\n movl U1,AL\n", +MUL, INAREG|INTAREG|FORCC, + STAREG, TUNSIGNED|TINT, + SAREG|AWD, TUNSIGNED, + NAREG|NEVEN, RLEFT|RESCC, + " emul AR,AL,$0,A1\n movl U1,AL\n", OPMUL, INAREG|INTAREG|FORCC, - STAREG, TINT, - SAREG|AWD, TINT, + STAREG, TWORD, + SAREG|AWD, TWORD, 0, RLEFT|RESCC, " OL2 AR,AL\n", -OPMUL, INAREG|INTAREG|FORCC, - STAREG, TWORD, - SAREG|AWD, TWORD, - NAREG|NEVEN, RLEFT|RESCC, - " emul AR,AL,$0,A1\n movl U1,AL\n", +MUL, INAREG|INTAREG|FORCC, + SAREG|AWD, TCHAR|TUCHAR, + SAREG|AWD, TCHAR|TUCHAR, + 2*NAREG, RESC1|RESCC, + "ZX mull2 A2,A1\n", -OPMUL, INAREG|INTAREG|FORCC, - SAREG|AWD, TINT, - SAREG|AWD, TINT, - NAREG|NASL|NASR, RESC1|RESCC, - " OL3 AR,AL,A1\n", +MUL, INAREG|INTAREG|FORCC, + SAREG|AWD, TUNSIGNED, + SAREG|AWD, TUNSIGNED|TINT, + NAREG|NEVEN, RESC1|RESCC, + " emul AR,AL,$0,A1\n movl U1,A1\n", + +MUL, INAREG|INTAREG|FORCC, + SAREG|AWD, TUNSIGNED|TINT, + SAREG|AWD, TUNSIGNED, + NAREG|NEVEN, RESC1|RESCC, + " emul AR,AL,$0,A1\n movl U1,A1\n", OPMUL, INAREG|INTAREG|FORCC, SAREG|AWD, TWORD, SAREG|AWD, TWORD, - NAREG|NEVEN, RESC1|RESCC, - " emul AR,AL,$0,A1\n movl U1,A1\n", + NAREG|NASL|NASR, RESC1|RESCC, + " OL3 AR,AL,A1\n", ASG PLUS, INAREG|FOREFF|FORCC, SAREG, TWORD, @@ -835,7 +877,7 @@ OPSIMP, INAREG|INTAREG, SAREG, TFLOAT|TDOUBLE, SZERO, TANY, 0, RLEFT, - "", + "T", OPSIMP, INAREG|INTAREG|FORCC, AWD, TFLOAT, @@ -868,6 +910,12 @@ OPFLOAT, INAREG|INTAREG|FORCC, " ldf AL\n OF AR\n stf TA1\n", OPFLOAT, INAREG|INTAREG|FORCC, + SZERO, TANY, + SAREG|AWD, TDOUBLE, + NAREG, RESC1|RESCC, + "\tclrl\tA1\n\tclrl\tU1\n\tldd\tA1\n\tOD\tAR\n\tstd\tA1\n", + +OPFLOAT, INAREG|INTAREG|FORCC, SAREG|AWD, TDOUBLE, SAREG|AWD, TDOUBLE, NAREG|NASL|NASR, RESC1|RESCC,