Commit Graph

1710 Commits

Author SHA1 Message Date
Thiemo Seufer
c90bbe5b9e * config/tc-mips.c (macro): Relax warning, it's toot strict for
embedded-PIC.
2002-05-22 00:13:13 +00:00
Thiemo Seufer
771c7ce4bc ? gas/testsuite/gas/mips/rol64.d
? gas/testsuite/gas/mips/rol64.s
Index: gas/ChangeLog
===================================================================
RCS file: /cvs/src/src/gas/ChangeLog,v
retrieving revision 1.1334
diff -u -p -r1.1334 ChangeLog
--- gas/ChangeLog	21 May 2002 20:01:51 -0000	1.1334
+++ gas/ChangeLog	21 May 2002 23:32:51 -0000
@@ -1,3 +1,8 @@
+2002-05-22  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+	* config/tc-mips.c (macro2): Add 64 bit drol, dror macros.
+	Optimize the rotate by zero case.
+
 2002-05-21  Nick Clifton  <nickc@cambridge.redhat.com>

 	* configure.in: Remove accidental enabling of bfd_gas=yes for
Index: gas/config/tc-mips.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-mips.c,v
retrieving revision 1.123
diff -u -p -r1.123 tc-mips.c
--- gas/config/tc-mips.c	14 May 2002 23:35:59 -0000	1.123
+++ gas/config/tc-mips.c	21 May 2002 23:32:52 -0000
@@ -6686,6 +6686,17 @@ macro2 (ip)
       --mips_opts.noreorder;
       break;

+    case M_DROL:
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsubu",
+		   "d,v,t", AT, 0, treg);
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsrlv",
+		   "d,t,s", AT, sreg, AT);
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsllv",
+		   "d,t,s", dreg, sreg, treg);
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or",
+		   "d,v,t", dreg, dreg, AT);
+      break;
+
     case M_ROL:
       macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "subu",
 		   "d,v,t", AT, 0, treg);
@@ -6697,15 +6708,55 @@ macro2 (ip)
 		   "d,v,t", dreg, dreg, AT);
       break;

+    case M_DROL_I:
+      {
+	unsigned int rot;
+	char *l, *r;
+
+	if (imm_expr.X_op != O_constant)
+	  as_bad (_("rotate count too large"));
+	rot = imm_expr.X_add_number & 0x3f;
+	if (! rot)
+	  break;
+	l = (rot < 0x20) ? "dsll" : "dsll32";
+	r = ((0x40 - rot) < 0x20) ? "dsrl" : "dsrl32";
+	rot &= 0x1f;
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, l,
+		     "d,w,<", AT, sreg, rot);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, r,
+		     "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or",
+		     "d,v,t", dreg, dreg, AT);
+      }
+      break;
+
     case M_ROL_I:
-      if (imm_expr.X_op != O_constant)
-	as_bad (_("rotate count too large"));
-      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll", "d,w,<",
-		   AT, sreg, (int) (imm_expr.X_add_number & 0x1f));
-      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl", "d,w,<",
-		   dreg, sreg, (int) ((0 - imm_expr.X_add_number) & 0x1f));
-      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", "d,v,t",
-		   dreg, dreg, AT);
+      {
+	unsigned int rot;
+
+	if (imm_expr.X_op != O_constant)
+	  as_bad (_("rotate count too large"));
+	rot = imm_expr.X_add_number & 0x1f;
+	if (! rot)
+	  break;
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll",
+		     "d,w,<", AT, sreg, rot);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl",
+		     "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or",
+		     "d,v,t", dreg, dreg, AT);
+      }
+      break;
+
+    case M_DROR:
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsubu",
+		   "d,v,t", AT, 0, treg);
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsllv",
+		   "d,t,s", AT, sreg, AT);
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "dsrlv",
+		   "d,t,s", dreg, sreg, treg);
+      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or",
+		   "d,v,t", dreg, dreg, AT);
       break;

     case M_ROR:
@@ -6719,15 +6770,44 @@ macro2 (ip)
 		   "d,v,t", dreg, dreg, AT);
       break;

