Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Covertion of non-genx_volatile globals to genx_volatile ones can/must be removed. #129

Open
lsatanov opened this issue Apr 9, 2024 · 0 comments

Comments

@lsatanov
Copy link

lsatanov commented Apr 9, 2024

Hi, @igorban-intel

* it generate issue in register allocator - because it will be put to

The issue is not in register allocator or a special case for coalescing as the comment in the source code states.

The faulty situation is reflected in this LIT test: https://github.com/intel/intel-graphics-compiler/blob/1b038250fd5eb6c6b51d2c8062174f645ceefad2/IGC/VectorCompiler/test/GenXLegalizeGVLoadUses/mem2reg_gv_clobbering_avoidance.ll
The comment in the test explains it in pseudocode: LLVM's optimization replaced non-genx_volatile variable with genx_volatile one while it has proved that they constitute the same value (totally legitimate from LLVM semantics standpoint).

This was fixed (intel/intel-graphics-compiler@9fa222a) in the compiler by "legalization" of genx.vload users to genx-controlled subset hence mem2reg or any other LLVM optimizations are not to break the implied genx-middle-end semantics anymore. After the abovementioned fix was applied in IGC VectorCompiler this is no longer an issue.

This particular change (covertion of non-genx_volatile globals to genx_volatile ones) now can be removed. Otherwize, it increases register pressure and potentially can cause some workloads not compile.

@lsatanov lsatanov changed the title Covertion of non-genx_volatile globals to genx_volatile ones can be removed. Covertion of non-genx_volatile globals to genx_volatile ones can/must be removed. May 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant