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;