mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-05 16:51:13 +08:00
Fix float conversions if sign extension in offset would occur
From-SVN: r12977
This commit is contained in:
parent
f37230f0b4
commit
170e0690ee
@ -3670,7 +3670,7 @@
|
||||
|
||||
xop[0] = operands[0];
|
||||
xop[1] = (frame_pointer_needed) ? frame_pointer_rtx : stack_pointer_rtx;
|
||||
xop[2] = GEN_INT ((rs6000_fpmem_offset >> 16) & 0xffff);
|
||||
xop[2] = GEN_INT ((rs6000_fpmem_offset >> 16) + ((rs6000_fpmem_offset & 0x8000) >> 15));
|
||||
output_asm_insn (\"{cau %0,%2(%1)|addis %0,%1,%2}\", xop);
|
||||
}
|
||||
else if (rs6000_fpmem_offset < 0)
|
||||
@ -3699,7 +3699,7 @@
|
||||
operands[2] = gen_rtx (MEM, SImode,
|
||||
gen_rtx (PLUS, Pmode,
|
||||
indx,
|
||||
GEN_INT ((rs6000_fpmem_offset & 0xffff)
|
||||
GEN_INT ((((rs6000_fpmem_offset & 0xffff) ^ 0x8000) - 0x8000)
|
||||
+ ((WORDS_BIG_ENDIAN != 0) * 4))));
|
||||
|
||||
return \"{st|stw} %0,%2\";
|
||||
@ -3726,7 +3726,7 @@
|
||||
operands[2] = gen_rtx (MEM, SImode,
|
||||
gen_rtx (PLUS, Pmode,
|
||||
indx,
|
||||
GEN_INT ((rs6000_fpmem_offset & 0xffff)
|
||||
GEN_INT ((((rs6000_fpmem_offset & 0xffff) ^ 0x8000) - 0x8000)
|
||||
+ ((WORDS_BIG_ENDIAN == 0) * 4))));
|
||||
|
||||
return \"{st|stw} %0,%2\";
|
||||
@ -3746,7 +3746,7 @@
|
||||
if (rs6000_fpmem_offset > 32760)
|
||||
{
|
||||
indx = operands[1];
|
||||
offset &= 0xffff;
|
||||
offset = (((offset & 0xffff) ^ 0x8000) - 0x8000);
|
||||
}
|
||||
else if (frame_pointer_needed)
|
||||
indx = frame_pointer_rtx;
|
||||
@ -3836,9 +3836,9 @@
|
||||
operands[2] = gen_rtx (MEM, DFmode,
|
||||
gen_rtx (PLUS, Pmode,
|
||||
indx,
|
||||
GEN_INT ((rs6000_fpmem_offset & 0xffff))));
|
||||
GEN_INT (rs6000_fpmem_offset)));
|
||||
|
||||
return \"stfd %0,%2\";
|
||||
return \"stfd %0,%w2\";
|
||||
}"
|
||||
[(set_attr "type" "fpstore")])
|
||||
|
||||
@ -3861,7 +3861,7 @@
|
||||
operands[2] = gen_rtx (MEM, DFmode,
|
||||
gen_rtx (PLUS, Pmode,
|
||||
indx,
|
||||
GEN_INT ((rs6000_fpmem_offset & 0xffff)
|
||||
GEN_INT ((((rs6000_fpmem_offset & 0xffff) ^ 0x8000) - 0x8000)
|
||||
+ ((WORDS_BIG_ENDIAN) ? 4 : 0))));
|
||||
|
||||
return \"{l|lwz} %0,%2\";
|
||||
|
Loading…
x
Reference in New Issue
Block a user