[PATCH] Improve DAG combine pass on certain IR vector patterns
mehdi.amini at apple.com
Fri Jan 16 15:50:32 PST 2015
> On Jan 16, 2015, at 3:47 PM, Quentin Colombet <qcolombet at apple.com> wrote:
> On Jan 16, 2015, at 3:44 PM, Mehdi Amini <mehdi.amini at apple.com <mailto:mehdi.amini at apple.com>> wrote:
>>> On Jan 16, 2015, at 3:04 PM, Chandler Carruth <chandlerc at google.com <mailto:chandlerc at google.com>> wrote:
>>> On Fri, Jan 16, 2015 at 2:40 PM, Quentin Colombet <qcolombet at apple.com <mailto:qcolombet at apple.com>> wrote:
>>> Well, that may be the conclusion: The performance impact may be within the noise.
>>> Since this kind of patterns are very specific, this is not surprising.
>>> For the record, I tend to ignore the tests that run for less than 1 second (too noisy). Then, the noise level is usually around 1% on a quiet computer with fixed frequency, which is not too bad.
>>> Numbers would mostly be nice because I don't know if other targets have the thing that makes this such a huge win on x86 -- implicit concat with undef to form 2x-wide vectors.
>>> This may be an x86-specific win, in which case it should just be added as a target-specific combine.
>> We are filling half of a vector (v8), and we have to choose between concat two v4 to v8 and then shuffle, or shuffle in v4 and then concat with undef to have a v8.
>> I’m not sure I necessarily see the “target specific part” here, isn’t it a sort of canonicalization in the DAG?
> In some sense it is, but this was not what we were doing so far, and it may introduce regressiosn on other targets, since they were not expecting this pattern.
> That is why Chandler and I are willing to get evidence that it works well for other targets.
Oh yeah I totally understand that it can lead to regression and we should check for that.
I was more trying to see this under the angle that we can still consider that this is the “right" canonical form in the DAG and then fix the Codegen for the target that regressed.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-commits