[LLVMdev] [pocl-devel] [cfe-dev] SPIR provisional specification is now available in the Khronos website
resistor at mac.com
Fri Sep 28 19:16:53 PDT 2012
On Sep 28, 2012, at 9:45 AM, James Molloy <james at jamesmolloy.co.uk> wrote:
> You can easily simplify this problem with a restriction in SPIR: disallow ConstantExpr casts - no ptrtoint constant expression. Because GlobalVariables have pointer type, if you disallow converting their type to non-pointer type in a constantexpr, the number of constantexpr subclasses you have to deal with is drastically reduced (to essentially just BitCast and GEP).
Wouldn't an easier solution just be not to represent them as constants in the first place? For instance, you could have a built-in function to get the address of local N, where N is taken as a parameter. You can call the builtins at the beginning of the kernel, and then proceed to use them as you wish without having to worry about reversing a constant folding later. Plus, if a given vendor's backend wants the address to get constant folded, it's easy to do replaceAllUsesWith of the call with a global, and run an appropriate constant folding pass.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev