Better extending core to NEON transfers

Registered by Michael Hope

Improve a extending transfer from core to NEON registers. The compiler currently extends into two 32 bit core registers and then transfers this pair into NEON. Change to transfer into NEON and then extend.

Reduces register pressure. Should improve 64 bit performance.

Blueprint information

Status:
Complete
Approver:
Michael Hope
Priority:
Medium
Drafter:
Michael Hope
Direction:
Approved
Assignee:
Ulrich Weigand
Definition:
Approved
Series goal:
Accepted for 4.6
Implementation:
Implemented
Milestone target:
milestone icon 4.7-2013.01
Started by
Michael Hope
Completed by
Ulrich Weigand

Sprints

Whiteboard

Testing has shown a missed-optimization regression. Investigation found that the lower-subreg pass is being unhelpful. The problem is that one of the side-effects of lowering is that the compiler will refuse to modify a DImode value in-place if it can prove that one subreg won't, in fact, be modified. This wouldn't be a problem, of course, if the entire algorithm were lowered, but it is a problem when certain non-subreg DImode operations remain, as is the case with NEON.

This patch is dependent on both 64-bit shift patches, so it is also blocked on the spec2000 issues.

Meta:
Headline: TBD
Acceptance: TBD

(?)

Work Items

Work items:
Initial Implementation: DONE
Testing: DONE
Upstream Review: DONE
Upstream Commit: DONE
Internal Commit: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.