This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Right way to represent flag-setting arithmetic instructions in MD files


<resending due to mailing list failure>

On 10/03/17 10:23, Eric Botcazou wrote:
My understanding was that the order of the two in this pattern here doesn't
matter because there is an implicit PARALLEL around them, but I found that
the compare-elimination pass (compare-elim.c) assumes that the COMPARE set
must be in the second position for it to do the transformations it wants.
Why do you want to use the compare-elimination pass exactly if the flags are
exposed before reload, as is the case on Aarch64 I think?  The combiner is
supposed to do the same job instead for these targets.


I'm trying to improve the cases where the result of the arithmetic
operation is used in multiple places besides the comparison.
For example:
        add     w0, w0, w1
        add     w1, w0, 2
        cmp     w0, 0

Combine will not attempt to merge the first ADD and CMP because W0 is used
in the second ADD. The compare-elimination pass so far looks like a far simpler
place to implement this transformation than combine.

Thanks,
Kyrill


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]