Polygeist
Polygeist copied to clipboard
Question: Support for differentiating between volatile and non-volatile memory operations
Hi,
After lowering a CUDA program to mlir format using cgeist, I wanted to run some analysis on memory operations. I want to differentiate memory operations which are 'volatile.'
__global__ void test(volatile int* a, int* b) {
a[some_idx] = data();
b[another_idx] = data();
}
For example, I want to differentiate stores to array a
and b
as volatile has special semantics in CUDA. In the LLVM IR, it is possible (isVolatile
method). Can something similar be achieved here?