@@ -344,6 +344,7 @@ def SPV_KHR_subgroup_rotate : I32EnumAttrCase<"SPV_KHR_subgroup
344344def SPV_KHR_non_semantic_info : I32EnumAttrCase<"SPV_KHR_non_semantic_info", 29>;
345345def SPV_KHR_terminate_invocation : I32EnumAttrCase<"SPV_KHR_terminate_invocation", 30>;
346346def SPV_KHR_cooperative_matrix : I32EnumAttrCase<"SPV_KHR_cooperative_matrix", 31>;
347+ def SPV_KHR_bfloat16 : I32EnumAttrCase<"SPV_KHR_bfloat16", 32>;
347348
348349def SPV_EXT_demote_to_helper_invocation : I32EnumAttrCase<"SPV_EXT_demote_to_helper_invocation", 1000>;
349350def SPV_EXT_descriptor_indexing : I32EnumAttrCase<"SPV_EXT_descriptor_indexing", 1001>;
@@ -436,7 +437,7 @@ def SPIRV_ExtensionAttr :
436437 SPV_KHR_fragment_shader_barycentric, SPV_KHR_ray_cull_mask,
437438 SPV_KHR_uniform_group_instructions, SPV_KHR_subgroup_rotate,
438439 SPV_KHR_non_semantic_info, SPV_KHR_terminate_invocation,
439- SPV_KHR_cooperative_matrix,
440+ SPV_KHR_cooperative_matrix, SPV_KHR_bfloat16,
440441 SPV_EXT_demote_to_helper_invocation, SPV_EXT_descriptor_indexing,
441442 SPV_EXT_fragment_fully_covered, SPV_EXT_fragment_invocation_density,
442443 SPV_EXT_fragment_shader_interlock, SPV_EXT_physical_storage_buffer,
@@ -1412,6 +1413,23 @@ def SPIRV_C_ShaderStereoViewNV : I32EnumAttrCase<"Shade
14121413 Extension<[SPV_NV_stereo_view_rendering]>
14131414 ];
14141415}
1416+ def SPIRV_C_BFloat16TypeKHR : I32EnumAttrCase<"BFloat16TypeKHR", 5116> {
1417+ list<Availability> availability = [
1418+ Extension<[SPV_KHR_bfloat16]>
1419+ ];
1420+ }
1421+ def SPIRV_C_BFloat16DotProductKHR : I32EnumAttrCase<"BFloat16DotProductKHR", 5117> {
1422+ list<I32EnumAttrCase> implies = [SPIRV_C_BFloat16TypeKHR];
1423+ list<Availability> availability = [
1424+ Extension<[SPV_KHR_bfloat16]>
1425+ ];
1426+ }
1427+ def SPIRV_C_BFloat16CooperativeMatrixKHR : I32EnumAttrCase<"BFloat16CooperativeMatrixKHR", 5118> {
1428+ list<I32EnumAttrCase> implies = [SPIRV_C_BFloat16TypeKHR, SPIRV_C_CooperativeMatrixKHR];
1429+ list<Availability> availability = [
1430+ Extension<[SPV_KHR_bfloat16]>
1431+ ];
1432+ }
14151433
14161434def SPIRV_C_Bfloat16ConversionINTEL : I32EnumAttrCase<"Bfloat16ConversionINTEL", 6115> {
14171435 list<Availability> availability = [
@@ -1518,7 +1536,8 @@ def SPIRV_CapabilityAttr :
15181536 SPIRV_C_StorageTexelBufferArrayNonUniformIndexing,
15191537 SPIRV_C_ShaderViewportIndexLayerEXT, SPIRV_C_ShaderViewportMaskNV,
15201538 SPIRV_C_ShaderStereoViewNV, SPIRV_C_Bfloat16ConversionINTEL,
1521- SPIRV_C_CacheControlsINTEL
1539+ SPIRV_C_CacheControlsINTEL, SPIRV_C_BFloat16TypeKHR,
1540+ SPIRV_C_BFloat16DotProductKHR, SPIRV_C_BFloat16CooperativeMatrixKHR
15221541 ]>;
15231542
15241543def SPIRV_AM_Logical : I32EnumAttrCase<"Logical", 0>;
@@ -3217,6 +3236,16 @@ def SPIRV_ExecutionModelAttr :
32173236 SPIRV_EM_TaskEXT, SPIRV_EM_MeshEXT
32183237 ]>;
32193238
3239+ def SPIRV_FPE_BFloat16KHR : I32EnumAttrCase<"BFloat16KHR", 0> {
3240+ list<Availability> availability = [
3241+ Capability<[SPIRV_C_BFloat16TypeKHR]>
3242+ ];
3243+ }
3244+ def SPIRV_FPEncodingAttr :
3245+ SPIRV_I32EnumAttr<"FPEncoding", "valid SPIR-V FPEncoding", "f_p_encoding", [
3246+ SPIRV_FPE_BFloat16KHR
3247+ ]>;
3248+
32203249def SPIRV_FC_None : I32BitEnumAttrCaseNone<"None">;
32213250def SPIRV_FC_Inline : I32BitEnumAttrCaseBit<"Inline", 0>;
32223251def SPIRV_FC_DontInline : I32BitEnumAttrCaseBit<"DontInline", 1>;
@@ -4161,10 +4190,12 @@ def SPIRV_Integer : AnyIntOfWidths<[8, 16, 32, 64]>;
41614190def SPIRV_Int16 : TypeAlias<I16, "Int16">;
41624191def SPIRV_Int32 : TypeAlias<I32, "Int32">;
41634192def SPIRV_Float32 : TypeAlias<F32, "Float32">;
4193+ def SPIRV_BFloat16KHR : TypeAlias<BF16, "BFloat16">;
41644194def SPIRV_Float : FloatOfWidths<[16, 32, 64]>;
41654195def SPIRV_Float16or32 : FloatOfWidths<[16, 32]>;
4196+ def SPIRV_AnyFloat : AnyTypeOf<[SPIRV_Float, SPIRV_BFloat16KHR]>;
41664197def SPIRV_Vector : VectorOfLengthAndType<[2, 3, 4, 8, 16],
4167- [SPIRV_Bool, SPIRV_Integer, SPIRV_Float ]>;
4198+ [SPIRV_Bool, SPIRV_Integer, SPIRV_AnyFloat ]>;
41684199// Component type check is done in the type parser for the following SPIR-V
41694200// dialect-specific types so we use "Any" here.
41704201def SPIRV_AnyPtr : DialectType<SPIRV_Dialect, SPIRV_IsPtrType,
@@ -4187,14 +4218,14 @@ def SPIRV_AnyStruct : DialectType<SPIRV_Dialect, SPIRV_IsStructType,
41874218def SPIRV_AnySampledImage : DialectType<SPIRV_Dialect, SPIRV_IsSampledImageType,
41884219 "any SPIR-V sampled image type">;
41894220
4190- def SPIRV_Numerical : AnyTypeOf<[SPIRV_Integer, SPIRV_Float ]>;
4221+ def SPIRV_Numerical : AnyTypeOf<[SPIRV_Integer, SPIRV_AnyFloat ]>;
41914222def SPIRV_Scalar : AnyTypeOf<[SPIRV_Numerical, SPIRV_Bool]>;
41924223def SPIRV_Aggregate : AnyTypeOf<[SPIRV_AnyArray, SPIRV_AnyRTArray, SPIRV_AnyStruct]>;
41934224def SPIRV_Composite :
41944225 AnyTypeOf<[SPIRV_Vector, SPIRV_AnyArray, SPIRV_AnyRTArray, SPIRV_AnyStruct,
41954226 SPIRV_AnyCooperativeMatrix, SPIRV_AnyMatrix]>;
41964227def SPIRV_Type : AnyTypeOf<[
4197- SPIRV_Void, SPIRV_Bool, SPIRV_Integer, SPIRV_Float , SPIRV_Vector,
4228+ SPIRV_Void, SPIRV_Bool, SPIRV_Integer, SPIRV_AnyFloat , SPIRV_Vector,
41984229 SPIRV_AnyPtr, SPIRV_AnyArray, SPIRV_AnyRTArray, SPIRV_AnyStruct,
41994230 SPIRV_AnyCooperativeMatrix, SPIRV_AnyMatrix, SPIRV_AnySampledImage,
42004231 SPIRV_AnyImage
0 commit comments