Hi :
  I am studying multiplication-accumulate patterns for mips
 and noticed there are some changes when IRA was merged.

  There are two pattern which confused me, as :

1:  In pattern "*mul_acc_si", there's constraint like "*?*?".
what does this supposed to do?
I could not connect "*?" with document on constraints
 in gcc internal document, and totally have no idea about it.


2:  there is a split pattern for "*mul_acc_si" as following:

(define_split
  [(set (match_operand:SI 0 "d_operand")
        (plus:SI (mult:SI (match_operand:SI 1 "d_operand")
                          (match_operand:SI 2 "d_operand"))
                 (match_operand:SI 3 "d_operand")))
   (clobber (match_operand:SI 4 "lo_operand"))
   (clobber (match_operand:SI 5 "d_operand"))]
  "reload_completed"
  [(parallel [(set (match_dup 5)
                   (mult:SI (match_dup 1) (match_dup 2)))
              (clobber (match_dup 4))])
   (set (match_dup 0) (plus:SI (match_dup 5) (match_dup 3)))]
  "")

this will generate integer multiply instruction with register write,
but what if the processor has only integer multiply instructions,
which only store results in HILO?

So, any tips? Thanks a lot.

-- 
Best Regards.

Reply via email to