llvm
llvm copied to clipboard
Reapply "[libspirv] Define schar overloads via remangling; not source…
… … (#18821)"
This reapplies commit 23584c1991587815e63d95404337eb2f1faeea29. It also includes changes from #18807 which attempt to address the issues that led to the original revert.
We were previously achieving the signed char builtin definitions in libspirv via one of two ways. The first was explicitly definining schar overloads of builtins in the source. The second was by remangling 'char' builtins to one of schar or uchar, depending on the host platform.
Since we are defining our builtins in OpenCL C, the plain 'char' type is already a signed type. This presents us with the opportunity to achieve our desired schar builtins solely through remangling. The primary idea is to reduce our libclc/libspirv diff with upstream. We also have the option to introduce signed char builtins upstream. As it stands the schar problem isn't far from the 'half' mangling problem that we also now deal with purely in the remangler.