7#ifndef LOOMC_TARGET_SPIRV_PROFILE_H_
8#define LOOMC_TARGET_SPIRV_PROFILE_H_
91typedef enum loomc_spirv_feature_e {
287#define LOOMC_SPIRV_VERSION(major, minor) \
288 ((((uint32_t)(major)) << 16) | (((uint32_t)(minor)) << 8))
291#define LOOMC_SPIRV_VERSION_1_0 LOOMC_SPIRV_VERSION(1, 0)
294#define LOOMC_SPIRV_VERSION_1_1 LOOMC_SPIRV_VERSION(1, 1)
297#define LOOMC_SPIRV_VERSION_1_2 LOOMC_SPIRV_VERSION(1, 2)
300#define LOOMC_SPIRV_VERSION_1_3 LOOMC_SPIRV_VERSION(1, 3)
303#define LOOMC_SPIRV_VERSION_1_4 LOOMC_SPIRV_VERSION(1, 4)
306#define LOOMC_SPIRV_VERSION_1_5 LOOMC_SPIRV_VERSION(1, 5)
309#define LOOMC_SPIRV_VERSION_1_6 LOOMC_SPIRV_VERSION(1, 6)
315static inline uint32_t loomc_spirv_max_version_from_vulkan_api_version(
316 uint32_t vulkan_major, uint32_t vulkan_minor) {
317 if (vulkan_major > 1 || (vulkan_major == 1 && vulkan_minor >= 3)) {
320 if (vulkan_major == 1 && vulkan_minor >= 2) {
323 if (vulkan_major == 1 && vulkan_minor >= 1) {
334 ? (UINT64_C(1) << feature)
343typedef enum loomc_spirv_limit_e {
410typedef enum loomc_spirv_environment_e {
427typedef enum loomc_spirv_scalar_type_e {
469typedef enum loomc_spirv_scope_e {
493typedef enum loomc_spirv_cooperative_matrix_layout_flag_bits_e {
505typedef enum loomc_spirv_cooperative_matrix_operand_flag_bits_e {
526typedef enum loomc_spirv_component_type_e {
574typedef enum loomc_spirv_cooperative_vector_matrix_layout_flag_bits_e {
594typedef enum loomc_spirv_cooperative_vector_flag_bits_e {
606typedef enum loomc_spirv_storage_class_flag_bits_e {
621typedef enum loomc_spirv_profile_preset_e {
1007 uint32_t* out_capability);
1017 uint32_t* out_opcode);
1027 uint32_t* out_storage_class);
1037 uint32_t* out_decoration);
#define LOOMC_API_EXPORT
Exports a public Loom C API symbol from a shared library build.
Definition base.h:34
size_t loomc_host_size_t
Host allocation and container size type.
Definition base.h:45
loomc_structure_type_t
Structure type values used by extensible public descriptors.
Definition base.h:181
struct iree_status_handle_t * loomc_status_t
Opaque status handle.
Definition base.h:55
Shared operation result container.
struct loomc_result_t loomc_result_t
Immutable operation result.
Definition result.h:71
loomc_spirv_storage_class_flag_bits_t
Storage-class fact bits used by cooperative operation rows.
Definition spirv/profile.h:606
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_STORAGE_BUFFER
StorageBuffer storage class is accepted.
Definition spirv/profile.h:611
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_PHYSICAL_STORAGE_BUFFER
PhysicalStorageBuffer storage class is accepted.
Definition spirv/profile.h:614
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_WORKGROUP
Workgroup storage class is accepted.
Definition spirv/profile.h:608
#define LOOMC_SPIRV_VERSION_1_6
SPIR-V 1.6 binary version word.
Definition spirv/profile.h:309
loomc_status_t loomc_spirv_target_profile_extension_at(const loomc_target_profile_t *profile, loomc_host_size_t index, loomc_string_view_t *out_extension)
Returns an OpExtension row by index.
loomc_spirv_cooperative_matrix_layout_flag_bits_t
Cooperative matrix layout fact bits.
Definition spirv/profile.h:493
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_LAYOUT_COLUMN_MAJOR_BIT
ColumnMajorKHR layout is accepted.
Definition spirv/profile.h:498
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_LAYOUT_ROW_MAJOR_BIT
RowMajorKHR layout is accepted.
Definition spirv/profile.h:495
loomc_spirv_scalar_type_t
SPIR-V semantic scalar type fact.
Definition spirv/profile.h:427
@ LOOMC_SPIRV_SCALAR_TYPE_U64
Unsigned 64-bit integer scalar type.
Definition spirv/profile.h:465
@ LOOMC_SPIRV_SCALAR_TYPE_F64
IEEE binary64 floating-point scalar type.
Definition spirv/profile.h:438
@ LOOMC_SPIRV_SCALAR_TYPE_F32
IEEE binary32 floating-point scalar type.
Definition spirv/profile.h:435
@ LOOMC_SPIRV_SCALAR_TYPE_S16
Signed 16-bit integer scalar type.
Definition spirv/profile.h:447
@ LOOMC_SPIRV_SCALAR_TYPE_S32
Signed 32-bit integer scalar type.
Definition spirv/profile.h:450
@ LOOMC_SPIRV_SCALAR_TYPE_U32
Unsigned 32-bit integer scalar type.
Definition spirv/profile.h:462
@ LOOMC_SPIRV_SCALAR_TYPE_UNKNOWN
Unknown or uninitialized scalar type.
Definition spirv/profile.h:429
@ LOOMC_SPIRV_SCALAR_TYPE_BF16
KHR bfloat16 scalar type.
Definition spirv/profile.h:441
@ LOOMC_SPIRV_SCALAR_TYPE_S8
Signed 8-bit integer scalar type.
Definition spirv/profile.h:444
@ LOOMC_SPIRV_SCALAR_TYPE_F16
IEEE binary16 floating-point scalar type.
Definition spirv/profile.h:432
@ LOOMC_SPIRV_SCALAR_TYPE_U8
Unsigned 8-bit integer scalar type.
Definition spirv/profile.h:456
@ LOOMC_SPIRV_SCALAR_TYPE_S64
Signed 64-bit integer scalar type.
Definition spirv/profile.h:453
@ LOOMC_SPIRV_SCALAR_TYPE_U16
Unsigned 16-bit integer scalar type.
Definition spirv/profile.h:459
loomc_spirv_cooperative_matrix_operand_flag_bits_t
Cooperative matrix operand fact bits.
Definition spirv/profile.h:505
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_B_SIGNED_COMPONENTS
Matrix B signed-components operand is required.
Definition spirv/profile.h:510
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_C_SIGNED_COMPONENTS
Matrix C signed-components operand is required.
Definition spirv/profile.h:513
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_SATURATING_ACCUMULATION
Saturating accumulation operand is required.
Definition spirv/profile.h:519
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_RESULT_SIGNED_COMPONENTS
Matrix result signed-components operand is required.
Definition spirv/profile.h:516
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_A_SIGNED_COMPONENTS
Matrix A signed-components operand is required.
Definition spirv/profile.h:507
loomc_spirv_cooperative_vector_flag_bits_t
Cooperative vector behavior fact bits.
Definition spirv/profile.h:594
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_FLAG_TRANSPOSE
Transposed opaque matrix layout is accepted.
Definition spirv/profile.h:596
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_FLAG_TRAINING
Row is intended for training operations rather than inference only.
Definition spirv/profile.h:599
#define LOOMC_SPIRV_VERSION_1_5
SPIR-V 1.5 binary version word.
Definition spirv/profile.h:306
uint32_t loomc_spirv_cooperative_matrix_layout_flags_t
Bitset of loomc_spirv_cooperative_matrix_layout_flag_bits_t values.
Definition spirv/profile.h:502
loomc_spirv_limit_t
Stable SPIR-V numeric limit fact identifier.
Definition spirv/profile.h:343
@ LOOMC_SPIRV_LIMIT_UNKNOWN
Unknown or uninitialized limit.
Definition spirv/profile.h:345
@ LOOMC_SPIRV_LIMIT_DEFAULT_SUBGROUP_SIZE
Device preference when a root has no fixed subgroup requirement.
Definition spirv/profile.h:389
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_Z
Maximum local workgroup size along the z dimension.
Definition spirv/profile.h:354
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_Y
Maximum dispatched workgroup count along the y dimension.
Definition spirv/profile.h:370
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_X
Maximum local workgroup size along the x dimension.
Definition spirv/profile.h:348
@ LOOMC_SPIRV_LIMIT_COUNT
Number of public SPIR-V limit identifiers.
Definition spirv/profile.h:402
@ LOOMC_SPIRV_LIMIT_MAX_SUBGROUP_SIZE
Largest selectable compute subgroup width.
Definition spirv/profile.h:396
@ LOOMC_SPIRV_LIMIT_MAX_FLAT_WORKGROUP_SIZE
Maximum product of local workgroup dimensions.
Definition spirv/profile.h:357
@ LOOMC_SPIRV_LIMIT_MAX_FLAT_GRID_SIZE
Maximum product of dispatched grid dimensions, in workitems.
Definition spirv/profile.h:386
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_Z
Maximum dispatched workgroup count along the z dimension.
Definition spirv/profile.h:373
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SUBGROUP_COUNT
Maximum subgroups per workgroup for a requested nondefault width.
Definition spirv/profile.h:399
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_X
Maximum dispatched workgroup count along the x dimension.
Definition spirv/profile.h:367
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_STORAGE_BYTES
Maximum bytes reserved in SPIR-V Workgroup storage by one entry point.
Definition spirv/profile.h:361
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_Y
Maximum dispatched grid size along the y dimension, in workitems.
Definition spirv/profile.h:379
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_Y
Maximum local workgroup size along the y dimension.
Definition spirv/profile.h:351
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_Z
Maximum dispatched grid size along the z dimension, in workitems.
Definition spirv/profile.h:382
@ LOOMC_SPIRV_LIMIT_SUBGROUP_SIZE
Fixed target-wide subgroup size in invocations.
Definition spirv/profile.h:364
@ LOOMC_SPIRV_LIMIT_MIN_SUBGROUP_SIZE
Smallest selectable compute subgroup width (powers of two only).
Definition spirv/profile.h:392
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_X
Maximum dispatched grid size along the x dimension, in workitems.
Definition spirv/profile.h:376
loomc_status_t loomc_target_profile_create_spirv(loomc_target_environment_t *target_environment, const loomc_spirv_profile_options_t *options, loomc_allocator_t allocator, loomc_target_profile_t **out_profile, loomc_result_t **out_result)
Creates a reusable SPIR-V target profile.
loomc_status_t loomc_spirv_target_profile_cooperative_vector_row_at(const loomc_target_profile_t *profile, loomc_host_size_t index, loomc_spirv_cooperative_vector_row_t *out_row)
Returns a cooperative vector fact row by index.
loomc_status_t loomc_spirv_target_profile_opcode_at(const loomc_target_profile_t *profile, loomc_host_size_t index, uint32_t *out_opcode)
Returns an opcode numeric row by index.
uint32_t loomc_spirv_storage_class_flags_t
Bitset of loomc_spirv_storage_class_flag_bits_t values.
Definition spirv/profile.h:618
uint32_t loomc_spirv_cooperative_vector_flags_t
Bitset of loomc_spirv_cooperative_vector_flag_bits_t values.
Definition spirv/profile.h:603
loomc_status_t loomc_spirv_target_profile_refine(const loomc_target_profile_t *base_profile, const loomc_spirv_profile_options_t *options, loomc_allocator_t allocator, loomc_target_profile_t **out_profile, loomc_result_t **out_result)
Refines a SPIR-V target profile with additional facts.
loomc_spirv_scope_t
SPIR-V Scope operand values used by public profile fact rows.
Definition spirv/profile.h:469
@ LOOMC_SPIRV_SCOPE_CROSS_DEVICE
CrossDevice scope.
Definition spirv/profile.h:471
@ LOOMC_SPIRV_SCOPE_SUBGROUP
Subgroup scope.
Definition spirv/profile.h:480
@ LOOMC_SPIRV_SCOPE_SHADER_CALL_KHR
ShaderCallKHR scope.
Definition spirv/profile.h:489
@ LOOMC_SPIRV_SCOPE_DEVICE
Device scope.
Definition spirv/profile.h:474
@ LOOMC_SPIRV_SCOPE_QUEUE_FAMILY
QueueFamily scope.
Definition spirv/profile.h:486
@ LOOMC_SPIRV_SCOPE_WORKGROUP
Workgroup scope.
Definition spirv/profile.h:477
@ LOOMC_SPIRV_SCOPE_INVOCATION
Invocation scope.
Definition spirv/profile.h:483
loomc_status_t loomc_spirv_target_profile_storage_class_at(const loomc_target_profile_t *profile, loomc_host_size_t index, uint32_t *out_storage_class)
Returns a storage-class numeric row by index.
#define LOOMC_SPIRV_VERSION_1_0
SPIR-V 1.0 binary version word.
Definition spirv/profile.h:291
uint32_t loomc_spirv_cooperative_vector_matrix_layout_flags_t
Bitset of loomc_spirv_cooperative_vector_matrix_layout_flag_bits_t values.
Definition spirv/profile.h:591
loomc_status_t loomc_spirv_target_profile_query_environment(const loomc_target_profile_t *profile, loomc_spirv_environment_t environment, loomc_spirv_environment_value_t *out_value)
Returns the known state and value for one SPIR-V environment fact.
loomc_spirv_environment_t
Stable SPIR-V numeric environment fact identifier.
Definition spirv/profile.h:410
@ LOOMC_SPIRV_ENVIRONMENT_UNKNOWN
Unknown or uninitialized environment fact.
Definition spirv/profile.h:412
@ LOOMC_SPIRV_ENVIRONMENT_MAX_SPIRV_VERSION
Maximum SPIR-V binary version accepted by the target.
Definition spirv/profile.h:415
@ LOOMC_SPIRV_ENVIRONMENT_COUNT
Number of public SPIR-V environment identifiers.
Definition spirv/profile.h:418
loomc_spirv_cooperative_vector_matrix_layout_flag_bits_t
Cooperative vector matrix-layout fact bits.
Definition spirv/profile.h:574
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_BIT
TrainingOptimalNV layout is accepted.
Definition spirv/profile.h:586
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_BIT
InferencingOptimalNV layout is accepted.
Definition spirv/profile.h:582
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_BIT
ColumnMajorNV layout is accepted.
Definition spirv/profile.h:579
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_BIT
RowMajorNV layout is accepted.
Definition spirv/profile.h:576
loomc_status_t loomc_spirv_target_profile_decoration_at(const loomc_target_profile_t *profile, loomc_host_size_t index, uint32_t *out_decoration)
Returns a decoration numeric row by index.
loomc_status_t loomc_spirv_target_profile_capability_at(const loomc_target_profile_t *profile, loomc_host_size_t index, uint32_t *out_capability)
Returns an OpCapability numeric row by index.
loomc_spirv_feature_t
Stable SPIR-V feature fact identifier.
Definition spirv/profile.h:91
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM_SHUFFLE
Subgroup indexed and XOR shuffle operations.
Definition spirv/profile.h:230
@ LOOMC_SPIRV_FEATURE_WORKGROUP_FLOAT64_ATOMICS
64-bit floating-point basic atomics in workgroup memory.
Definition spirv/profile.h:180
@ LOOMC_SPIRV_FEATURE_FLOAT64_ROUNDING_RTE
F64 RoundingModeRTE with any required companion-width modes.
Definition spirv/profile.h:266
@ LOOMC_SPIRV_FEATURE_FLOAT16_64_DENORM_PRESERVE
F16/F64 DenormPreserve modes selectable together, including F32 when required.
Definition spirv/profile.h:196
@ LOOMC_SPIRV_FEATURE_FLOAT_ALL_ROUNDING_RTE
RoundingModeRTE requires the mode on all floating-point widths.
Definition spirv/profile.h:270
@ LOOMC_SPIRV_FEATURE_PHYSICAL_STORAGE_BUFFER
SPV_KHR_physical_storage_buffer support.
Definition spirv/profile.h:99
@ LOOMC_SPIRV_FEATURE_FLOAT64_SIGNED_ZERO_INF_NAN_PRESERVE
F64 SignedZeroInfNanPreserve execution-mode support.
Definition spirv/profile.h:212
@ LOOMC_SPIRV_FEATURE_FLOAT64
64-bit floating-point scalar support.
Definition spirv/profile.h:105
@ LOOMC_SPIRV_FEATURE_WORKGROUP_FLOAT32_ATOMICS
32-bit floating-point basic atomics in workgroup memory.
Definition spirv/profile.h:168
@ LOOMC_SPIRV_FEATURE_WORKGROUP_FLOAT64_ATOMIC_ADD
64-bit floating-point atomic add in workgroup memory.
Definition spirv/profile.h:186
@ LOOMC_SPIRV_FEATURE_FLOAT32_SIGNED_ZERO_INF_NAN_PRESERVE
F32 SignedZeroInfNanPreserve execution-mode support.
Definition spirv/profile.h:209
@ LOOMC_SPIRV_FEATURE_FLOAT_ALL_DENORM_PRESERVE
DenormPreserve requires the mode on all floating-point widths.
Definition spirv/profile.h:268
@ LOOMC_SPIRV_FEATURE_INT16
16-bit integer scalar support.
Definition spirv/profile.h:111
@ LOOMC_SPIRV_FEATURE_VULKAN_MEMORY_MODEL_DEVICE_SCOPE
Vulkan memory-model Device scope support.
Definition spirv/profile.h:144
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM
Core subgroup operations and subgroup memory scope.
Definition spirv/profile.h:141
@ LOOMC_SPIRV_FEATURE_UNKNOWN
Unknown or uninitialized feature.
Definition spirv/profile.h:93
@ LOOMC_SPIRV_FEATURE_BFLOAT16_DOT_PRODUCT_KHR
SPV_KHR_bfloat16 dot-product support.
Definition spirv/profile.h:132
@ LOOMC_SPIRV_FEATURE_FLOAT64_TO_FLOAT16_CONVERSION
Native F64-to-F16 conversion satisfies the scalar.fptrunc contract.
Definition spirv/profile.h:215
@ LOOMC_SPIRV_FEATURE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_8BIT_ACCESS_KHR
8-bit storage in explicitly laid out Workgroup blocks.
Definition spirv/profile.h:275
@ LOOMC_SPIRV_FEATURE_WORKGROUP_FLOAT32_ATOMIC_ADD
32-bit floating-point atomic add in workgroup memory.
Definition spirv/profile.h:174
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_FLOAT16_ATOMIC_ADD
16-bit floating-point atomic add in storage-buffer memory.
Definition spirv/profile.h:159
@ LOOMC_SPIRV_FEATURE_WORKGROUP_INT64_ATOMICS
64-bit integer atomics in workgroup memory.
Definition spirv/profile.h:150
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_FLOAT32_ATOMICS
32-bit floating-point basic atomics in storage-buffer memory.
Definition spirv/profile.h:165
@ LOOMC_SPIRV_FEATURE_COOPERATIVE_MATRIX_KHR
SPV_KHR_cooperative_matrix support.
Definition spirv/profile.h:126
@ LOOMC_SPIRV_FEATURE_VULKAN_SHADER
Vulkan shader-module baseline.
Definition spirv/profile.h:96
@ LOOMC_SPIRV_FEATURE_COOPERATIVE_VECTOR_TRAINING_NV
SPV_NV_cooperative_vector training-operation support.
Definition spirv/profile.h:123
@ LOOMC_SPIRV_FEATURE_WORKGROUP_FLOAT16_ATOMICS
16-bit floating-point basic atomics in workgroup memory.
Definition spirv/profile.h:156
@ LOOMC_SPIRV_FEATURE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_16BIT_ACCESS_KHR
16-bit storage in explicitly laid out Workgroup blocks.
Definition spirv/profile.h:277
@ LOOMC_SPIRV_FEATURE_FLOAT16
16-bit floating-point scalar support.
Definition spirv/profile.h:102
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM_ARITHMETIC
Arithmetic reductions over active subgroup invocations.
Definition spirv/profile.h:221
@ LOOMC_SPIRV_FEATURE_FLOAT64_DENORM_PRESERVE
F64 DenormPreserve with any required companion-width modes.
Definition spirv/profile.h:262
@ LOOMC_SPIRV_FEATURE_FMA_FLOAT64
Correctly rounded 64-bit fused multiply-add.
Definition spirv/profile.h:254
@ LOOMC_SPIRV_FEATURE_COOPERATIVE_VECTOR_NV
SPV_NV_cooperative_vector support.
Definition spirv/profile.h:120
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_FLOAT16_ATOMICS
16-bit floating-point basic atomics in storage-buffer memory.
Definition spirv/profile.h:153
@ LOOMC_SPIRV_FEATURE_INTEGER_DOT_PRODUCT_INPUT4X8_BIT_PACKED
Integer dots admit four bytes packed in an i32.
Definition spirv/profile.h:245
@ LOOMC_SPIRV_FEATURE_FLOAT16_64_ROUNDING_RTE
F16/F64 RoundingModeRTE modes selectable together, including F32 when required.
Definition spirv/profile.h:200
@ LOOMC_SPIRV_FEATURE_BFLOAT16_COOPERATIVE_MATRIX_KHR
SPV_KHR_bfloat16 cooperative-matrix support.
Definition spirv/profile.h:135
@ LOOMC_SPIRV_FEATURE_FLOAT32_ROUNDING_RTE
F32 RoundingModeRTE with any required companion-width modes.
Definition spirv/profile.h:203
@ LOOMC_SPIRV_FEATURE_SUBGROUP_EXTENDED_TYPES
Logical Vulkan device enables subgroup operations on I8/I16/I64 and F16.
Definition spirv/profile.h:227
@ LOOMC_SPIRV_FEATURE_INTEGER_DOT_PRODUCT_INPUT_ALL
Integer dots admit all native integer vector types.
Definition spirv/profile.h:239
@ LOOMC_SPIRV_FEATURE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_KHR
Explicit byte layout of Workgroup storage.
Definition spirv/profile.h:273
@ LOOMC_SPIRV_FEATURE_INT8
8-bit integer scalar support.
Definition spirv/profile.h:108
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_INT64_ATOMICS
64-bit integer atomics in storage-buffer memory.
Definition spirv/profile.h:147
@ LOOMC_SPIRV_FEATURE_INTEGER_DOT_PRODUCT
SPV_KHR_integer_dot_product operations.
Definition spirv/profile.h:236
@ LOOMC_SPIRV_FEATURE_FLOAT32_DENORM_PRESERVE
F32 DenormPreserve with any required companion-width modes.
Definition spirv/profile.h:189
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_FLOAT32_ATOMIC_ADD
32-bit floating-point atomic add in storage-buffer memory.
Definition spirv/profile.h:171
@ LOOMC_SPIRV_FEATURE_FLOAT16_ROUNDING_RTE
F16 RoundingModeRTE with any required companion-width modes.
Definition spirv/profile.h:264
@ LOOMC_SPIRV_FEATURE_FMA_FLOAT16
Correctly rounded 16-bit fused multiply-add.
Definition spirv/profile.h:248
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_FLOAT64_ATOMIC_ADD
64-bit floating-point atomic add in storage-buffer memory.
Definition spirv/profile.h:183
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM_VOTE
Boolean votes over active subgroup invocations.
Definition spirv/profile.h:218
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_16BIT_ACCESS
16-bit storage-buffer access support.
Definition spirv/profile.h:117
@ LOOMC_SPIRV_FEATURE_WORKGROUP_FLOAT16_ATOMIC_ADD
16-bit floating-point atomic add in workgroup memory.
Definition spirv/profile.h:162
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM_BALLOT
Subgroup ballot operations.
Definition spirv/profile.h:192
@ LOOMC_SPIRV_FEATURE_FLOAT16_SIGNED_ZERO_INF_NAN_PRESERVE
F16 SignedZeroInfNanPreserve execution-mode support.
Definition spirv/profile.h:206
@ LOOMC_SPIRV_FEATURE_BFLOAT16_TYPE_KHR
SPV_KHR_bfloat16 scalar type support.
Definition spirv/profile.h:129
@ LOOMC_SPIRV_FEATURE_INT64
64-bit integer scalar support.
Definition spirv/profile.h:138
@ LOOMC_SPIRV_FEATURE_COUNT
Number of public SPIR-V feature identifiers.
Definition spirv/profile.h:280
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM_CLUSTERED
Arithmetic reductions over contiguous power-of-two subgroup clusters.
Definition spirv/profile.h:224
@ LOOMC_SPIRV_FEATURE_FLOAT_CONTROLS2
Per-instruction floating-point semantics.
Definition spirv/profile.h:257
@ LOOMC_SPIRV_FEATURE_INTEGER_DOT_PRODUCT_INPUT4X8_BIT
Integer dots admit four-byte vectors.
Definition spirv/profile.h:242
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_8BIT_ACCESS
8-bit storage-buffer access support.
Definition spirv/profile.h:114
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_FLOAT64_ATOMICS
64-bit floating-point basic atomics in storage-buffer memory.
Definition spirv/profile.h:177
@ LOOMC_SPIRV_FEATURE_FMA_FLOAT32
Correctly rounded 32-bit fused multiply-add.
Definition spirv/profile.h:251
@ LOOMC_SPIRV_FEATURE_FLOAT16_DENORM_PRESERVE
F16 DenormPreserve with any required companion-width modes.
Definition spirv/profile.h:260
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM_SHUFFLE_RELATIVE
Subgroup up and down shuffle operations.
Definition spirv/profile.h:233
loomc_status_t loomc_spirv_target_profile_query_info(const loomc_target_profile_t *profile, loomc_spirv_profile_info_t *out_info)
Returns prepared SPIR-V profile summary rows.
#define LOOMC_SPIRV_VERSION_1_3
SPIR-V 1.3 binary version word.
Definition spirv/profile.h:300
loomc_spirv_component_type_t
SPIR-V cooperative vector ComponentType operand values.
Definition spirv/profile.h:526
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT32_NV
Float32NV component type.
Definition spirv/profile.h:531
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT64_NV
UnsignedInt64NV component type.
Definition spirv/profile.h:558
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT8_NV
SignedInt8NV component type.
Definition spirv/profile.h:537
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT64_NV
SignedInt64NV component type.
Definition spirv/profile.h:546
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT8_NV
UnsignedInt8NV component type.
Definition spirv/profile.h:549
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT32_NV
SignedInt32NV component type.
Definition spirv/profile.h:543
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT16_NV
UnsignedInt16NV component type.
Definition spirv/profile.h:552
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT8_PACKED_NV
SignedInt8PackedNV component type.
Definition spirv/profile.h:561
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT32_NV
UnsignedInt32NV component type.
Definition spirv/profile.h:555
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT_E4_M3_NV
FloatE4M3NV component type.
Definition spirv/profile.h:567
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT64_NV
Float64NV component type.
Definition spirv/profile.h:534
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT16_NV
Float16NV component type.
Definition spirv/profile.h:528
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT16_NV
SignedInt16NV component type.
Definition spirv/profile.h:540
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT8_PACKED_NV
UnsignedInt8PackedNV component type.
Definition spirv/profile.h:564
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT_E5_M2_NV
FloatE5M2NV component type.
Definition spirv/profile.h:570
loomc_status_t loomc_spirv_target_profile_query_limit(const loomc_target_profile_t *profile, loomc_spirv_limit_t limit, loomc_spirv_limit_value_t *out_value)
Returns the known state and value for one SPIR-V numeric limit.
loomc_status_t loomc_spirv_target_profile_cooperative_matrix_row_at(const loomc_target_profile_t *profile, loomc_host_size_t index, loomc_spirv_cooperative_matrix_row_t *out_row)
Returns a cooperative matrix fact row by index.
uint64_t loomc_spirv_feature_bits_t
Bitset of loomc_spirv_feature_t values.
Definition spirv/profile.h:284
loomc_spirv_profile_preset_t
Built-in SPIR-V profile preset.
Definition spirv/profile.h:621
@ LOOMC_SPIRV_PROFILE_PRESET_VULKAN_1_3_BDA
Vulkan 1.3 shader profile with physical-storage-buffer addressing.
Definition spirv/profile.h:626
@ LOOMC_SPIRV_PROFILE_PRESET_NONE
No preset facts.
Definition spirv/profile.h:623
loomc_status_t loomc_spirv_target_profile_query_feature(const loomc_target_profile_t *profile, loomc_spirv_feature_t feature, loomc_target_fact_state_t *out_state)
Returns the known state for one SPIR-V feature fact.
uint32_t loomc_spirv_cooperative_matrix_operand_flags_t
Bitset of loomc_spirv_cooperative_matrix_operand_flag_bits_t values.
Definition spirv/profile.h:523
Host allocator used for persistent Loom object storage.
Definition base.h:426
Cooperative matrix operation fact row.
Definition spirv/profile.h:780
loomc_spirv_cooperative_matrix_layout_flags_t layout_flags
Accepted load/store memory layouts.
Definition spirv/profile.h:818
loomc_spirv_scalar_type_t result_type
Result scalar component type.
Definition spirv/profile.h:812
uint16_t m_size
Result row count and Matrix A row count.
Definition spirv/profile.h:794
loomc_spirv_storage_class_flags_t storage_class_flags
Accepted pointer storage classes for load/store operations.
Definition spirv/profile.h:821
loomc_target_fact_state_t state
Known availability state for this row.
Definition spirv/profile.h:785
loomc_spirv_scalar_type_t rhs_type
Matrix B scalar component type.
Definition spirv/profile.h:806
loomc_string_view_t name
Stable row name for diagnostics, caches, and tests.
Definition spirv/profile.h:782
loomc_spirv_scalar_type_t accumulator_type
Matrix C accumulator scalar component type.
Definition spirv/profile.h:809
loomc_spirv_scalar_type_t lhs_type
Matrix A scalar component type.
Definition spirv/profile.h:803
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:788
loomc_spirv_scope_t scope
Cooperative matrix scope operand.
Definition spirv/profile.h:815
loomc_spirv_feature_bits_t required_features
Feature bits required before this row is legal.
Definition spirv/profile.h:791
uint16_t n_size
Result column count and Matrix B column count.
Definition spirv/profile.h:797
uint16_t k_size
Matrix A column count and Matrix B row count.
Definition spirv/profile.h:800
loomc_spirv_cooperative_matrix_operand_flags_t operand_flags
Required cooperative matrix operand bits for this row.
Definition spirv/profile.h:826
Cooperative vector operation fact row.
Definition spirv/profile.h:830
loomc_spirv_component_type_t result_type
Component type of the Result vector object.
Definition spirv/profile.h:862
loomc_spirv_cooperative_vector_matrix_layout_flags_t matrix_layout_flags
Accepted matrix layout operands.
Definition spirv/profile.h:865
loomc_target_fact_state_t state
Known availability state for this row.
Definition spirv/profile.h:835
loomc_spirv_component_type_t input_type
Component type of the Input vector object.
Definition spirv/profile.h:850
loomc_spirv_cooperative_vector_flags_t flags
Additional cooperative vector behavior flags.
Definition spirv/profile.h:871
loomc_spirv_storage_class_flags_t storage_class_flags
Accepted matrix pointer storage classes.
Definition spirv/profile.h:868
loomc_spirv_feature_bits_t required_features
Feature bits required before this row is legal.
Definition spirv/profile.h:841
loomc_spirv_component_type_t bias_interpretation
BiasInterpretation operand value.
Definition spirv/profile.h:859
uint16_t m_size
Output vector component count.
Definition spirv/profile.h:844
uint16_t k_size
Logical input vector component count.
Definition spirv/profile.h:847
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:838
loomc_spirv_component_type_t matrix_interpretation
MatrixInterpretation operand value.
Definition spirv/profile.h:856
loomc_string_view_t name
Stable row name for diagnostics, caches, and tests.
Definition spirv/profile.h:832
loomc_spirv_component_type_t input_interpretation
InputInterpretation operand value.
Definition spirv/profile.h:853
One SPIR-V environment observation.
Definition spirv/profile.h:666
loomc_target_fact_state_t state
Observed state for the environment fact.
Definition spirv/profile.h:671
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:677
uint64_t value
Observed environment value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:674
loomc_spirv_environment_t environment
Environment fact being observed.
Definition spirv/profile.h:668
Queried SPIR-V environment fact state.
Definition spirv/profile.h:681
uint64_t value
Environment value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:686
loomc_target_fact_state_t state
Known state for the environment fact.
Definition spirv/profile.h:683
One SPIR-V feature observation.
Definition spirv/profile.h:630
loomc_target_fact_state_t state
Observed state for the feature.
Definition spirv/profile.h:635
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:638
loomc_spirv_feature_t feature
Feature being observed.
Definition spirv/profile.h:632
One SPIR-V numeric limit observation.
Definition spirv/profile.h:642
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:653
uint64_t value
Observed limit value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:650
loomc_spirv_limit_t limit
Limit being observed.
Definition spirv/profile.h:644
loomc_target_fact_state_t state
Observed state for the limit.
Definition spirv/profile.h:647
Queried SPIR-V numeric limit state.
Definition spirv/profile.h:657
loomc_target_fact_state_t state
Known state for the limit.
Definition spirv/profile.h:659
uint64_t value
Limit value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:662
Prepared SPIR-V profile summary.
Definition spirv/profile.h:747
loomc_host_size_t storage_class_count
Number of storage-class rows selected by known-true features.
Definition spirv/profile.h:767
loomc_host_size_t cooperative_vector_row_count
Number of cooperative vector rows selected by known-true features.
Definition spirv/profile.h:776
loomc_host_size_t capability_count
Number of OpCapability rows selected by known-true features.
Definition spirv/profile.h:761
loomc_host_size_t decoration_count
Number of decoration rows selected by known-true features.
Definition spirv/profile.h:770
uint32_t minimum_spirv_version
Minimum SPIR-V binary version selected by known-true features.
Definition spirv/profile.h:749
uint32_t addressing_model
SPIR-V addressing model numeric value.
Definition spirv/profile.h:752
uint32_t memory_model
SPIR-V memory model numeric value.
Definition spirv/profile.h:755
loomc_host_size_t extension_count
Number of OpExtension rows selected by known-true features.
Definition spirv/profile.h:758
loomc_host_size_t opcode_count
Number of opcode rows selected by known-true features.
Definition spirv/profile.h:764
loomc_host_size_t cooperative_matrix_row_count
Number of cooperative matrix rows selected by known-true features.
Definition spirv/profile.h:773
SPIR-V target profile creation options.
Definition spirv/profile.h:698
loomc_spirv_profile_preset_t preset
Built-in preset facts applied before explicit feature facts.
Definition spirv/profile.h:713
const loomc_spirv_feature_fact_t * feature_facts
Borrowed feature fact array.
Definition spirv/profile.h:716
loomc_host_size_t environment_fact_count
Number of entries in environment_facts.
Definition spirv/profile.h:731
loomc_host_size_t cooperative_vector_row_count
Number of entries in cooperative_vector_rows.
Definition spirv/profile.h:743
loomc_string_view_t identifier
Stable profile identifier used in diagnostics.
Definition spirv/profile.h:710
const loomc_spirv_cooperative_matrix_row_t * cooperative_matrix_rows
Borrowed cooperative matrix row fact array.
Definition spirv/profile.h:734
const loomc_spirv_environment_fact_t * environment_facts
Borrowed environment fact array.
Definition spirv/profile.h:728
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition spirv/profile.h:704
const loomc_spirv_cooperative_vector_row_t * cooperative_vector_rows
Borrowed cooperative vector row fact array.
Definition spirv/profile.h:740
const loomc_spirv_limit_fact_t * limit_facts
Borrowed numeric limit fact array.
Definition spirv/profile.h:722
loomc_host_size_t cooperative_matrix_row_count
Number of entries in cooperative_matrix_rows.
Definition spirv/profile.h:737
loomc_host_size_t feature_fact_count
Number of entries in feature_facts.
Definition spirv/profile.h:719
loomc_structure_type_t type
Structure type.
Definition spirv/profile.h:701
loomc_host_size_t limit_fact_count
Number of entries in limit_facts.
Definition spirv/profile.h:725
const void * next
Reserved extension chain. Must be NULL.
Definition spirv/profile.h:707
Non-owning string view over bytes that need not be NUL-terminated.
Definition base.h:63
SPIR-V target package identity and environment creation.
struct loomc_target_environment_t loomc_target_environment_t
Prepared immutable target environment.
Definition target.h:124
loomc_target_fact_state_t
Three-valued target fact state.
Definition target.h:143
struct loomc_target_profile_t loomc_target_profile_t
Prepared immutable target profile.
Definition target.h:136