authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2023-04-10 18:01:25+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2023-05-11 20:31:50+02:00
log5e62ba1347ee9b8614d5d72c60e87136a3bd7ab9
tree68991fd18a337d3bd082491dde91ebd7f9990dc9
parentaa9ea612168836e2c2867dcd79c768155d1e3bfb
signaturelock-open Commit is signed but in an unrecognized format.

opencl: define size of C types

Define the size of the c types according the OpenCL specification. Note that OpenCL does not define the size of long double. Clang generates fp128, even though there is no extension that allows such types. The llvm-spirv translator simply crashes.

1 files changed, 11 insertions(+), 1 deletions(-)

lib/std/target.zig+11-1
......@@ -2220,6 +2220,17 @@ pub const Target = struct {
22202220 .longdouble => return 128,
22212221 },
22222222
2223 .opencl => switch (c_type) {
2224 .char => return 8,
2225 .short, .ushort => return 16,
2226 .int, .uint, .float => return 32,
2227 .long, .ulong, .double => return 64,
2228 .longlong, .ulonglong => return 128,
2229 // Note: The OpenCL specification does not guarantee a particular size for long double,
2230 // but clang uses 128 bits.
2231 .longdouble => return 128,
2232 },
2233
22232234 .cloudabi,
22242235 .kfreebsd,
22252236 .lv2,
......@@ -2234,7 +2245,6 @@ pub const Target = struct {
22342245 .contiki,
22352246 .hermit,
22362247 .hurd,
2237 .opencl,
22382248 .glsl450,
22392249 .vulkan,
22402250 .driverkit,