Re: How to split mulsi3 pattern

2009-11-12 Thread Richard Henderson
On 11/12/2009 05:40 AM, Mohamed Shafi wrote: So i need to change the mode of the register from SI to HI after reloading. Is that allowed? Of course. It's also allowed before reload: (subreg:HI (reg:SI foo) 0) See gen_lowpart. r~

Re: How to split mulsi3 pattern

2009-11-12 Thread Mohamed Shafi
2009/11/10 Richard Henderson : > On 11/10/2009 05:48 AM, Mohamed Shafi wrote: >> >> (define_insn "mulsi3" >>  [(set (match_operand:SI 0 "register_operand"           "=&d") >>       (mult:SI (match_operand:SI 1 "register_operand"  "%d") >>               (match_operand:SI 2 "register_operand" "d")))]

Re: How to split mulsi3 pattern

2009-11-10 Thread Richard Henderson
On 11/10/2009 05:48 AM, Mohamed Shafi wrote: (define_insn "mulsi3" [(set (match_operand:SI 0 "register_operand" "=&d") (mult:SI (match_operand:SI 1 "register_operand" "%d") (match_operand:SI 2 "register_operand" "d")))] Note that "%" is only useful if the const

How to split mulsi3 pattern

2009-11-10 Thread Mohamed Shafi
Hello all, I am doing a port for a 32bit target in GCC 4.4.0. In my target 32bit multiply instruction is carried out in two instructions. Dn = Da x Db is executed as Dn = (Da.L * Db.H + Da.H * Db.L) << 16 Dn = Dn + (Da.L * Db.L) Currently the pattern that i have for this is as follows: (define