+    case M_DROR_I:
+      {
+	unsigned int rot;
+	char *l, *r;
+
+	if (imm_expr.X_op != O_constant)
+	  as_bad (_("rotate count too large"));
+	rot = imm_expr.X_add_number & 0x3f;
+	if (! rot)
+	  break;
+	r = (rot < 0x20) ? "dsrl" : "dsrl32";
+	l = ((0x40 - rot) < 0x20) ? "dsll" : "dsll32";
+	rot &= 0x1f;
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, r,
+		     "d,w,<", AT, sreg, rot);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, l,
+		     "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or",
+		     "d,v,t", dreg, dreg, AT);
+      }
+      break;
+
     case M_ROR_I:
-      if (imm_expr.X_op != O_constant)
-	as_bad (_("rotate count too large"));
-      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl", "d,w,<",
-		   AT, sreg, (int) (imm_expr.X_add_number & 0x1f));
-      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll", "d,w,<",
-		   dreg, sreg, (int) ((0 - imm_expr.X_add_number) & 0x1f));
-      macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or", "d,v,t",
-		   dreg, dreg, AT);
+      {
+	unsigned int rot;
+
+	if (imm_expr.X_op != O_constant)
+	  as_bad (_("rotate count too large"));
+	rot = imm_expr.X_add_number & 0x1f;
+	if (! rot)
+	  break;
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "srl",
+		     "d,w,<", AT, sreg, rot);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sll",
+		     "d,w,<", dreg, sreg, (0x20 - rot) & 0x1f);
+	macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "or",
+		     "d,v,t", dreg, dreg, AT);
+      }
       break;

     case M_S_DOB:
Index: gas/testsuite/ChangeLog
===================================================================
RCS file: /cvs/src/src/gas/testsuite/ChangeLog,v
retrieving revision 1.315
diff -u -p -r1.315 ChangeLog
--- gas/testsuite/ChangeLog	20 May 2002 17:05:34 -0000	1.315
+++ gas/testsuite/ChangeLog	21 May 2002 23:32:54 -0000
@@ -1,3 +1,9 @@
+2002-05-22  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+	* gas/mips/rol64.s: New file, test of drol, dror macros.
+	* gas/mips/rol64.d: Likewise.
+	* gas/mips/mips.exp: Add new test.
+
 2002-05-20  Nick Clifton  <nickc@cambridge.redhat.com>

 	* gas/arm/arm.exp: Replace deprecated command line switches
Index: gas/testsuite/gas/mips/mips.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/mips/mips.exp,v
retrieving revision 1.32
diff -u -p -r1.32 mips.exp
--- gas/testsuite/gas/mips/mips.exp	4 Apr 2002 08:23:30 -0000	1.32
+++ gas/testsuite/gas/mips/mips.exp	21 May 2002 23:32:54 -0000
@@ -122,6 +122,7 @@ if { [istarget mips*-*-*] } then {
 	run_dump_test "mul"
     }
     run_dump_test "rol"
+    run_dump_test "rol64"
     if !$aout { run_dump_test "sb" }
     run_dump_test "trunc"
     if !$aout { run_dump_test "ulh" }
Index: include/opcode/ChangeLog
===================================================================
RCS file: /cvs/src/src/include/opcode/ChangeLog,v
retrieving revision 1.167
diff -u -p -r1.167 ChangeLog
--- include/opcode/ChangeLog	17 May 2002 19:01:03 -0000	1.167
+++ include/opcode/ChangeLog	21 May 2002 23:32:57 -0000
@@ -1,3 +1,7 @@
+2002-05-22  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+	* mips.h: Add M_DROL, M_DROL_I, M_DROR, M_DROR_I macro cases.
+
 2002-05-17  Andrey Volkov  <avolkov@sources.redhat.com>

         * h8300.h: Corrected defs of all control regs
Index: include/opcode/mips.h
===================================================================
RCS file: /cvs/src/src/include/opcode/mips.h,v
retrieving revision 1.24
diff -u -p -r1.24 mips.h
--- include/opcode/mips.h	16 Mar 2002 03:09:18 -0000	1.24
+++ include/opcode/mips.h	21 May 2002 23:32:57 -0000
@@ -526,9 +526,13 @@ enum
   M_REM_3I,
   M_REMU_3,
   M_REMU_3I,
+  M_DROL,
   M_ROL,
+  M_DROL_I,
   M_ROL_I,
+  M_DROR,
   M_ROR,
+  M_DROR_I,
   M_ROR_I,
   M_S_DA,
   M_S_DOB,
