[aarch64-port-dev ] RFR: 8080293: AARCH64: Remove unnecessary dmbs from generated CAS code
Andrew Dinn
adinn at redhat.com
Wed Aug 26 09:35:55 UTC 2015
On 25/08/15 18:14, Vladimir Kozlov wrote:
> Okay, I agree to have only one predicate. So I am fine with version A).
Thanks, Vladimir. So, that is now as provided in the latest posted webrev:
http://cr.openjdk.java.net/~adinn/8080293/webrev.01/
> PS: "first rule will have a lower" - should compareAndSwapI be first then?
Sorry, I think the problem here is that I explained the status of the
original patch in a rather confusing way. I am not sure it matters all
that much which rule appears first. Or do you really want the lower cost
rule to appear before the higher cost one? . . .
>> However, looking again at the code I believe I have the costs (and hence
>> the predicates) attached to the wrong rules in each pair. For example,
>> currently the rules include the following details
>>
>> compareAndSwapIAcq -- does not emit dmb instructions
>> no predicate
>> cost (2 * VOLATILE_REF_COST )
>>
>> compareAndSwapI -- emits dmb instructions
>> predicate(!needs_acquiring_load_exclusive(n))
>> cost VOLATILE_REF_COST
. . . what I meant by that comment was that this:
- The optimization implemented in this patch is based on an assumption
that a generation strategy using dmb -- i.e. the one encoded by
compareAndSwapI -- will execute more slowly, or at least no faster, than
a generation strategy using stlr -- i.e. the one encoded by
compareAndSwapIAcq.
- The text above displays the original costs and predicates used to
enforce the required rule selection.
- In that version the /costs/ are the wrong way round with respect to
the /motivating assumption/ i.e. compareAndSwapI has a lower cost than
compareAndSwapIAcq.
In version A the costs reflect the motivating assumption i.e. for each
X in {I, L, P, N} rule compareAndSwapXAcq has a lower cost than
compareAndSwapX.
However, it is also true that for each X in {I, L, P, N} rule
compareAndSwapX appears earlier than compareAndSwapXAcq.
regards,
Andrew Dinn
-----------
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in UK and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (USA), Matt Parson (USA), Charlie Peters
(USA), Michael O'Neill (Ireland)
More information about the aarch64-port-dev
mailing list