Improve extraction of double vectors from quad vectors
There are NEON patterns to extrract one half of a quad vector. These are
presented at the rtl level as instructions with arbitrary quad sources and
arbitrary double destinations. If the register allocators happen to assign
a good combination, the patterns expand to nothing, otherwise they
expand to a vector move. However, there is nothing to tell the register
allocator what is required here.
In principle, we should be able to use a plain subreg move instead.
That seems to trigger some latent middle-end bugs though.
Fixing this removes several vmovs from some libav loops.
Status:
Patch merged to 4.6.
Blueprint information
- Status:
- Complete
- Approver:
- Michael Hope
- Priority:
- Medium
- Drafter:
- Richard Sandiford
- Direction:
- Approved
- Assignee:
- Richard Sandiford
- Definition:
- Approved
- Series goal:
- Accepted for 4.6
- Implementation:
- Implemented
- Milestone target:
- 4.6-2011.10
- Started by
- Michael Hope
- Completed by
- Richard Sandiford
Related branches
Related bugs
Sprints
Whiteboard
Headline: Improved performance by recognising NEON half vector moves and treating them as no-operation sub register moves
Acceptance: https:/
Work Items
Dependency tree
* Blueprints in grey have been implemented.