Commit Sh2E addition

This commit is contained in:
Nick Clifton
2003-02-06 10:42:33 +00:00
parent 070afcf86f
commit 2bc8946db8
2 changed files with 32 additions and 24 deletions

View File

@ -1,3 +1,11 @@
2003-01-23 Nick Clifton <nickc@redhat.com>
* Add sh2e support:
2002-04-02 Alexandre Oliva <aoliva@redhat.com>
* sh/gencode.c: Replace sh3e with sh2e except in fsqrt.
2002-08-24 Geoffrey Keating <geoffk@redhat.com> 2002-08-24 Geoffrey Keating <geoffk@redhat.com>
* MAINTAINERS: Update my email address. * MAINTAINERS: Update my email address.

View File

@ -226,22 +226,22 @@ op tab[] =
"R[n] = (R[m] & 0xffff);", "R[n] = (R[m] & 0xffff);",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fabs <FREG_N>", "1111nnnn01011101", { "", "", "fabs <FREG_N>", "1111nnnn01011101",
"FP_UNARY (n, fabs);", "FP_UNARY (n, fabs);",
"/* FIXME: FR(n) &= 0x7fffffff; */", "/* FIXME: FR(n) &= 0x7fffffff; */",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fadd <FREG_M>,<FREG_N>", "1111nnnnmmmm0000", { "", "", "fadd <FREG_M>,<FREG_N>", "1111nnnnmmmm0000",
"FP_OP (n, +, m);", "FP_OP (n, +, m);",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fcmp/eq <FREG_M>,<FREG_N>", "1111nnnnmmmm0100", { "", "", "fcmp/eq <FREG_M>,<FREG_N>", "1111nnnnmmmm0100",
"FP_CMP (n, ==, m);", "FP_CMP (n, ==, m);",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fcmp/gt <FREG_M>,<FREG_N>", "1111nnnnmmmm0101", { "", "", "fcmp/gt <FREG_M>,<FREG_N>", "1111nnnnmmmm0101",
"FP_CMP (n, >, m);", "FP_CMP (n, >, m);",
}, },
@ -278,7 +278,7 @@ op tab[] =
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fdiv <FREG_M>,<FREG_N>", "1111nnnnmmmm0011", { "", "", "fdiv <FREG_M>,<FREG_N>", "1111nnnnmmmm0011",
"FP_OP (n, /, m);", "FP_OP (n, /, m);",
"/* FIXME: check for DP and (n & 1) == 0? */", "/* FIXME: check for DP and (n & 1) == 0? */",
@ -291,19 +291,19 @@ op tab[] =
"/* FIXME: check for DP and (n & 1) == 0? */", "/* FIXME: check for DP and (n & 1) == 0? */",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fldi0 <FREG_N>", "1111nnnn10001101", { "", "", "fldi0 <FREG_N>", "1111nnnn10001101",
"SET_FR (n, (float)0.0);", "SET_FR (n, (float)0.0);",
"/* FIXME: check for DP and (n & 1) == 0? */", "/* FIXME: check for DP and (n & 1) == 0? */",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fldi1 <FREG_N>", "1111nnnn10011101", { "", "", "fldi1 <FREG_N>", "1111nnnn10011101",
"SET_FR (n, (float)1.0);", "SET_FR (n, (float)1.0);",
"/* FIXME: check for DP and (n & 1) == 0? */", "/* FIXME: check for DP and (n & 1) == 0? */",
}, },
/* sh3e */ /* sh2e */
{ "", "", "flds <FREG_N>,FPUL", "1111nnnn00011101", { "", "", "flds <FREG_N>,FPUL", "1111nnnn00011101",
" union", " union",
" {", " {",
@ -314,7 +314,7 @@ op tab[] =
" FPUL = u.i;", " FPUL = u.i;",
}, },
/* sh3e */ /* sh2e */
{ "", "", "float FPUL,<FREG_N>", "1111nnnn00101101", { "", "", "float FPUL,<FREG_N>", "1111nnnn00101101",
/* sh4 */ /* sh4 */
"if (FPSCR_PR)", "if (FPSCR_PR)",
@ -325,13 +325,13 @@ op tab[] =
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmac <FREG_0>,<FREG_M>,<FREG_N>", "1111nnnnmmmm1110", { "", "", "fmac <FREG_0>,<FREG_M>,<FREG_N>", "1111nnnnmmmm1110",
"SET_FR (n, FR(m) * FR(0) + FR(n));", "SET_FR (n, FR(m) * FR(0) + FR(n));",
"/* FIXME: check for DP and (n & 1) == 0? */", "/* FIXME: check for DP and (n & 1) == 0? */",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmov <FREG_M>,<FREG_N>", "1111nnnnmmmm1100", { "", "", "fmov <FREG_M>,<FREG_N>", "1111nnnnmmmm1100",
/* sh4 */ /* sh4 */
"if (FPSCR_SZ) {", "if (FPSCR_SZ) {",
@ -345,7 +345,7 @@ op tab[] =
" SET_FR (n, FR (m));", " SET_FR (n, FR (m));",
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmov.s <FREG_M>,@<REG_N>", "1111nnnnmmmm1010", { "", "", "fmov.s <FREG_M>,@<REG_N>", "1111nnnnmmmm1010",
/* sh4 */ /* sh4 */
"if (FPSCR_SZ) {", "if (FPSCR_SZ) {",
@ -358,7 +358,7 @@ op tab[] =
" WLAT (R[n], FI(m));", " WLAT (R[n], FI(m));",
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmov.s @<REG_M>,<FREG_N>", "1111nnnnmmmm1000", { "", "", "fmov.s @<REG_M>,<FREG_N>", "1111nnnnmmmm1000",
/* sh4 */ /* sh4 */
"if (FPSCR_SZ) {", "if (FPSCR_SZ) {",
@ -371,7 +371,7 @@ op tab[] =
" SET_FI(n, RLAT(R[m]));", " SET_FI(n, RLAT(R[m]));",
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmov.s @<REG_M>+,<FREG_N>", "1111nnnnmmmm1001", { "", "", "fmov.s @<REG_M>+,<FREG_N>", "1111nnnnmmmm1001",
/* sh4 */ /* sh4 */
"if (FPSCR_SZ) {", "if (FPSCR_SZ) {",
@ -386,7 +386,7 @@ op tab[] =
" R[m] += 4;", " R[m] += 4;",
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmov.s <FREG_M>,@-<REG_N>", "1111nnnnmmmm1011", { "", "", "fmov.s <FREG_M>,@-<REG_N>", "1111nnnnmmmm1011",
/* sh4 */ /* sh4 */
"if (FPSCR_SZ) {", "if (FPSCR_SZ) {",
@ -401,7 +401,7 @@ op tab[] =
" WLAT (R[n], FI(m));", " WLAT (R[n], FI(m));",
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmov.s @(R0,<REG_M>),<FREG_N>", "1111nnnnmmmm0110", { "", "", "fmov.s @(R0,<REG_M>),<FREG_N>", "1111nnnnmmmm0110",
/* sh4 */ /* sh4 */
"if (FPSCR_SZ) {", "if (FPSCR_SZ) {",
@ -414,7 +414,7 @@ op tab[] =
" SET_FI(n, RLAT(R[0] + R[m]));", " SET_FI(n, RLAT(R[0] + R[m]));",
"}", "}",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fmov.s <FREG_M>,@(R0,<REG_N>)", "1111nnnnmmmm0111", { "", "", "fmov.s <FREG_M>,@(R0,<REG_N>)", "1111nnnnmmmm0111",
/* sh4 */ /* sh4 */
"if (FPSCR_SZ) {", "if (FPSCR_SZ) {",
@ -430,12 +430,12 @@ op tab[] =
/* sh4: See fmov instructions above for move to/from extended fp registers */ /* sh4: See fmov instructions above for move to/from extended fp registers */
/* sh3e */ /* sh2e */
{ "", "", "fmul <FREG_M>,<FREG_N>", "1111nnnnmmmm0010", { "", "", "fmul <FREG_M>,<FREG_N>", "1111nnnnmmmm0010",
"FP_OP(n, *, m);", "FP_OP(n, *, m);",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fneg <FREG_N>", "1111nnnn01001101", { "", "", "fneg <FREG_N>", "1111nnnn01001101",
"FP_UNARY(n, -);", "FP_UNARY(n, -);",
}, },
@ -455,12 +455,12 @@ op tab[] =
"FP_UNARY(n, sqrt);", "FP_UNARY(n, sqrt);",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fsub <FREG_M>,<FREG_N>", "1111nnnnmmmm0001", { "", "", "fsub <FREG_M>,<FREG_N>", "1111nnnnmmmm0001",
"FP_OP(n, -, m);", "FP_OP(n, -, m);",
}, },
/* sh3e */ /* sh2e */
{ "", "", "ftrc <FREG_N>, FPUL", "1111nnnn00111101", { "", "", "ftrc <FREG_N>, FPUL", "1111nnnn00111101",
/* sh4 */ /* sh4 */
"if (FPSCR_PR) {", "if (FPSCR_PR) {",
@ -476,7 +476,7 @@ op tab[] =
" FPUL = (int)FR(n);", " FPUL = (int)FR(n);",
}, },
/* sh3e */ /* sh2e */
{ "", "", "fsts FPUL,<FREG_N>", "1111nnnn00001101", { "", "", "fsts FPUL,<FREG_N>", "1111nnnn00001101",
" union", " union",
" {", " {",
@ -561,11 +561,11 @@ op tab[] =
"SREG (m) = RLAT(R[n]);", "SREG (m) = RLAT(R[n]);",
"R[n] += 4;", "R[n] += 4;",
}, },
/* sh3e / sh-dsp (lds <REG_N>,DSR) */ /* sh2e / sh-dsp (lds <REG_N>,DSR) */
{ "", "n", "lds <REG_N>,FPSCR", "0100nnnn01101010", { "", "n", "lds <REG_N>,FPSCR", "0100nnnn01101010",
"SET_FPSCR(R[n]);", "SET_FPSCR(R[n]);",
}, },
/* sh3e / sh-dsp (lds.l @<REG_N>+,DSR) */ /* sh2e / sh-dsp (lds.l @<REG_N>+,DSR) */
{ "", "n", "lds.l @<REG_N>+,FPSCR", "0100nnnn01100110", { "", "n", "lds.l @<REG_N>+,FPSCR", "0100nnnn01100110",
"MA (1);", "MA (1);",
"SET_FPSCR (RLAT(R[n]));", "SET_FPSCR (RLAT(R[n]));",