RFR: 8298935: fix cyclic dependency bug in create_pack logic in SuperWord::find_adjacent_refs [v7]

Emanuel Peter epeter at openjdk.org
Mon Feb 20 11:12:32 UTC 2023


On Mon, 20 Feb 2023 10:45:44 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

>> Emanuel Peter has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   fixed another IR cpuFeature issue for aarch64 asimd vs sve
>
> src/hotspot/share/opto/superword.cpp line 1394:
> 
>> 1392:     for (DepPreds preds(n, _dg); !preds.done(); preds.next()) {
>> 1393:       Node* pred = preds.current();
>> 1394:       if (in_bb(pred) && depth(pred) >= min_d) {
> 
> Hi @eme64 , Dependency captures three scenarios :-
>   a) RAW(ture) :  Store -> Load
>   b) WAR(anti) :  Load -> Store
>   c)  WAW        :  Store -> Store.
> RAR is a non-dependency.    Existing routine independent_path  is called during statement packing after its certain that statements are isomorphic.  Newly added find_dependence routine optimizes the dependency checking but it does not seem to be skipping over anti-dependence checks which may prevent vectorization in some cases.  Can you share your thoughts on this.

Thanks @jatin-bhateja . In essence, I am trusting `DepPreds` to give me the correct dependency information. Is that not correct? Do you have an example where `DepPreds` would have a `Load` depend on a `Load`, without a store in between?

-------------

PR: https://git.openjdk.org/jdk/pull/12350


More information about the hotspot-compiler-dev mailing list