This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Question on mips multiply patterns in md file
- From: "Amker.Cheng" <amker dot cheng at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 15 Mar 2010 16:00:29 +0800
- Subject: Question on mips multiply patterns in md file
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.