Index: opcodes/ChangeLog
===================================================================
RCS file: /cvs/src/src/opcodes/ChangeLog,v
retrieving revision 1.447
diff -u -p -r1.447 ChangeLog
--- opcodes/ChangeLog	17 May 2002 14:36:45 -0000	1.447
+++ opcodes/ChangeLog	21 May 2002 23:33:00 -0000
@@ -1,3 +1,7 @@
+2002-05-22  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+	* mips-opc.c (mips_builtin_opcodes): Add drol, dror macros.
+
 Fri May 17 14:26:44 2002  J"orn Rennecke <joern.rennecke@superh.com>

 	* disassemble.c (disassembler): Just use print_insn_sh for bfd_arch_sh.
Index: opcodes/mips-opc.c
===================================================================
RCS file: /cvs/src/src/opcodes/mips-opc.c,v
retrieving revision 1.32
diff -u -p -r1.32 mips-opc.c
--- opcodes/mips-opc.c	17 Mar 2002 02:42:25 -0000	1.32
+++ opcodes/mips-opc.c	21 May 2002 23:33:00 -0000
@@ -492,6 +492,10 @@ const struct mips_opcode mips_builtin_op
 {"dremu",   "z,s,t",    0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO,      I3      },
 {"dremu",   "d,v,t",	3,    (int) M_DREMU_3,	INSN_MACRO,		I3	},
 {"dremu",   "d,v,I",	3,    (int) M_DREMU_3I,	INSN_MACRO,		I3	},
+{"drol",    "d,v,t",	0,    (int) M_DROL,	INSN_MACRO,		I3	},
+{"drol",    "d,v,I",	0,    (int) M_DROL_I,	INSN_MACRO,		I3	},
+{"dror",    "d,v,t",	0,    (int) M_DROR,	INSN_MACRO,		I3	},
+{"dror",    "d,v,I",	0,    (int) M_DROR_I,	INSN_MACRO,		I3	},
 {"dsllv",   "d,t,s",	0x00000014, 0xfc0007ff,	WR_d|RD_t|RD_s,		I3	},
 {"dsll32",  "d,w,<",	0x0000003c, 0xffe0003f, WR_d|RD_t,		I3	},
 {"dsll",    "d,w,s",	0x00000014, 0xfc0007ff,	WR_d|RD_t|RD_s,		I3	}, /* dsllv */
2002-05-21 23:54:48 +00:00
Nick Clifton
fa70f2ed23 Remove accidental enabling of bfd_gas=yes for sh-coff targets. 2002-05-21 20:01:53 +00:00
Nick Clifton
49e5c6c59f Replace deprecated command line switches with their modern equivalents. 2002-05-20 17:05:35 +00:00
Kazu Hirata
411863a44d * app.c: Fix formatting.
* as.c: Likewise.
	* ehopt.c: Likewise.
	* expr.c: Likewise.
	* input-file.c: Likewise.
	* listing.c: Likewise.
	* macro.h: Likewise.
	* stabs.c: Likewise.
	* symbols.c: Likewise.
2002-05-18 12:53:30 +00:00
Alan Modra
eb268f46e3 Remove stale files. 2002-05-17 10:36:51 +00:00
Marek Michalkiewicz
bdfdba87d1 * config/tc-avr.c (mcu_types): Update for new devices. 2002-05-16 19:24:00 +00:00
Thiemo Seufer
3bec30a830 * config/tc-mips.c (macro): Warn about wrong la/dla use. 2002-05-14 23:35:59 +00:00
Thiemo Seufer
8586fc660d * config/tc_mips.c (s_cpsetup): Fix completely bogus code which had
worked sometimes by accident. Fix copy&paste comment.
2002-05-14 23:29:23 +00:00
Thiemo Seufer
195325d290 * config/tc-mips.c (md_begin): Fix .reginfo and .MIPS.option section
alignment for NewABI. Let n32 use .reginfo. Remove useless casts.
	(mips_elf_final_processing): Let n32 use .reginfo.
