Richard Earnshaw (lists) wrote: > On 05/05/17 17:10, Wilco Dijkstra wrote: > > However I think all uses of '*' in md files are incorrect and the > > feature should > > be removed. '?' already exists for cases where the alternative may be > > expensive. > > > > It's not quite as simple as that. It may be, however, that we should > only use it for restricting subclasses (eg generally avoiding high > registers on Thumb1).
We needed to add TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS to ensure register preferencing works correctly, so this can be used to choose low/high registers on Thumb-1. > However, things have changed somewhat since the move to LRA and what was > once true might be quite different now. It's possible that existing uses of '*' were trying to hack around the preferencing issues, but with this callback I don't think they are needed. We will still require '?' and '!' to set the relative cost of alternatives - if you have a negate and one of the operands is a SIMD register (so you need one int<->FP move either way), and SIMD negate has a higher latency, you need '?' to say that it is more expensive than the integer negate. Wilco