From ca016350752144e7bd4de3975792e9e8c93e31d1 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Thu, 13 Mar 2025 17:43:43 +0100 Subject: [PATCH] clc: support fp16 spec constants Reviewed-by: Alyssa Rosenzweig Reviewed-by: Adam Jackson Part-of: --- src/compiler/clc/clc.h | 1 + src/compiler/clc/clc_helpers.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/clc/clc.h b/src/compiler/clc/clc.h index 27112d18b85..cb1befad714 100644 --- a/src/compiler/clc/clc.h +++ b/src/compiler/clc/clc.h @@ -175,6 +175,7 @@ struct clc_kernel_info { enum clc_spec_constant_type { CLC_SPEC_CONSTANT_UNKNOWN, CLC_SPEC_CONSTANT_BOOL, + CLC_SPEC_CONSTANT_HALF, CLC_SPEC_CONSTANT_FLOAT, CLC_SPEC_CONSTANT_DOUBLE, CLC_SPEC_CONSTANT_INT8, diff --git a/src/compiler/clc/clc_helpers.cpp b/src/compiler/clc/clc_helpers.cpp index 15861ed39a4..cbf46ce7aa4 100644 --- a/src/compiler/clc/clc_helpers.cpp +++ b/src/compiler/clc/clc_helpers.cpp @@ -527,7 +527,7 @@ public: literalType = CLC_SPEC_CONSTANT_DOUBLE; break; case 16: - /* Can't be used for a spec constant */ + literalType = CLC_SPEC_CONSTANT_HALF; break; default: unreachable("Unexpected float bit size"); @@ -1373,6 +1373,7 @@ clc_spirv_specialize(const struct clc_binary *in_spirv, case CLC_SPEC_CONSTANT_INT8: words.push_back((uint32_t)(int32_t)consts->specializations[i].value.i8); break; + case CLC_SPEC_CONSTANT_HALF: case CLC_SPEC_CONSTANT_UINT16: words.push_back((uint32_t)consts->specializations[i].value.u16); break;