This is an archive of the discontinued LLVM Phabricator instance.

[libomptarget][nfc][devicertl] Split execution params
Needs ReviewPublic

Authored by JonChesterfield on Jul 8 2021, 10:52 AM.

Details

Summary

Use two uint16_t shared variables in place of one uint32_t
Intended to simplify load/store propagation, as part of working out
why some dead branches remain in spmd kernels.

Uses uint16_t as there are no existing uint8_t shared variables.

Diff Detail

Event Timeline

JonChesterfield requested review of this revision.Jul 8 2021, 10:52 AM
JonChesterfield created this revision.
Herald added a project: Restricted Project. · View Herald TranscriptJul 8 2021, 10:52 AM

This did not fix the codegen I wanted it to - the LDS variables that only have one store of a constant, followed by loads, do not propagate that constant - but it should make such a transform easier. No known bits or looking through the bitwise op required.

We may get a reasonable hit rate for shared/lds memory out of a transform that looks at a variable that starts undef, and only ever has one constant stored to it, therefore assuming every load is of that constant (as undef loads may as well be assumed to be that constant).