This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)
On 07/19/2011 03:21 AM, Georg-Johann Lay wrote:
>> Yes, it is sad that the backends have to work around the fact
>> that sign/zero_extension of constants is invalid rtl.
>
> Why is that invalid?
>
> (set (reg:HI A)
> (const_int 1000))
>
> (set (reg:SI B)
> (mult:SI (zero_extend:SI (reg:HI C))
> (zero_extend:SI (reg:HI A))))
>
>
> If a target hat native support for
>
> (set (reg:SI B)
> (mult:SI (zero_extend:SI (reg:HI C))
> (const_int 1000)))
>
> then a combine pattern is straight forward.
Yes. And the result you show is quite valid and correct.
What isn't correct is
(zero_extend:HI (const_int 100000))
because const_int does not have a mode, and we no longer
know what the source mode is for the extension.
r~
- References:
- [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)
- Re: [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)
- Re: [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)
- Re: [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)
- Re: [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)
- Re: [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)
- Re: [Patch,AVR]: Fix PR36467, PR49687 (better widening mul)