7#ifndef LOOMC_TARGET_SPIRV_PROFILE_H_
8#define LOOMC_TARGET_SPIRV_PROFILE_H_
91typedef enum loomc_spirv_feature_e {
241#define LOOMC_SPIRV_VERSION(major, minor) \
242 ((((uint32_t)(major)) << 16) | (((uint32_t)(minor)) << 8))
245#define LOOMC_SPIRV_VERSION_1_0 LOOMC_SPIRV_VERSION(1, 0)
248#define LOOMC_SPIRV_VERSION_1_1 LOOMC_SPIRV_VERSION(1, 1)
251#define LOOMC_SPIRV_VERSION_1_2 LOOMC_SPIRV_VERSION(1, 2)
254#define LOOMC_SPIRV_VERSION_1_3 LOOMC_SPIRV_VERSION(1, 3)
257#define LOOMC_SPIRV_VERSION_1_4 LOOMC_SPIRV_VERSION(1, 4)
260#define LOOMC_SPIRV_VERSION_1_5 LOOMC_SPIRV_VERSION(1, 5)
263#define LOOMC_SPIRV_VERSION_1_6 LOOMC_SPIRV_VERSION(1, 6)
269static inline uint32_t loomc_spirv_max_version_from_vulkan_api_version(
270 uint32_t vulkan_major, uint32_t vulkan_minor) {
271 if (vulkan_major > 1 || (vulkan_major == 1 && vulkan_minor >= 3)) {
274 if (vulkan_major == 1 && vulkan_minor >= 2) {
277 if (vulkan_major == 1 && vulkan_minor >= 1) {
288 ? (UINT64_C(1) << feature)
297typedef enum loomc_spirv_limit_e {
364typedef enum loomc_spirv_environment_e {
381typedef enum loomc_spirv_scalar_type_e {
423typedef enum loomc_spirv_scope_e {
447typedef enum loomc_spirv_cooperative_matrix_layout_flag_bits_e {
459typedef enum loomc_spirv_cooperative_matrix_operand_flag_bits_e {
480typedef enum loomc_spirv_component_type_e {
528typedef enum loomc_spirv_cooperative_vector_matrix_layout_flag_bits_e {
548typedef enum loomc_spirv_cooperative_vector_flag_bits_e {
560typedef enum loomc_spirv_storage_class_flag_bits_e {
575typedef enum loomc_spirv_profile_preset_e {
961 uint32_t* out_capability);
971 uint32_t* out_opcode);
981 uint32_t* out_storage_class);
991 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:560
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_STORAGE_BUFFER
StorageBuffer storage class is accepted.
Definition spirv/profile.h:565
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_PHYSICAL_STORAGE_BUFFER
PhysicalStorageBuffer storage class is accepted.
Definition spirv/profile.h:568
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_WORKGROUP
Workgroup storage class is accepted.
Definition spirv/profile.h:562
#define LOOMC_SPIRV_VERSION_1_6
SPIR-V 1.6 binary version word.
Definition spirv/profile.h:263
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:447
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_LAYOUT_COLUMN_MAJOR_BIT
ColumnMajorKHR layout is accepted.
Definition spirv/profile.h:452
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_LAYOUT_ROW_MAJOR_BIT
RowMajorKHR layout is accepted.
Definition spirv/profile.h:449
loomc_spirv_scalar_type_t
SPIR-V semantic scalar type fact.
Definition spirv/profile.h:381
@ LOOMC_SPIRV_SCALAR_TYPE_U64
Unsigned 64-bit integer scalar type.
Definition spirv/profile.h:419
@ LOOMC_SPIRV_SCALAR_TYPE_F64
IEEE binary64 floating-point scalar type.
Definition spirv/profile.h:392
@ LOOMC_SPIRV_SCALAR_TYPE_F32
IEEE binary32 floating-point scalar type.
Definition spirv/profile.h:389
@ LOOMC_SPIRV_SCALAR_TYPE_S16
Signed 16-bit integer scalar type.
Definition spirv/profile.h:401
@ LOOMC_SPIRV_SCALAR_TYPE_S32
Signed 32-bit integer scalar type.
Definition spirv/profile.h:404
@ LOOMC_SPIRV_SCALAR_TYPE_U32
Unsigned 32-bit integer scalar type.
Definition spirv/profile.h:416
@ LOOMC_SPIRV_SCALAR_TYPE_UNKNOWN
Unknown or uninitialized scalar type.
Definition spirv/profile.h:383
@ LOOMC_SPIRV_SCALAR_TYPE_BF16
KHR bfloat16 scalar type.
Definition spirv/profile.h:395
@ LOOMC_SPIRV_SCALAR_TYPE_S8
Signed 8-bit integer scalar type.
Definition spirv/profile.h:398
@ LOOMC_SPIRV_SCALAR_TYPE_F16
IEEE binary16 floating-point scalar type.
Definition spirv/profile.h:386
@ LOOMC_SPIRV_SCALAR_TYPE_U8
Unsigned 8-bit integer scalar type.
Definition spirv/profile.h:410
@ LOOMC_SPIRV_SCALAR_TYPE_S64
Signed 64-bit integer scalar type.
Definition spirv/profile.h:407
@ LOOMC_SPIRV_SCALAR_TYPE_U16
Unsigned 16-bit integer scalar type.
Definition spirv/profile.h:413
loomc_spirv_cooperative_matrix_operand_flag_bits_t
Cooperative matrix operand fact bits.
Definition spirv/profile.h:459
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_B_SIGNED_COMPONENTS
Matrix B signed-components operand is required.
Definition spirv/profile.h:464
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_C_SIGNED_COMPONENTS
Matrix C signed-components operand is required.
Definition spirv/profile.h:467
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_SATURATING_ACCUMULATION
Saturating accumulation operand is required.
Definition spirv/profile.h:473
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_RESULT_SIGNED_COMPONENTS
Matrix result signed-components operand is required.
Definition spirv/profile.h:470
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_A_SIGNED_COMPONENTS
Matrix A signed-components operand is required.
Definition spirv/profile.h:461
loomc_spirv_cooperative_vector_flag_bits_t
Cooperative vector behavior fact bits.
Definition spirv/profile.h:548
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_FLAG_TRANSPOSE
Transposed opaque matrix layout is accepted.
Definition spirv/profile.h:550
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_FLAG_TRAINING
Row is intended for training operations rather than inference only.
Definition spirv/profile.h:553
#define LOOMC_SPIRV_VERSION_1_5
SPIR-V 1.5 binary version word.
Definition spirv/profile.h:260
uint32_t loomc_spirv_cooperative_matrix_layout_flags_t
Bitset of loomc_spirv_cooperative_matrix_layout_flag_bits_t values.
Definition spirv/profile.h:456
loomc_spirv_limit_t
Stable SPIR-V numeric limit fact identifier.
Definition spirv/profile.h:297
@ LOOMC_SPIRV_LIMIT_UNKNOWN
Unknown or uninitialized limit.
Definition spirv/profile.h:299
@ LOOMC_SPIRV_LIMIT_DEFAULT_SUBGROUP_SIZE
Device preference when a root has no fixed subgroup requirement.
Definition spirv/profile.h:343
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_Z
Maximum local workgroup size along the z dimension.
Definition spirv/profile.h:308
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_Y
Maximum dispatched workgroup count along the y dimension.
Definition spirv/profile.h:324
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_X
Maximum local workgroup size along the x dimension.
Definition spirv/profile.h:302
@ LOOMC_SPIRV_LIMIT_COUNT
Number of public SPIR-V limit identifiers.
Definition spirv/profile.h:356
@ LOOMC_SPIRV_LIMIT_MAX_SUBGROUP_SIZE
Largest selectable compute subgroup width.
Definition spirv/profile.h:350
@ LOOMC_SPIRV_LIMIT_MAX_FLAT_WORKGROUP_SIZE
Maximum product of local workgroup dimensions.
Definition spirv/profile.h:311
@ LOOMC_SPIRV_LIMIT_MAX_FLAT_GRID_SIZE
Maximum product of dispatched grid dimensions, in workitems.
Definition spirv/profile.h:340
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_Z
Maximum dispatched workgroup count along the z dimension.
Definition spirv/profile.h:327
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SUBGROUP_COUNT
Maximum subgroups per workgroup for a requested nondefault width.
Definition spirv/profile.h:353
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_X
Maximum dispatched workgroup count along the x dimension.
Definition spirv/profile.h:321
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_STORAGE_BYTES
Maximum bytes reserved in SPIR-V Workgroup storage by one entry point.
Definition spirv/profile.h:315
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_Y
Maximum dispatched grid size along the y dimension, in workitems.
Definition spirv/profile.h:333
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_Y
Maximum local workgroup size along the y dimension.
Definition spirv/profile.h:305
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_Z
Maximum dispatched grid size along the z dimension, in workitems.
Definition spirv/profile.h:336
@ LOOMC_SPIRV_LIMIT_SUBGROUP_SIZE
Fixed target-wide subgroup size in invocations.
Definition spirv/profile.h:318
@ LOOMC_SPIRV_LIMIT_MIN_SUBGROUP_SIZE
Smallest selectable compute subgroup width (powers of two only).
Definition spirv/profile.h:346
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_X
Maximum dispatched grid size along the x dimension, in workitems.
Definition spirv/profile.h:330
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:572
uint32_t loomc_spirv_cooperative_vector_flags_t
Bitset of loomc_spirv_cooperative_vector_flag_bits_t values.
Definition spirv/profile.h:557
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:423
@ LOOMC_SPIRV_SCOPE_CROSS_DEVICE
CrossDevice scope.
Definition spirv/profile.h:425
@ LOOMC_SPIRV_SCOPE_SUBGROUP
Subgroup scope.
Definition spirv/profile.h:434
@ LOOMC_SPIRV_SCOPE_SHADER_CALL_KHR
ShaderCallKHR scope.
Definition spirv/profile.h:443
@ LOOMC_SPIRV_SCOPE_DEVICE
Device scope.
Definition spirv/profile.h:428
@ LOOMC_SPIRV_SCOPE_QUEUE_FAMILY
QueueFamily scope.
Definition spirv/profile.h:440
@ LOOMC_SPIRV_SCOPE_WORKGROUP
Workgroup scope.
Definition spirv/profile.h:431
@ LOOMC_SPIRV_SCOPE_INVOCATION
Invocation scope.
Definition spirv/profile.h:437
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:245
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:545
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:364
@ LOOMC_SPIRV_ENVIRONMENT_UNKNOWN
Unknown or uninitialized environment fact.
Definition spirv/profile.h:366
@ LOOMC_SPIRV_ENVIRONMENT_MAX_SPIRV_VERSION
Maximum SPIR-V binary version accepted by the target.
Definition spirv/profile.h:369
@ LOOMC_SPIRV_ENVIRONMENT_COUNT
Number of public SPIR-V environment identifiers.
Definition spirv/profile.h:372
loomc_spirv_cooperative_vector_matrix_layout_flag_bits_t
Cooperative vector matrix-layout fact bits.
Definition spirv/profile.h:528
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_BIT
TrainingOptimalNV layout is accepted.
Definition spirv/profile.h:540
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_BIT
InferencingOptimalNV layout is accepted.
Definition spirv/profile.h:536
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_BIT
ColumnMajorNV layout is accepted.
Definition spirv/profile.h:533
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_BIT
RowMajorNV layout is accepted.
Definition spirv/profile.h:530
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:228
@ LOOMC_SPIRV_FEATURE_WORKGROUP_FLOAT64_ATOMICS
64-bit floating-point basic atomics in workgroup memory.
Definition spirv/profile.h:180
@ LOOMC_SPIRV_FEATURE_FLOAT16_64_DENORM_PRESERVE
F16/F64 DenormPreserve modes selectable together without changing F32.
Definition spirv/profile.h:195
@ 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:210
@ 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:207
@ 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:213
@ 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_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:219
@ 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_FLOAT16_64_ROUNDING_RTE
F16/F64 RoundingModeRTE modes selectable together without changing F32.
Definition spirv/profile.h:198
@ 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 independent of other floating-point widths.
Definition spirv/profile.h:201
@ LOOMC_SPIRV_FEATURE_SUBGROUP_EXTENDED_TYPES
Logical Vulkan device enables subgroup operations on I8/I16/I64 and F16.
Definition spirv/profile.h:225
@ 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_FLOAT32_DENORM_PRESERVE
F32 DenormPreserve independent of other floating-point widths.
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_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:216
@ 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:204
@ 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:234
@ LOOMC_SPIRV_FEATURE_GROUP_NON_UNIFORM_CLUSTERED
Arithmetic reductions over contiguous power-of-two subgroup clusters.
Definition spirv/profile.h:222
@ 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_GROUP_NON_UNIFORM_SHUFFLE_RELATIVE
Subgroup up and down shuffle operations.
Definition spirv/profile.h:231
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:254
loomc_spirv_component_type_t
SPIR-V cooperative vector ComponentType operand values.
Definition spirv/profile.h:480
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT32_NV
Float32NV component type.
Definition spirv/profile.h:485
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT64_NV
UnsignedInt64NV component type.
Definition spirv/profile.h:512
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT8_NV
SignedInt8NV component type.
Definition spirv/profile.h:491
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT64_NV
SignedInt64NV component type.
Definition spirv/profile.h:500
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT8_NV
UnsignedInt8NV component type.
Definition spirv/profile.h:503
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT32_NV
SignedInt32NV component type.
Definition spirv/profile.h:497
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT16_NV
UnsignedInt16NV component type.
Definition spirv/profile.h:506
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT8_PACKED_NV
SignedInt8PackedNV component type.
Definition spirv/profile.h:515
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT32_NV
UnsignedInt32NV component type.
Definition spirv/profile.h:509
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT_E4_M3_NV
FloatE4M3NV component type.
Definition spirv/profile.h:521
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT64_NV
Float64NV component type.
Definition spirv/profile.h:488
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT16_NV
Float16NV component type.
Definition spirv/profile.h:482
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT16_NV
SignedInt16NV component type.
Definition spirv/profile.h:494
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT8_PACKED_NV
UnsignedInt8PackedNV component type.
Definition spirv/profile.h:518
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT_E5_M2_NV
FloatE5M2NV component type.
Definition spirv/profile.h:524
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:238
loomc_spirv_profile_preset_t
Built-in SPIR-V profile preset.
Definition spirv/profile.h:575
@ LOOMC_SPIRV_PROFILE_PRESET_VULKAN_1_3_BDA
Vulkan 1.3 shader profile with physical-storage-buffer addressing.
Definition spirv/profile.h:580
@ LOOMC_SPIRV_PROFILE_PRESET_NONE
No preset facts.
Definition spirv/profile.h:577
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:477
Host allocator used for persistent Loom object storage.
Definition base.h:414
Cooperative matrix operation fact row.
Definition spirv/profile.h:734
loomc_spirv_cooperative_matrix_layout_flags_t layout_flags
Accepted load/store memory layouts.
Definition spirv/profile.h:772
loomc_spirv_scalar_type_t result_type
Result scalar component type.
Definition spirv/profile.h:766
uint16_t m_size
Result row count and Matrix A row count.
Definition spirv/profile.h:748
loomc_spirv_storage_class_flags_t storage_class_flags
Accepted pointer storage classes for load/store operations.
Definition spirv/profile.h:775
loomc_target_fact_state_t state
Known availability state for this row.
Definition spirv/profile.h:739
loomc_spirv_scalar_type_t rhs_type
Matrix B scalar component type.
Definition spirv/profile.h:760
loomc_string_view_t name
Stable row name for diagnostics, caches, and tests.
Definition spirv/profile.h:736
loomc_spirv_scalar_type_t accumulator_type
Matrix C accumulator scalar component type.
Definition spirv/profile.h:763
loomc_spirv_scalar_type_t lhs_type
Matrix A scalar component type.
Definition spirv/profile.h:757
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:742
loomc_spirv_scope_t scope
Cooperative matrix scope operand.
Definition spirv/profile.h:769
loomc_spirv_feature_bits_t required_features
Feature bits required before this row is legal.
Definition spirv/profile.h:745
uint16_t n_size
Result column count and Matrix B column count.
Definition spirv/profile.h:751
uint16_t k_size
Matrix A column count and Matrix B row count.
Definition spirv/profile.h:754
loomc_spirv_cooperative_matrix_operand_flags_t operand_flags
Required cooperative matrix operand bits for this row.
Definition spirv/profile.h:780
Cooperative vector operation fact row.
Definition spirv/profile.h:784
loomc_spirv_component_type_t result_type
Component type of the Result vector object.
Definition spirv/profile.h:816
loomc_spirv_cooperative_vector_matrix_layout_flags_t matrix_layout_flags
Accepted matrix layout operands.
Definition spirv/profile.h:819
loomc_target_fact_state_t state
Known availability state for this row.
Definition spirv/profile.h:789
loomc_spirv_component_type_t input_type
Component type of the Input vector object.
Definition spirv/profile.h:804
loomc_spirv_cooperative_vector_flags_t flags
Additional cooperative vector behavior flags.
Definition spirv/profile.h:825
loomc_spirv_storage_class_flags_t storage_class_flags
Accepted matrix pointer storage classes.
Definition spirv/profile.h:822
loomc_spirv_feature_bits_t required_features
Feature bits required before this row is legal.
Definition spirv/profile.h:795
loomc_spirv_component_type_t bias_interpretation
BiasInterpretation operand value.
Definition spirv/profile.h:813
uint16_t m_size
Output vector component count.
Definition spirv/profile.h:798
uint16_t k_size
Logical input vector component count.
Definition spirv/profile.h:801
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:792
loomc_spirv_component_type_t matrix_interpretation
MatrixInterpretation operand value.
Definition spirv/profile.h:810
loomc_string_view_t name
Stable row name for diagnostics, caches, and tests.
Definition spirv/profile.h:786
loomc_spirv_component_type_t input_interpretation
InputInterpretation operand value.
Definition spirv/profile.h:807
One SPIR-V environment observation.
Definition spirv/profile.h:620
loomc_target_fact_state_t state
Observed state for the environment fact.
Definition spirv/profile.h:625
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:631
uint64_t value
Observed environment value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:628
loomc_spirv_environment_t environment
Environment fact being observed.
Definition spirv/profile.h:622
Queried SPIR-V environment fact state.
Definition spirv/profile.h:635
uint64_t value
Environment value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:640
loomc_target_fact_state_t state
Known state for the environment fact.
Definition spirv/profile.h:637
One SPIR-V feature observation.
Definition spirv/profile.h:584
loomc_target_fact_state_t state
Observed state for the feature.
Definition spirv/profile.h:589
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:592
loomc_spirv_feature_t feature
Feature being observed.
Definition spirv/profile.h:586
One SPIR-V numeric limit observation.
Definition spirv/profile.h:596
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:607
uint64_t value
Observed limit value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:604
loomc_spirv_limit_t limit
Limit being observed.
Definition spirv/profile.h:598
loomc_target_fact_state_t state
Observed state for the limit.
Definition spirv/profile.h:601
Queried SPIR-V numeric limit state.
Definition spirv/profile.h:611
loomc_target_fact_state_t state
Known state for the limit.
Definition spirv/profile.h:613
uint64_t value
Limit value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:616
Prepared SPIR-V profile summary.
Definition spirv/profile.h:701
loomc_host_size_t storage_class_count
Number of storage-class rows selected by known-true features.
Definition spirv/profile.h:721
loomc_host_size_t cooperative_vector_row_count
Number of cooperative vector rows selected by known-true features.
Definition spirv/profile.h:730
loomc_host_size_t capability_count
Number of OpCapability rows selected by known-true features.
Definition spirv/profile.h:715
loomc_host_size_t decoration_count
Number of decoration rows selected by known-true features.
Definition spirv/profile.h:724
uint32_t minimum_spirv_version
Minimum SPIR-V binary version selected by known-true features.
Definition spirv/profile.h:703
uint32_t addressing_model
SPIR-V addressing model numeric value.
Definition spirv/profile.h:706
uint32_t memory_model
SPIR-V memory model numeric value.
Definition spirv/profile.h:709
loomc_host_size_t extension_count
Number of OpExtension rows selected by known-true features.
Definition spirv/profile.h:712
loomc_host_size_t opcode_count
Number of opcode rows selected by known-true features.
Definition spirv/profile.h:718
loomc_host_size_t cooperative_matrix_row_count
Number of cooperative matrix rows selected by known-true features.
Definition spirv/profile.h:727
SPIR-V target profile creation options.
Definition spirv/profile.h:652
loomc_spirv_profile_preset_t preset
Built-in preset facts applied before explicit feature facts.
Definition spirv/profile.h:667
const loomc_spirv_feature_fact_t * feature_facts
Borrowed feature fact array.
Definition spirv/profile.h:670
loomc_host_size_t environment_fact_count
Number of entries in environment_facts.
Definition spirv/profile.h:685
loomc_host_size_t cooperative_vector_row_count
Number of entries in cooperative_vector_rows.
Definition spirv/profile.h:697
loomc_string_view_t identifier
Stable profile identifier used in diagnostics.
Definition spirv/profile.h:664
const loomc_spirv_cooperative_matrix_row_t * cooperative_matrix_rows
Borrowed cooperative matrix row fact array.
Definition spirv/profile.h:688
const loomc_spirv_environment_fact_t * environment_facts
Borrowed environment fact array.
Definition spirv/profile.h:682
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition spirv/profile.h:658
const loomc_spirv_cooperative_vector_row_t * cooperative_vector_rows
Borrowed cooperative vector row fact array.
Definition spirv/profile.h:694
const loomc_spirv_limit_fact_t * limit_facts
Borrowed numeric limit fact array.
Definition spirv/profile.h:676
loomc_host_size_t cooperative_matrix_row_count
Number of entries in cooperative_matrix_rows.
Definition spirv/profile.h:691
loomc_host_size_t feature_fact_count
Number of entries in feature_facts.
Definition spirv/profile.h:673
loomc_structure_type_t type
Structure type.
Definition spirv/profile.h:655
loomc_host_size_t limit_fact_count
Number of entries in limit_facts.
Definition spirv/profile.h:679
const void * next
Reserved extension chain. Must be NULL.
Definition spirv/profile.h:661
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