On Sat, Apr 28, 2012 at 6:13 PM, Eric Botcazou <ebotca...@adacore.com> wrote:
>> Yes, the reason here should be the pattern for insn 79 has predicates on
>> its operands and does not allow constant here.
>
> And there is no way to get rid of the 2 pluses and thus change the pattern?
>
> --
> Eric Botcazou

The instruction is generated according to cstoresi4/addsi_addgeu
pattern during expanding.

;; Used as part of the expansion of thumb les sequence.
(define_insn "thumb1_addsi3_addgeu"
  [(set (match_operand:SI 0 "s_register_operand" "=l")
        (plus:SI (plus:SI (match_operand:SI 1 "s_register_operand" "%0")
                          (match_operand:SI 2 "s_register_operand" "l"))
                 (geu:SI (match_operand:SI 3 "s_register_operand" "l")
                         (match_operand:SI 4 "thumb1_cmp_operand" "lI"))))]
  "TARGET_THUMB1"
  "cmp\\t%3, %4\;adc\\t%0, %1, %2"
  [(set_attr "length" "4")]
)

I am not sure this kind of pattern benefits in other cases, but not in this one.


Thanks.

-- 
Best Regards.

Reply via email to