OpenCL spec doesn't seem to describe the behavior correctly for type printing in GetKernelArgInfo (https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_API.html#clGetKernelArgInfo):
The type name returned will be the argument type name as it was declared with any whitespace removed. If argument type name is an unsigned scalar type (i.e. unsigned char, unsigned short, unsigned int, unsigned long), uchar, ushort, uint and ulong will be returned.
The example with unsigned doesn't seem to comply with the general statement in the first sentence. It is believed that it actually meant to say that the single word spelling should be used for types i.e.
unsigned type -> utype signed type -> type
This patch fixed the printing of type with signed prefix in spelling.
signed char would be a better test case, here (although it may be good to test signed int as well).
I believe (but I haven't checked in detail) that for int the canonical naming is either int or unsigned int (i.e. signed int will not occur) whereas for char, the canonical naming is unsigned char, signed char (explicitly stated) or simply char (unstated signedness). (I am basing this on metadata that I have seen, and the understanding that in C, the signedness of char with no explicit signed or unsigned specifier is implementation-defined.)