cast types in render_load (#1837)

This commit is contained in:
nimlgen
2023-09-10 07:58:13 -07:00
committed by GitHub
parent e74a6ca7e4
commit 13790b1e20
+3 -2
View File
@@ -61,9 +61,10 @@ class CStyleLanguage(NamedTuple):
return f"read_imagef({buf_name}, smp, {idx})"
if self.uses_vload and buf_dtype == dtypes.float16:
return f"vload_half{'' if output_dtype.sz == 1 else str(output_dtype.sz)}(0, {buf_name}+{idx})"
cast = f"({output_dtype.name})" if output_dtype != buf_dtype else ""
if output_dtype.sz > 1:
return f"({output_dtype.name})(*(({self.smem_prefix if local else self.buffer_prefix}{buf_dtype.name}{output_dtype.sz}*)({buf_name}+{idx})))"
return f"*({buf_name}+{idx})" if self.uses_ptr_arithmetic else f"{buf_name}[{idx}]"
return f"{cast}(*(({self.smem_prefix if local else self.buffer_prefix}{buf_dtype.name}{output_dtype.sz}*)({buf_name}+{idx})))"
return f"{cast}(*({buf_name}+{idx}))" if self.uses_ptr_arithmetic else f"{cast}({buf_name}[{idx}])"
def render_local(self, name:str, size:int):
return self.smem_prefix + f"float {name}[{size}];"