projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2013-10-18 Chao-ying Fu <Chao-ying.Fu@imgtec.com>
[deliverable/binutils-gdb.git]
/
gas
/
config
/
tc-mips.c
diff --git
a/gas/config/tc-mips.c
b/gas/config/tc-mips.c
index 5741d3e1243b03f6df5cb8fa9999cfccbd961aa4..08ad7bab665b38133913336ae204d0d1033c6969 100644
(file)
--- a/
gas/config/tc-mips.c
+++ b/
gas/config/tc-mips.c
@@
-4161,7
+4161,8
@@
fpr_read_mask (const struct mips_cl_insn *ip)
unsigned long pinfo;
unsigned int mask;
unsigned long pinfo;
unsigned int mask;
- mask = insn_reg_mask (ip, (1 << OP_REG_FP) | (1 << OP_REG_VEC),
+ mask = insn_reg_mask (ip, ((1 << OP_REG_FP) | (1 << OP_REG_VEC)
+ | (1 << OP_REG_MSA)),
insn_read_mask (ip->insn_mo));
pinfo = ip->insn_mo->pinfo;
/* Conservatively treat all operands to an FP_D instruction are doubles.
insn_read_mask (ip->insn_mo));
pinfo = ip->insn_mo->pinfo;
/* Conservatively treat all operands to an FP_D instruction are doubles.
@@
-4179,7
+4180,8
@@
fpr_write_mask (const struct mips_cl_insn *ip)
unsigned long pinfo;
unsigned int mask;
unsigned long pinfo;
unsigned int mask;
- mask = insn_reg_mask (ip, (1 << OP_REG_FP) | (1 << OP_REG_VEC),
+ mask = insn_reg_mask (ip, ((1 << OP_REG_FP) | (1 << OP_REG_VEC)
+ | (1 << OP_REG_MSA)),
insn_write_mask (ip->insn_mo));
pinfo = ip->insn_mo->pinfo;
/* Conservatively treat all operands to an FP_D instruction are doubles.
insn_write_mask (ip->insn_mo));
pinfo = ip->insn_mo->pinfo;
/* Conservatively treat all operands to an FP_D instruction are doubles.
@@
-6070,6
+6072,7
@@
can_swap_branch_p (struct mips_cl_insn *ip, expressionS *address_expr,
{
unsigned long pinfo, pinfo2, prev_pinfo, prev_pinfo2;
unsigned int gpr_read, gpr_write, prev_gpr_read, prev_gpr_write;
{
unsigned long pinfo, pinfo2, prev_pinfo, prev_pinfo2;
unsigned int gpr_read, gpr_write, prev_gpr_read, prev_gpr_write;
+ unsigned int fpr_read, prev_fpr_write;
/* -O2 and above is required for this optimization. */
if (mips_optimize < 2)
/* -O2 and above is required for this optimization. */
if (mips_optimize < 2)
@@
-6144,6
+6147,11
@@
can_swap_branch_p (struct mips_cl_insn *ip, expressionS *address_expr,
if (gpr_read & prev_gpr_write)
return FALSE;
if (gpr_read & prev_gpr_write)
return FALSE;
+ fpr_read = fpr_read_mask (ip);
+ prev_fpr_write = fpr_write_mask (&history[0]);
+ if (fpr_read & prev_fpr_write)
+ return FALSE;
+
/* If the branch writes a register that the previous
instruction sets, we can not swap. */
gpr_write = gpr_write_mask (ip);
/* If the branch writes a register that the previous
instruction sets, we can not swap. */
gpr_write = gpr_write_mask (ip);
This page took
0.027703 seconds
and
4
git commands to generate.