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