This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [patch] Re: mips 64-bit address generation is broken.
cgd@broadcom.com wrote:
> Did you come up with a final patch?
>
>
> FYI, my patch to address (only) the issue I ran into is below.
It's appended below and includes something similiar to your patch,
restricting the changes to EMBEDDED_PIC and NO_PIC cases.
It also changes some 32bit SVR4_PIC $gp loads to use lw instead of
ld, and several register loads to use the right expansion
for 64bit GPRS instead of 32bit sign extension.
This may cause some more breakage to existing code by doing the
right thing now.
> I've found that it doesn't cause any regressions for check-gcc for
> mips-elf/mips-sim or mips64-elf/mips64-sim, and, with the compiler
> change I mentioned (to use 'dla' for the leadi mips.md pattern) it
> does the right thing for the test case mentioned previously.
Tested for mips-linux, mips64-linux, mips-elf with good results.
Chris, could you try out if it works reasonably well for you?
Thiemo
2002-02-19 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
/gas/ChangeLog
* config/tc-mips.c (set_at): Fix handling of 64bit register loads.
(macro): Likewise. Fix la/dla address expansions for EMBEDDED_PIC
and NO_PIC cases. Code cleanup.
(macro2): Fix handling of 64bit register loads.
/gas/testsuite/ChangeLog
* mips-gp64-fp32-pic.d: Fix test of 64bit register loads.
* mips-gp64-fp32-pic.s: Likewise.
* mips-gp64-fp32.d: Likewise.
* mips-gp64-fp32.s: Likewise.
* mips-gp64-fp64-pic.d: Likewise.
* mips-gp64-fp64-pic.s: Likewise.
* mips-gp64-fp64.d: Likewise.
* mips-gp64-fp64.s: Likewise.
--- source-orig/gas/config/tc-mips.c Tue Feb 12 17:04:35 2002
+++ source/gas/config/tc-mips.c Tue Feb 19 12:24:37 2002
@@ -3257,7 +3275,7 @@ set_at (counter, reg, unsignedp)
"t,r,j", AT, reg, (int) BFD_RELOC_LO16);
else
{
- load_register (counter, AT, &imm_expr, 0);
+ load_register (counter, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, counter, (expressionS *) NULL,
unsignedp ? "sltu" : "slt",
"d,v,t", AT, reg, AT);
@@ -4024,7 +4042,7 @@ macro (ip)
0);
return;
}
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, &offset_expr, s, "s,t,p", sreg, AT);
break;
@@ -4616,11 +4640,11 @@ macro (ip)
macro_build ((char *) NULL, &icnt, &offset_expr, "lui", "t,u",
tempreg, (int) BFD_RELOC_PCREL_HI16_S);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL,
- HAVE_32BIT_ADDRESSES ? "addu" : "daddu",
+ (dbl || HAVE_64BIT_ADDRESSES) ? "daddu" : "addu",
"d,v,t", tempreg, tempreg, breg);
}
macro_build ((char *) NULL, &icnt, &offset_expr,
- HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu",
+ (dbl || HAVE_64BIT_ADDRESSES) ? "daddiu" : "addiu",
"t,r,j", treg, tempreg, (int) BFD_RELOC_PCREL_LO16);
if (! used_at)
return;
@@ -4635,7 +4659,10 @@ macro (ip)
}
if (offset_expr.X_op == O_constant)
- load_register (&icnt, tempreg, &offset_expr, dbl);
+ load_register (&icnt, tempreg, &offset_expr,
+ ((mips_pic == EMBEDDED_PIC || mips_pic == NO_PIC)
+ ? (dbl || HAVE_64BIT_ADDRESSES)
+ : HAVE_64BIT_ADDRESSES));
else if (mips_pic == NO_PIC)
{
/* If this is a reference to a GP relative symbol, we want
@@ -4707,8 +4734,7 @@ macro (ip)
&& ! nopic_need_relax (offset_expr.X_add_symbol, 1))
{
frag_grow (20);
- macro_build ((char *) NULL, &icnt, &offset_expr,
- HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu",
+ macro_build ((char *) NULL, &icnt, &offset_expr, "addiu",
"t,r,j", tempreg, GP, (int) BFD_RELOC_GPREL16);
p = frag_var (rs_machine_dependent, 8, 0,
RELAX_ENCODE (4, 8, 0, 4, 0,
@@ -4718,8 +4744,7 @@ macro (ip)
macro_build_lui (p, &icnt, &offset_expr, tempreg);
if (p != NULL)
p += 4;
- macro_build (p, &icnt, &offset_expr,
- HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu",
+ macro_build (p, &icnt, &offset_expr, "addiu",
"t,r,j", tempreg, tempreg, (int) BFD_RELOC_LO16);
}
}
@@ -4760,7 +4785,8 @@ macro (ip)
frag_grow (32);
if (expr1.X_add_number == 0 && tempreg == PIC_CALL_REG)
lw_reloc_type = (int) BFD_RELOC_MIPS_CALL16;
- macro_build ((char *) NULL, &icnt, &offset_expr, dbl ? "ld" : "lw",
+ macro_build ((char *) NULL, &icnt, &offset_expr,
+ HAVE_32BIT_ADDRESSES ? "lw" : "ld",
"t,o(b)", tempreg, lw_reloc_type, GP);
if (expr1.X_add_number == 0)
{
@@ -4915,7 +4941,7 @@ macro (ip)
HAVE_32BIT_ADDRESSES ? "addu" : "daddu",
"d,v,t", tempreg, tempreg, GP);
macro_build ((char *) NULL, &icnt, &offset_expr,
- dbl ? "ld" : "lw",
+ HAVE_32BIT_ADDRESSES ? "lw" : "ld",
"t,o(b)", tempreg, lw_reloc_type, tempreg);
if (expr1.X_add_number == 0)
{
@@ -5018,7 +5044,7 @@ macro (ip)
p += 4;
}
macro_build (p, &icnt, &offset_expr,
- dbl ? "ld" : "lw",
+ HAVE_32BIT_ADDRESSES ? "lw" : "ld",
"t,o(b)", tempreg, (int) BFD_RELOC_MIPS_GOT16, GP);
p += 4;
if (expr1.X_add_number >= -0x8000
@@ -5079,9 +5105,17 @@ macro (ip)
abort ();
if (breg != 0)
- macro_build ((char *) NULL, &icnt, (expressionS *) NULL,
- HAVE_32BIT_ADDRESSES ? "addu" : "daddu",
- "d,v,t", treg, tempreg, breg);
+ {
+ char *s;
+
+ if (mips_pic == EMBEDDED_PIC || mips_pic == NO_PIC)
+ s = (dbl || HAVE_64BIT_ADDRESSES) ? "daddu" : "addu";
+ else
+ s = HAVE_64BIT_ADDRESSES ? "daddu" : "addu";
+
+ macro_build ((char *) NULL, &icnt, (expressionS *) NULL, s,
+ "d,v,t", treg, tempreg, breg);
+ }
if (! used_at)
return;
@@ -6751,7 +6785,7 @@ macro2 (ip)
}
else
{
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "xor",
"d,v,t", dreg, sreg, AT);
used_at = 1;
@@ -6787,7 +6821,7 @@ macro2 (ip)
}
else
{
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL,
mask == M_SGE_I ? "slt" : "sltu", "d,v,t", dreg, sreg,
AT);
@@ -6815,7 +6849,7 @@ macro2 (ip)
case M_SGTU_I:
s = "sltu";
sgti:
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL, s, "d,v,t",
dreg, AT, sreg);
break;
@@ -6838,7 +6872,7 @@ macro2 (ip)
case M_SLEU_I:
s = "sltu";
slei:
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL, s, "d,v,t",
dreg, AT, sreg);
macro_build ((char *) NULL, &icnt, &expr1, "xori", "t,r,i", dreg, dreg,
@@ -6854,7 +6888,7 @@ macro2 (ip)
dreg, sreg, (int) BFD_RELOC_LO16);
return;
}
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "slt", "d,v,t",
dreg, sreg, AT);
break;
@@ -6868,7 +6902,7 @@ macro2 (ip)
dreg, sreg, (int) BFD_RELOC_LO16);
return;
}
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "sltu",
"d,v,t", dreg, sreg, AT);
break;
@@ -6925,7 +6959,7 @@ macro2 (ip)
}
else
{
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "xor",
"d,v,t", dreg, sreg, AT);
used_at = 1;
@@ -6990,7 +7024,7 @@ macro2 (ip)
case M_TNE_I:
s = "tne";
trap:
- load_register (&icnt, AT, &imm_expr, 0);
+ load_register (&icnt, AT, &imm_expr, HAVE_64BIT_GPRS);
macro_build ((char *) NULL, &icnt, (expressionS *) NULL, s, "s,t", sreg,
AT);
break;
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d source/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d Thu Oct 4 02:57:01 2001
+++ source/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d Tue Feb 19 08:10:40 2002
@@ -22,12 +22,12 @@ Disassembly of section .text:
30: 24840000 addiu a0,a0,0
34: 8f840000 lw a0,0\(gp\)
38: 00000000 nop
- 3c: 24840228 addiu a0,a0,552
- 40: 10000079 b 228 <[^>]*>
+ 3c: 24840230 addiu a0,a0,560
+ 40: 1000007b b 230 <[^>]*>
44: 00000000 nop
48: 8f990000 lw t9,0\(gp\)
4c: 00000000 nop
- 50: 27390228 addiu t9,t9,552
+ 50: 27390230 addiu t9,t9,560
54: 0320f809 jalr t9
58: 00000000 nop
5c: 8fbc0008 lw gp,8\(sp\)
@@ -41,7 +41,7 @@ Disassembly of section .text:
7c: 8c840000 lw a0,0\(a0\)
80: 8f840000 lw a0,0\(gp\)
84: 00000000 nop
- 88: 24840228 addiu a0,a0,552
+ 88: 24840230 addiu a0,a0,560
8c: 8c840000 lw a0,0\(a0\)
90: 8f840000 lw a0,0\(gp\)
94: 00000000 nop
@@ -53,7 +53,7 @@ Disassembly of section .text:
ac: dc840000 ld a0,0\(a0\)
b0: 8f840000 lw a0,0\(gp\)
b4: 00000000 nop
- b8: 24840228 addiu a0,a0,552
+ b8: 24840230 addiu a0,a0,560
bc: dc840000 ld a0,0\(a0\)
c0: 8f810000 lw at,0\(gp\)
c4: 00000000 nop
@@ -111,10 +111,10 @@ Disassembly of section .text:
194: 64a40064 daddiu a0,a1,100
198: 0004202b sltu a0,zero,a0
19c: 00a0202d move a0,a1
- 1a0: df840000 ld a0,0\(gp\)
+ 1a0: 8f840000 lw a0,0\(gp\)
1a4: 00000000 nop
1a8: 24840000 addiu a0,a0,0
- 1ac: df840000 ld a0,0\(gp\)
+ 1ac: 8f840000 lw a0,0\(gp\)
1b0: 00000000 nop
1b4: 24840000 addiu a0,a0,0
1b8: 8f810000 lw at,0\(gp\)
@@ -127,24 +127,26 @@ Disassembly of section .text:
1d4: 24210000 addiu at,at,0
1d8: b0240000 sdl a0,0\(at\)
1dc: b4240007 sdr a0,7\(at\)
- 1e0: 3c018000 lui at,0x8000
- 1e4: 0081082a slt at,a0,at
- 1e8: 1020000f beqz at,228 <[^>]*>
- 1ec: 00000000 nop
- 1f0: 34018000 li at,0x8000
- 1f4: 00010c78 dsll at,at,0x11
- 1f8: 0081082b sltu at,a0,at
- 1fc: 1020000a beqz at,228 <[^>]*>
- 200: 00000000 nop
- 204: 3c018000 lui at,0x8000
- 208: 0081082a slt at,a0,at
- 20c: 14200006 bnez at,228 <[^>]*>
- 210: 00000000 nop
- 214: 34018000 li at,0x8000
- 218: 00010c78 dsll at,at,0x11
- 21c: 0081082b sltu at,a0,at
- 220: 14200001 bnez at,228 <[^>]*>
- 224: 00000000 nop
+ 1e0: 34018000 li at,0x8000
+ 1e4: 00010c38 dsll at,at,0x10
+ 1e8: 0081082a slt at,a0,at
+ 1ec: 10200010 beqz at,230 <[^>]*>
+ 1f0: 00000000 nop
+ 1f4: 34018000 li at,0x8000
+ 1f8: 00010c78 dsll at,at,0x11
+ 1fc: 0081082b sltu at,a0,at
+ 200: 1020000b beqz at,230 <[^>]*>
+ 204: 00000000 nop
+ 208: 34018000 li at,0x8000
+ 20c: 00010c38 dsll at,at,0x10
+ 210: 0081082a slt at,a0,at
+ 214: 14200006 bnez at,230 <[^>]*>
+ 218: 00000000 nop
+ 21c: 34018000 li at,0x8000
+ 220: 00010c78 dsll at,at,0x11
+ 224: 0081082b sltu at,a0,at
+ 228: 14200001 bnez at,230 <[^>]*>
+ 22c: 00000000 nop
-0+0228 <[^>]*>:
+0+0230 <[^>]*>:
...
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s source/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s Thu Jan 10 21:14:33 2002
+++ source/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s Tue Feb 19 07:55:10 2002
@@ -120,10 +120,10 @@ func:
# 0198 sltu a0,zero,a0
move $4, $5 # 019c move a0,a1
- dla $4, shared # 01a0 ld a0,got(.sdata)(gp)
+ dla $4, shared # 01a0 lw a0,got(.sdata)(gp)
# 01a4 nop
# 01a8 addiu a0,a0,lo(shared)
- dla $4, unshared # 01ac ld a0,got(.data)(gp)
+ dla $4, unshared # 01ac lw a0,got(.data)(gp)
# 01b0 nop
# 01b4 addiu a0,a0,lo(unshared)
uld $4, unshared # 01b8 lw at,got(.data)(gp)
@@ -137,24 +137,26 @@ func:
# 01d8 sdl a0,0(at)
# 01dc sdr a0,7(at)
- bgt $4, 0x7fffffff, end # 01e0 lui at,0x8000
- # 01e4 slt at,a0,at
- # 01e8 beqz at,end
- # 01ec nop
- bgtu $4, 0xffffffff, end # 01f0 li at,0x8000
- # 01f4 dsll at,at,17
- # 01f8 sltu at,a0,at
- # 01fc beqz at,end
- # 0200 nop
- ble $4, 0x7fffffff, end # 0204 lui at,0x8000
- # 0208 slt at,a0,at
- # 020c bnez at,end
- # 0210 nop
- bleu $4, 0xffffffff, end # 0214 li at,0x8000
- # 0218 dsll at,at,17
- # 021c sltu at,a0,at
- # 0220 bnez at,end
- # 0224 nop
+ bgt $4, 0x7fffffff, end # 01e0 li at,0x8000
+ # 01e4 dsll at,at,0x10
+ # 01e8 slt at,a0,at
+ # 01ec beqz at,end
+ # 01f0 nop
+ bgtu $4, 0xffffffff, end # 01f4 li at,0x8000
+ # 01f8 dsll at,at,17
+ # 01fc sltu at,a0,at
+ # 0200 beqz at,end
+ # 0204 nop
+ ble $4, 0x7fffffff, end # 0208 li at,0x8000
+ # 020c dsll at,at,0x10
+ # 0210 slt at,a0,at
+ # 0214 bnez at,end
+ # 0218 nop
+ bleu $4, 0xffffffff, end # 021c li at,0x8000
+ # 0220 dsll at,at,17
+ # 0224 sltu at,a0,at
+ # 0228 bnez at,end
+ # 022c nop
# Should produce warnings given -mfp32
# add.d $f1, $f2, $f3
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp32.d source/gas/testsuite/gas/mips/mips-gp64-fp32.d
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp32.d Thu Oct 4 02:57:01 2001
+++ source/gas/testsuite/gas/mips/mips-gp64-fp32.d Mon Feb 18 00:15:47 2002
@@ -13,19 +13,19 @@ Disassembly of section .text:
c: 3c040000 lui a0,0x0
10: 24840000 addiu a0,a0,0
14: 3c040000 lui a0,0x0
- 18: 24840154 addiu a0,a0,340
- 1c: 08000055 j 154 <[^>]*>
- 20: 0c000055 jal 154 <[^>]*>
+ 18: 2484015c addiu a0,a0,348
+ 1c: 08000057 j 15c <[^>]*>
+ 20: 0c000057 jal 15c <[^>]*>
24: 8f84c000 lw a0,-16384\(gp\)
28: 3c040000 lui a0,0x0
2c: 8c840000 lw a0,0\(a0\)
30: 3c040000 lui a0,0x0
- 34: 8c840154 lw a0,340\(a0\)
+ 34: 8c84015c lw a0,348\(a0\)
38: df84c000 ld a0,-16384\(gp\)
3c: 3c040000 lui a0,0x0
40: dc840000 ld a0,0\(a0\)
44: 3c040000 lui a0,0x0
- 48: dc840154 ld a0,340\(a0\)
+ 48: dc84015c ld a0,348\(a0\)
4c: af84c000 sw a0,-16384\(gp\)
50: 3c010000 lui at,0x0
54: ac240000 sw a0,0\(at\)
@@ -78,20 +78,22 @@ Disassembly of section .text:
110: 24210000 addiu at,at,0
114: b0240000 sdl a0,0\(at\)
118: b4240007 sdr a0,7\(at\)
- 11c: 3c018000 lui at,0x8000
- 120: 0081082a slt at,a0,at
- 124: 1020000b beqz at,154 <[^>]*>
- 128: 34018000 li at,0x8000
- 12c: 00010c78 dsll at,at,0x11
- 130: 0081082b sltu at,a0,at
- 134: 10200007 beqz at,154 <[^>]*>
- 138: 3c018000 lui at,0x8000
- 13c: 0081082a slt at,a0,at
- 140: 14200004 bnez at,154 <[^>]*>
- 144: 34018000 li at,0x8000
- 148: 00010c78 dsll at,at,0x11
- 14c: 0081082b sltu at,a0,at
- 150: 14200000 bnez at,154 <[^>]*>
+ 11c: 34018000 li at,0x8000
+ 120: 00010c38 dsll at,at,0x10
+ 124: 0081082a slt at,a0,at
+ 128: 1020000c beqz at,15c <[^>]*>
+ 12c: 34018000 li at,0x8000
+ 130: 00010c78 dsll at,at,0x11
+ 134: 0081082b sltu at,a0,at
+ 138: 10200008 beqz at,15c <[^>]*>
+ 13c: 34018000 li at,0x8000
+ 140: 00010c38 dsll at,at,0x10
+ 144: 0081082a slt at,a0,at
+ 148: 14200004 bnez at,15c <[^>]*>
+ 14c: 34018000 li at,0x8000
+ 150: 00010c78 dsll at,at,0x11
+ 154: 0081082b sltu at,a0,at
+ 158: 14200000 bnez at,15c <[^>]*>
-0+0154 <[^>]*>:
+0+015c <[^>]*>:
...
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp32.s source/gas/testsuite/gas/mips/mips-gp64-fp32.s
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp32.s Wed Oct 24 22:12:36 2001
+++ source/gas/testsuite/gas/mips/mips-gp64-fp32.s Mon Feb 18 00:11:32 2002
@@ -85,20 +85,22 @@ func:
# 0114 sdl a0,0(at)
# 0118 sdr a0,7(at)
- bgt $4, 0x7fffffff, end # 011c lui at,0x8000
- # 0120 slt at,a0,at
- # 0124 beqz at,end
- bgtu $4, 0xffffffff, end # 0128 li at,0x8000
- # 012c dsll at,at,17
- # 0130 sltu at,a0,at
- # 0134 beqz at,end
- ble $4, 0x7fffffff, end # 0138 lui at,0x8000
- # 013c slt at,a0,at
- # 0140 bnez at,end
- bleu $4, 0xffffffff, end # 0144 li at,0x8000
- # 0148 dsll at,at,17
- # 014c sltu at,a0,at
- # 0150 bnez at,end
+ bgt $4, 0x7fffffff, end # 011c li at,0x8000
+ # 0120 dsll at,at,0x10
+ # 0124 slt at,a0,at
+ # 0128 beqz at,end
+ bgtu $4, 0xffffffff, end # 012c li at,0x8000
+ # 0130 dsll at,at,17
+ # 0134 sltu at,a0,at
+ # 0138 beqz at,end
+ ble $4, 0x7fffffff, end # 013c li at,0x8000
+ # 0140 dsll at,at,0x10
+ # 0144 slt at,a0,at
+ # 0148 bnez at,end
+ bleu $4, 0xffffffff, end # 014c li at,0x8000
+ # 0150 dsll at,at,17
+ # 0154 sltu at,a0,at
+ # 0158 bnez at,end
# Should produce warnings given -mfp32
# add.d $f1, $f2, $f3
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d source/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d Thu Oct 4 02:57:01 2001
+++ source/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d Tue Feb 19 08:10:31 2002
@@ -22,12 +22,12 @@ Disassembly of section .text:
30: 24840000 addiu a0,a0,0
34: 8f840000 lw a0,0\(gp\)
38: 00000000 nop
- 3c: 2484022c addiu a0,a0,556
- 40: 1000007a b 22c <[^>]*>
+ 3c: 24840234 addiu a0,a0,564
+ 40: 1000007c b 234 <[^>]*>
44: 00000000 nop
48: 8f990000 lw t9,0\(gp\)
4c: 00000000 nop
- 50: 2739022c addiu t9,t9,556
+ 50: 27390234 addiu t9,t9,564
54: 0320f809 jalr t9
58: 00000000 nop
5c: 8fbc0008 lw gp,8\(sp\)
@@ -41,7 +41,7 @@ Disassembly of section .text:
7c: 8c840000 lw a0,0\(a0\)
80: 8f840000 lw a0,0\(gp\)
84: 00000000 nop
- 88: 2484022c addiu a0,a0,556
+ 88: 24840234 addiu a0,a0,564
8c: 8c840000 lw a0,0\(a0\)
90: 8f840000 lw a0,0\(gp\)
94: 00000000 nop
@@ -53,7 +53,7 @@ Disassembly of section .text:
ac: dc840000 ld a0,0\(a0\)
b0: 8f840000 lw a0,0\(gp\)
b4: 00000000 nop
- b8: 2484022c addiu a0,a0,556
+ b8: 24840234 addiu a0,a0,564
bc: dc840000 ld a0,0\(a0\)
c0: 8f810000 lw at,0\(gp\)
c4: 00000000 nop
@@ -111,10 +111,10 @@ Disassembly of section .text:
194: 64a40064 daddiu a0,a1,100
198: 0004202b sltu a0,zero,a0
19c: 00a0202d move a0,a1
- 1a0: df840000 ld a0,0\(gp\)
+ 1a0: 8f840000 lw a0,0\(gp\)
1a4: 00000000 nop
1a8: 24840000 addiu a0,a0,0
- 1ac: df840000 ld a0,0\(gp\)
+ 1ac: 8f840000 lw a0,0\(gp\)
1b0: 00000000 nop
1b4: 24840000 addiu a0,a0,0
1b8: 8f810000 lw at,0\(gp\)
@@ -127,25 +127,27 @@ Disassembly of section .text:
1d4: 24210000 addiu at,at,0
1d8: b0240000 sdl a0,0\(at\)
1dc: b4240007 sdr a0,7\(at\)
- 1e0: 3c018000 lui at,0x8000
- 1e4: 0081082a slt at,a0,at
- 1e8: 10200010 beqz at,22c <[^>]*>
- 1ec: 00000000 nop
- 1f0: 34018000 li at,0x8000
- 1f4: 00010c78 dsll at,at,0x11
- 1f8: 0081082b sltu at,a0,at
- 1fc: 1020000b beqz at,22c <[^>]*>
- 200: 00000000 nop
- 204: 3c018000 lui at,0x8000
- 208: 0081082a slt at,a0,at
- 20c: 14200007 bnez at,22c <[^>]*>
- 210: 00000000 nop
- 214: 34018000 li at,0x8000
- 218: 00010c78 dsll at,at,0x11
- 21c: 0081082b sltu at,a0,at
- 220: 14200002 bnez at,22c <[^>]*>
- 224: 00000000 nop
- 228: 46231040 add.d \$f1,\$f2,\$f3
+ 1e0: 34018000 li at,0x8000
+ 1e4: 00010c38 dsll at,at,0x10
+ 1e8: 0081082a slt at,a0,at
+ 1ec: 10200011 beqz at,234 <[^>]*>
+ 1f0: 00000000 nop
+ 1f4: 34018000 li at,0x8000
+ 1f8: 00010c78 dsll at,at,0x11
+ 1fc: 0081082b sltu at,a0,at
+ 200: 1020000c beqz at,234 <[^>]*>
+ 204: 00000000 nop
+ 208: 34018000 li at,0x8000
+ 20c: 00010c38 dsll at,at,0x10
+ 210: 0081082a slt at,a0,at
+ 214: 14200007 bnez at,234 <[^>]*>
+ 218: 00000000 nop
+ 21c: 34018000 li at,0x8000
+ 220: 00010c78 dsll at,at,0x11
+ 224: 0081082b sltu at,a0,at
+ 228: 14200002 bnez at,234 <[^>]*>
+ 22c: 00000000 nop
+ 230: 46231040 add.d \$f1,\$f2,\$f3
-0+022c <[^>]*>:
+0+0234 <[^>]*>:
...
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s source/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s Thu Jan 10 21:14:33 2002
+++ source/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s Tue Feb 19 07:56:55 2002
@@ -120,10 +120,10 @@ func:
# 0198 sltu a0,zero,a0
move $4, $5 # 019c move a0,a1
- dla $4, shared # 01a0 ld a0,got(.sdata)(gp)
+ dla $4, shared # 01a0 lw a0,got(.sdata)(gp)
# 01a4 nop
# 01a8 addiu a0,a0,lo(shared)
- dla $4, unshared # 01ac ld a0,got(.data)(gp)
+ dla $4, unshared # 01ac lw a0,got(.data)(gp)
# 01b0 nop
# 01b4 addiu a0,a0,lo(unshared)
uld $4, unshared # 01b8 lw at,got(.data)(gp)
@@ -137,26 +137,28 @@ func:
# 01d8 sdl a0,0(at)
# 01dc sdr a0,7(at)
- bgt $4, 0x7fffffff, end # 01e0 lui at,0x8000
- # 01e4 slt at,a0,at
- # 01e8 beqz at,end
- # 01ec nop
- bgtu $4, 0xffffffff, end # 01f0 li at,0x8000
- # 01f4 dsll at,at,17
- # 01f8 sltu at,a0,at
- # 01fc beqz at,end
- # 0200 nop
- ble $4, 0x7fffffff, end # 0204 lui at,0x8000
- # 0208 slt at,a0,at
- # 020c bnez at,end
- # 0210 nop
- bleu $4, 0xffffffff, end # 0214 li at,0x8000
- # 0218 dsll at,at,17
- # 021c sltu at,a0,at
- # 0220 bnez at,end
- # 0224 nop
+ bgt $4, 0x7fffffff, end # 01e0 li at,0x8000
+ # 01e4 dsll at,at,0x10
+ # 01e8 slt at,a0,at
+ # 01ec beqz at,end
+ # 01f0 nop
+ bgtu $4, 0xffffffff, end # 01f4 li at,0x8000
+ # 01f8 dsll at,at,17
+ # 01fc sltu at,a0,at
+ # 0200 beqz at,end
+ # 0204 nop
+ ble $4, 0x7fffffff, end # 0208 li at,0x8000
+ # 020c dsll at,at,0x10
+ # 0210 slt at,a0,at
+ # 0214 bnez at,end
+ # 0218 nop
+ bleu $4, 0xffffffff, end # 021c li at,0x8000
+ # 0220 dsll at,at,17
+ # 0224 sltu at,a0,at
+ # 0228 bnez at,end
+ # 022c nop
- add.d $f1, $f2, $f3 # 0228 add.d $f1,$f2,$f3
+ add.d $f1, $f2, $f3 # 0230 add.d $f1,$f2,$f3
.end func
end:
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp64.d source/gas/testsuite/gas/mips/mips-gp64-fp64.d
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp64.d Thu Oct 4 02:57:01 2001
+++ source/gas/testsuite/gas/mips/mips-gp64-fp64.d Mon Feb 18 01:00:03 2002
@@ -13,19 +13,19 @@ Disassembly of section .text:
c: 3c040000 lui a0,0x0
10: 24840000 addiu a0,a0,0
14: 3c040000 lui a0,0x0
- 18: 24840158 addiu a0,a0,344
- 1c: 08000056 j 158 <[^>]*>
- 20: 0c000056 jal 158 <[^>]*>
+ 18: 24840160 addiu a0,a0,352
+ 1c: 08000058 j 160 <[^>]*>
+ 20: 0c000058 jal 160 <[^>]*>
24: 8f84c000 lw a0,-16384\(gp\)
28: 3c040000 lui a0,0x0
2c: 8c840000 lw a0,0\(a0\)
30: 3c040000 lui a0,0x0
- 34: 8c840158 lw a0,344\(a0\)
+ 34: 8c840160 lw a0,352\(a0\)
38: df84c000 ld a0,-16384\(gp\)
3c: 3c040000 lui a0,0x0
40: dc840000 ld a0,0\(a0\)
44: 3c040000 lui a0,0x0
- 48: dc840158 ld a0,344\(a0\)
+ 48: dc840160 ld a0,352\(a0\)
4c: af84c000 sw a0,-16384\(gp\)
50: 3c010000 lui at,0x0
54: ac240000 sw a0,0\(at\)
@@ -78,21 +78,23 @@ Disassembly of section .text:
110: 24210000 addiu at,at,0
114: b0240000 sdl a0,0\(at\)
118: b4240007 sdr a0,7\(at\)
- 11c: 3c018000 lui at,0x8000
- 120: 0081082a slt at,a0,at
- 124: 1020000c beqz at,158 <[^>]*>
- 128: 34018000 li at,0x8000
- 12c: 00010c78 dsll at,at,0x11
- 130: 0081082b sltu at,a0,at
- 134: 10200008 beqz at,158 <[^>]*>
- 138: 3c018000 lui at,0x8000
- 13c: 0081082a slt at,a0,at
- 140: 14200005 bnez at,158 <[^>]*>
- 144: 34018000 li at,0x8000
- 148: 00010c78 dsll at,at,0x11
- 14c: 0081082b sltu at,a0,at
- 150: 14200001 bnez at,158 <[^>]*>
- 154: 46231040 add.d \$f1,\$f2,\$f3
+ 11c: 34018000 li at,0x8000
+ 120: 00010c38 dsll at,at,0x10
+ 124: 0081082a slt at,a0,at
+ 128: 1020000d beqz at,160 <[^>]*>
+ 12c: 34018000 li at,0x8000
+ 130: 00010c78 dsll at,at,0x11
+ 134: 0081082b sltu at,a0,at
+ 138: 10200009 beqz at,160 <[^>]*>
+ 13c: 34018000 li at,0x8000
+ 140: 00010c38 dsll at,at,0x10
+ 144: 0081082a slt at,a0,at
+ 148: 14200005 bnez at,160 <[^>]*>
+ 14c: 34018000 li at,0x8000
+ 150: 00010c78 dsll at,at,0x11
+ 154: 0081082b sltu at,a0,at
+ 158: 14200001 bnez at,160 <[^>]*>
+ 15c: 46231040 add.d \$f1,\$f2,\$f3
-0+0158 <[^>]*>:
+0+0160 <[^>]*>:
...
diff -BurpN source-orig/gas/testsuite/gas/mips/mips-gp64-fp64.s source/gas/testsuite/gas/mips/mips-gp64-fp64.s
--- source-orig/gas/testsuite/gas/mips/mips-gp64-fp64.s Wed Oct 24 22:12:36 2001
+++ source/gas/testsuite/gas/mips/mips-gp64-fp64.s Mon Feb 18 00:57:29 2002
@@ -85,22 +85,24 @@ func:
# 0114 sdl a0,0(at)
# 0118 sdr a0,7(at)
- bgt $4, 0x7fffffff, end # 011c lui at,0x8000
- # 0120 slt at,a0,at
- # 0124 beqz at,end
- bgtu $4, 0xffffffff, end # 0128 li at,0x8000
- # 012c dsll at,at,17
- # 0130 sltu at,a0,at
- # 0134 beqz at,end
- ble $4, 0x7fffffff, end # 0138 lui at,0x8000
- # 013c slt at,a0,at
- # 0140 bnez at,end
- bleu $4, 0xffffffff, end # 0144 li at,0x8000
- # 0148 dsll at,at,17
- # 014c sltu at,a0,at
- # 0150 bnez at,end
+ bgt $4, 0x7fffffff, end # 011c li at,0x8000
+ # 0120 dsll at,at,0x10
+ # 0124 slt at,a0,at
+ # 0128 beqz at,end
+ bgtu $4, 0xffffffff, end # 012c li at,0x8000
+ # 0130 dsll at,at,17
+ # 0134 sltu at,a0,at
+ # 0138 beqz at,end
+ ble $4, 0x7fffffff, end # 013c li at,0x8000
+ # 0140 dsll at,at,0x10
+ # 0144 slt at,a0,at
+ # 0148 bnez at,end
+ bleu $4, 0xffffffff, end # 014c li at,0x8000
+ # 0150 dsll at,at,17
+ # 0154 sltu at,a0,at
+ # 0158 bnez at,end
- add.d $f1, $f2, $f3 # 0154 add.d $f1,$f2,$f3
+ add.d $f1, $f2, $f3 # 015c add.d $f1,$f2,$f3
end:
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...