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] |
[Abe wrote:] [snip]
Even without cmove to/from main memory, two cmoves back-to-back with opposite conditions could still be used, e.g. [not for a real-world ISA]: load X[x] -> reg1 load Y[y] -> reg2 cmove c ? reg1 -> reg3 cmove (!c) ? reg2 -> reg3 Or even better if the ISA can support something like: load X[x] -> reg1 load Y[y] -> reg2 cmove (c ? reg1 : reg2) -> reg3 However, this is a code-gen issue from my POV, and at the present time all the if-conversion work is occurring at the GIMPLE level. If anybody reading this knows how I could make the if converter generate GIMPLE that leads to code-gen that is better for at least one ISA
[Alan wrote:]
Ramana writes that your patch for PR46029 generates more 'csel's (i.e. the second form you write) for AArch64: https://gcc.gnu.org/ml/gcc-patches/2015-06/msg01721.html
Thanks to Ramana for doing that analysis and thanks to Alan for informing me.
of course this says nothing about whether there is *some* other ISA that gets regressed!
After finishing fixing the known regressions, I intend/plan to reg-test for AArch64; after that, I think I`m going to need some community help to reg-test for other ISAs. Regards, Abe
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |