Supporting 'MAC' instruction on gcc v4.1.1
Rahul
rah.v.ragh@gmail.com
Fri May 11 12:26:00 GMT 2007
Hello all,
I am working on gcc v4.1.1 for a non-gcc target. I want to support
'MAC' instruction
(mac OP1, OP2, OP3 => OP3 += OP1 * OP2).
I have PLUS, MULT and following MAC pattern, in my target.md file.
(define_insn ""
[(set (match_operand:SI 0 "data_reg" "=f")
(plus:SI (mult:SI (match_operand:SI 1 "data_reg" "f")
(match_operand:SI 2 "data_reg" "f"))
(match_operand:SI 3 "data_reg" "0")))]
""
"mac\\t%1, %2, %3"
[(set_attr "type" "arith")
(set_attr "length" "2")]
)
But for the following example
int a = 1;
int b = 2;
int c = 3;
c = c + a * b;
the MAC pattern is not getting recognized, instead it is still using
PLUS and MULT patterns.
I noticed the following point in gcc-internals doc: "Instruction
combination pass attempts to combine groups of two or three
instructions that are related by
data flow into single instructions".
Please tell me whether this is feasible in gcc v4.1.1 or not?
Am i missing any other changes or additions?
Regards,
Rahul
More information about the Gcc
mailing list