2002-05-14 23:27:35 +00:00
Thiemo Seufer
4db1a35d12 * config/tc-mips.c (append_insn): Fix too small range of variable. 2002-05-14 23:19:39 +00:00
Nick Clifton
7f367f0135 Remove redundant call to listing_prev_line 2002-05-14 20:40:30 +00:00
Nick Clifton
f5b4e9e449 Remove redundant call to listing_prev(). 2002-05-13 11:33:07 +00:00
Nick Clifton
b6675117d9 Do not reset loc_directive_seen in dwarf2_emit_insn. 2002-05-13 10:24:14 +00:00
Nick Clifton
7193a0e74f Fix grammatical error. 2002-05-13 10:16:36 +00:00
Alan Modra
6fb6397151 * gas/i386/x86-64-opcode.s: Pad out end of .text with zeros.
* gas/i386/x86-64-opcode.d: Adjust.
2002-05-13 01:24:55 +00:00
Alan Modra
50b3122815 * write.c (subsegs_finish): Don't specially align last subseg. 2002-05-13 01:23:51 +00:00
Nick Clifton
6360824b6e Warn about a description field that is too big. 2002-05-11 19:40:29 +00:00
Nick Clifton
f8e42b8cb6 Fix formatting and compile tine warnings when compiling without BFD_ASSEMBLER
defined.
2002-05-11 12:08:26 +00:00
Nick Clifton
cce5a61824 Define md_pcrel_from for use with sh-hms target. 2002-05-11 11:31:17 +00:00
Nick Clifton
d7c310c203 Use the 'current' struct filled by dwarf2_directive_loc, instead of calling
dwarf2_where.
2002-05-11 10:32:35 +00:00
Kazu Hirata
5d6255fea6 * config/obj-coff.h: Fix formatting.
* config/tc-mcore.c: Likewise.
	* config/tc-mn10300.c: Likewise.
	* config/tc-openrisc.c: Likewise.
	* config/tc-or32.c: Likewise.
	* config/tc-pdp11.c: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-ppc.h: Likewise.
	* config/tc-sh64.c: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-tic54x.c: Likewise.
	* config/tc-xstormy16.c: Likewise.
	* config/tc-xstormy16.h: Likewise.
2002-05-11 09:53:52 +00:00
Kazu Hirata
cc8a6dd09b * config/obj-coff.c: Fix formatting.
* config/obj-elf.c: Likewise.
	* config/tc-alpha.c: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-d10v.c: Likewise.
	* config/tc-d30v.c: Likewise.
	* config/tc-h8300.c: Likewise.
	* config/tc-hppa.c: Likewise.
2002-05-09 13:12:57 +00:00
Alan Modra
412167cbaa * config/tc-i386.c (md_estimate_size_before_relax) Don't lose
reloc when no_cond_jump_promotion.
2002-05-09 06:35:22 +00:00
Jim Wilson
9197546776 Fix i960-elf abort in cvt_frag_to_fill while compiling libc/stdio/vfprintf.c.
* config/tc-i960.c (md_estimate_size_before_relax): Return size of
	current variable part of frag.
2002-05-09 01:43:11 +00:00
Kazu Hirata
a1b6236b7d * config/tc-mmix.c: Fix formatting.
* config/tc-mmix.h: Likewise.
2002-05-09 00:33:09 +00:00
Alan Modra
c8615825e3 * configure: Regenerate. 2002-05-08 14:32:37 +00:00
Kazu Hirata
8a104df9d7 * config/tc-m68k.c: Fix formatting. 2002-05-08 01:54:04 +00:00
Nick Clifton
d3d8a9ee19 Honour DESTDIR 2002-05-07 17:22:20 +00:00
Kazu Hirata
40449e9f8b * config/tc-ia64.c: Fix formatting.
* config/tc-ia64.h: Likewise.
2002-05-06 11:43:03 +00:00
Kazu Hirata
98d3f06fa0 * config/tc-mips.c: Fix formatting.
* config/tc-s390.c: Likewise.
	* config/tc-s390.h: Likewise.
2002-05-04 17:38:00 +00:00
Alexandre Oliva
8f5b2891d8 * config/tc-s390.c (md_gather_operands): Emit dwarf2 line-number
information for instructions.
2002-05-03 18:25:08 +00:00
Kazu Hirata
d1a6c2428d * as.h: Fix formatting.
* cgen.c: Likewise.
	* cgen.h: Likewise.
	* dwarf2dbg.c: Likewise.
	* frags.h: Likewise.
	* gasp.c: Likewise.
	* macro.c: Likewise.
	* read.c: Likewise.
	* stabs.c: Likewise.
	* symbols.c: Likewise.
