Page MenuHomePhabricator

[SLP]Improve analysis of same/alternate code ops and scheduling.
Needs ReviewPublic

Authored by ABataev on Jun 10 2022, 1:03 PM.

Details

Reviewers
RKSimon
vdmitrie
Summary

Should improve compile time for analysis and vectorization.

Metric: SLP.NumVectorInstructions

Program SLP.NumVectorInstructions
test-suite :: External/SPEC/CINT2017speed/623.xalancbmk_s/623.xalancbmk_s.test 6380.00 6378.00 -0.0%
test-suite :: External/SPEC/CINT2017rate/523.xalancbmk_r/523.xalancbmk_r.test 6380.00 6378.00 -0.0%
test-suite :: External/SPEC/CINT2006/483.xalancbmk/483.xalancbmk.test 2023.00 2022.00 -0.0%
test-suite :: External/SPEC/CINT2006/471.omnetpp/471.omnetpp.test 148.00 146.00 -1.4%

Generated more vector instructions.

Diff Detail

Event Timeline

ABataev created this revision.Jun 10 2022, 1:03 PM
Herald added a project: Restricted Project. · View Herald TranscriptJun 10 2022, 1:03 PM
ABataev requested review of this revision.Jun 10 2022, 1:03 PM
Herald added a project: Restricted Project. · View Herald TranscriptJun 10 2022, 1:03 PM

I'm not sure about how the test case affected supposed to execute the changes.
Could you please consider adding more tests to be clearer about the patch purpose?

I'm not sure about how the test case affected supposed to execute the changes.
Could you please consider adding more tests to be clearer about the patch purpose?

It is for compile time mostly, nothing else. Just allows to detect gathered elements before scheduling.

I'm not sure about how the test case affected supposed to execute the changes.
Could you please consider adding more tests to be clearer about the patch purpose?

It is for compile time mostly, nothing else. Just allows to detect gathered elements before scheduling.

Yes, but the summary also says more vector instructions generated. What specific cases are handled now but failed previously?

I'm not sure about how the test case affected supposed to execute the changes.
Could you please consider adding more tests to be clearer about the patch purpose?

It is for compile time mostly, nothing else. Just allows to detect gathered elements before scheduling.

Yes, but the summary also says more vector instructions generated. What specific cases are handled now but failed previously?

1-2 more instruction. The effect is caused by the better operand reordering. getSameOpcode is used to detect compatible operations, when SLP tries to find better ordering of the operands. The patch just make getSameOpcode a bit better on detecting such compatible ops.