Expanding instructions with condition codes inter-deps
Paulo J. Matos
paulo@matos-sorge.com
Tue Oct 18 13:44:00 GMT 2011
On 17/10/11 17:20, Andrew Pinski wrote:
> On Mon, Oct 17, 2011 at 3:50 AM, Paulo J. Matos<paulo@matos-sorge.com> wrote:
>
>> addc_internal looks like:
>> (define_insn "addc_internal"
>> [(set (match_operand:QI 0 "nonimmediate_operand" "=c")
>> (plus:QI
>> (plus:QI
>> (ltu:QI (reg:CC RCC) (const_int 0))
>> (match_operand:QI 1 "nonimmediate_operand" "%0"))
>> (match_operand:QI 2 "general_operand" "cwmi")))
>> (clobber (reg:CC RCC))]
>> ""
>> "addc\\t%0,%f2")
>
> Try adding (use (reg:CC RCC)) to the pattern above.
>
Currently compiling that change into the code. I have a feeling that it
will either confuse compare-elim.c or that it will be too strict and
remove any possibility of optimization since with (use (reg:CC RCC)) we
are not really saying that we are only interested in the carry flag
instead of the whole thing. It will avoid anything clobbering RCC which
is most of the instructions.
I will give it a spin and see what actually happens.
Thanks,
--
PMatos
More information about the Gcc
mailing list