2002-05-03 02:25:33 +00:00
Alan Modra
72297628d9 * app.c (mri_pseudo): Only declare for TC_M68K. 2002-05-02 13:01:50 +00:00
Alan Modra
1cfc59d51f * config/tc-ppc.c (mapping): Map sectoff to BFD_RELOC_16_BASEREL.
(ppc_elf_validate_fix): Replace BFD_RELOC_32_BASEREL with
	BFD_RELOC_16_BASEREL.
	(md_assemble): Likewise.
	(md_apply_fix3): Likewise.
2002-05-02 12:41:35 +00:00
Nick Clifton
358b94bdb1 Do not convert a subtract of zero into an add of zero. 2002-05-02 09:11:14 +00:00
Nick Clifton
d8731e7dad Generate warning if the same destination register is used in parallel
instructions.
2002-05-01 09:54:31 +00:00
Alan Modra
200dbde8db * config/tc-i386.c (extra_symbol_chars): Add '[' to the list. 2002-05-01 00:53:55 +00:00
Alan Modra
3f3cdb0302 * write.c (cvt_frag_to_fill): Set fr_offset to zero on .org
backwards to prevent cascading errors.
2002-05-01 00:33:09 +00:00
Mark Mitchell
9b2b7d6941 * configure.in: Add support for powerpc-*-windiss.
* configure: Regenerated.
2002-04-30 17:47:11 +00:00
Alan Modra
819e64205a * config/tc-s390.c (md_parse_option): Formatting. 2002-04-28 12:34:02 +00:00
Alan Modra
0f3f3d8bfb * config/tc-i386.c: Formatting fixes, add missing space in error
message.
2002-04-28 12:19:46 +00:00
Nick Clifton
3c25c5f6e8 The patch contains mostly fixes for the disassembler. It also fixes
a crash of the assembler with some malformed source input.
Long segmented addresses are now correctly relocated.
Finally it updates my email address in the MAINTAINERS file.
2002-04-25 10:59:24 +00:00
Chris Demetriou
af55c2e6c3 2002-04-24 Chris G. Demetriou <cgd@broadcom.com>
* config/tc-mips.c (macro_build): Do _not_ allow MIPS-3D
        instructions to be generated by macros.
2002-04-24 21:52:47 +00:00
Andreas Schwab
062cd5e7fc * config/tc-i386.c (output_jump, output_disp)
(md_estimate_size_before_relax): Don't set fx_pcrel_adjust any
	more.
	(md_apply_fix3): Remember addend value for rela relocations.
	(tc_gen_reloc): Correctly compute pc-relative relocation addend.
2002-04-24 14:56:07 +00:00
H.J. Lu
b7efdfcc1b 2002-04-23 H.J. Lu <hjl@gnu.org>
* gas/mips/elempic.d: Use empic.l.
	* gas/mips/telempic.d: Likewise.
	* gas/mips/tempic.d: Likewise.
2002-04-23 17:20:22 +00:00
H.J. Lu
978ee720ae 2002-04-23 H.J. Lu <hjl@gnu.org>
* gas/hppa/parse/parse.exp: Don't expect failure on line separator
	test on hppa*-*-linux* nor hppa*-*-netbsd*.
2002-04-23 16:19:08 +00:00
Chris Demetriou
6398a4776e 2002-04-22 Chris Demetriou <cgd@broadcom.com>
* gas/mips/mips-gp64-fp32.l: New file.
        * gas/mips/mips-gp64-fp32.d: Use mips-gp64-fp32.l to check stderr
        output.
        * gas/mips/mips-gp64-fp64.l: New file.
        * gas/mips/mips-gp64-fp64.d: Use mips-gp64-fp64.l to check stderr
        output.
2002-04-22 22:29:47 +00:00
Chris Demetriou
2b2e39bfa5 2002-04-22 Chris Demetriou <cgd@broadcom.com>
* config/tc-mips.c (macro_build): Add close-parenthesis missing
        from previous change.

(also, fix ChangeLog entry for previous patch.)
2002-04-22 21:50:44 +00:00
Eric Christopher
80cc45a581 2002-04-22 Eric Christopher <echristo@redhat.com>
* config/tc-mips.c: Add warning if macro instructions are expanded
	into a branch delay slot.
2002-04-22 21:21:06 +00:00