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.