Commit d845b2f9 by Nick Clifton Committed by Nick Clifton

* config/rx/rx.md (bitset_in_memory, bitclr_in_memory: Fix timings.

From-SVN: r170845
parent 25d5c0b0
2011-03-10 Nick Clifton <nickc@redhat.com>
* config/rx/rx.md (bitset_in_memory, bitclr_in_memory: Fix timings.
2011-03-09 Jakub Jelinek <jakub@redhat.com> 2011-03-09 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/47866 PR rtl-optimization/47866
......
...@@ -1643,7 +1643,7 @@ ...@@ -1643,7 +1643,7 @@
"" ""
"bset\t%1, %0.B" "bset\t%1, %0.B"
[(set_attr "length" "3") [(set_attr "length" "3")
(set_attr "timings" "34")] (set_attr "timings" "33")]
) )
(define_insn "*bitinvert" (define_insn "*bitinvert"
...@@ -1689,7 +1689,7 @@ ...@@ -1689,7 +1689,7 @@
"" ""
"bclr\t%1, %0.B" "bclr\t%1, %0.B"
[(set_attr "length" "3") [(set_attr "length" "3")
(set_attr "timings" "34")] (set_attr "timings" "33")]
) )
(define_insn "*insv_imm" (define_insn "*insv_imm"
...@@ -1897,6 +1897,14 @@ ...@@ -1897,6 +1897,14 @@
rtx addr2 = gen_rtx_REG (SImode, 2); rtx addr2 = gen_rtx_REG (SImode, 2);
rtx len = gen_rtx_REG (SImode, 3); rtx len = gen_rtx_REG (SImode, 3);
/* Do not use when the source or destination are volatile - the SMOVF
instruction will read and write in word sized blocks, which may be
outside of the valid address range. */
if (MEM_P (operands[0]) && MEM_VOLATILE_P (operands[0]))
FAIL;
if (MEM_P (operands[1]) && MEM_VOLATILE_P (operands[1]))
FAIL;
if (REG_P (operands[0]) && (REGNO (operands[0]) == 2 if (REG_P (operands[0]) && (REGNO (operands[0]) == 2
|| REGNO (operands[0]) == 3)) || REGNO (operands[0]) == 3))
FAIL; FAIL;
...@@ -1906,6 +1914,7 @@ ...@@ -1906,6 +1914,7 @@
if (REG_P (operands[2]) && (REGNO (operands[2]) == 1 if (REG_P (operands[2]) && (REGNO (operands[2]) == 1
|| REGNO (operands[2]) == 2)) || REGNO (operands[2]) == 2))
FAIL; FAIL;
emit_move_insn (addr1, force_operand (XEXP (operands[0], 0), NULL_RTX)); emit_move_insn (addr1, force_operand (XEXP (operands[0], 0), NULL_RTX));
emit_move_insn (addr2, force_operand (XEXP (operands[1], 0), NULL_RTX)); emit_move_insn (addr2, force_operand (XEXP (operands[1], 0), NULL_RTX));
emit_move_insn (len, force_operand (operands[2], NULL_RTX)); emit_move_insn (len, force_operand (operands[2], NULL_RTX));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment