Loom C API
Public Loom compiler C API
Loading...
Searching...
No Matches
spirv/profile.h
Go to the documentation of this file.
1// Copyright 2026 The IREE Authors
2//
3// Licensed under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
7#ifndef LOOMC_TARGET_SPIRV_PROFILE_H_
8#define LOOMC_TARGET_SPIRV_PROFILE_H_
9
10#include "loomc/result.h"
12
81
82#ifdef __cplusplus
83extern "C" {
84#endif
85
143
146
148#define LOOMC_SPIRV_VERSION(major, minor) \
149 ((((uint32_t)(major)) << 16) | (((uint32_t)(minor)) << 8))
150
152#define LOOMC_SPIRV_VERSION_1_0 LOOMC_SPIRV_VERSION(1, 0)
153
155#define LOOMC_SPIRV_VERSION_1_1 LOOMC_SPIRV_VERSION(1, 1)
156
158#define LOOMC_SPIRV_VERSION_1_2 LOOMC_SPIRV_VERSION(1, 2)
159
161#define LOOMC_SPIRV_VERSION_1_3 LOOMC_SPIRV_VERSION(1, 3)
162
164#define LOOMC_SPIRV_VERSION_1_4 LOOMC_SPIRV_VERSION(1, 4)
165
167#define LOOMC_SPIRV_VERSION_1_5 LOOMC_SPIRV_VERSION(1, 5)
168
170#define LOOMC_SPIRV_VERSION_1_6 LOOMC_SPIRV_VERSION(1, 6)
171
176static inline uint32_t loomc_spirv_max_version_from_vulkan_api_version(
177 uint32_t vulkan_major, uint32_t vulkan_minor) {
178 if (vulkan_major > 1 || (vulkan_major == 1 && vulkan_minor >= 3)) {
180 }
181 if (vulkan_major == 1 && vulkan_minor >= 2) {
183 }
184 if (vulkan_major == 1 && vulkan_minor >= 1) {
186 }
188}
189
191static inline loomc_spirv_feature_bits_t loomc_spirv_feature_bit(
192 loomc_spirv_feature_t feature) {
193 return feature > LOOMC_SPIRV_FEATURE_UNKNOWN &&
195 ? (UINT64_C(1) << feature)
196 : 0u;
197}
198
250
266
313
337
346
349
367
370
418
434
438
447
450
462
465
474
486
501
510
525
534
538
542
591
624
672
717
745 loomc_target_environment_t* target_environment,
746 const loomc_spirv_profile_options_t* options, loomc_allocator_t allocator,
747 loomc_target_profile_t** out_profile, loomc_result_t** out_result);
748
779 const loomc_target_profile_t* base_profile,
780 const loomc_spirv_profile_options_t* options, loomc_allocator_t allocator,
781 loomc_target_profile_t** out_profile, loomc_result_t** out_result);
782
790 const loomc_target_profile_t* profile, loomc_spirv_feature_t feature,
791 loomc_target_fact_state_t* out_state);
792
800 const loomc_target_profile_t* profile, loomc_spirv_limit_t limit,
801 loomc_spirv_limit_value_t* out_value);
802
810 const loomc_target_profile_t* profile,
811 loomc_spirv_environment_t environment,
813
823
834 const loomc_target_profile_t* profile, loomc_host_size_t index,
835 loomc_string_view_t* out_extension);
836
844 const loomc_target_profile_t* profile, loomc_host_size_t index,
845 uint32_t* out_capability);
846
854 const loomc_target_profile_t* profile, loomc_host_size_t index,
855 uint32_t* out_opcode);
856
864 const loomc_target_profile_t* profile, loomc_host_size_t index,
865 uint32_t* out_storage_class);
866
874 const loomc_target_profile_t* profile, loomc_host_size_t index,
875 uint32_t* out_decoration);
876
888 const loomc_target_profile_t* profile, loomc_host_size_t index,
890
902 const loomc_target_profile_t* profile, loomc_host_size_t index,
904
905#ifdef __cplusplus
906} // extern "C"
907#endif
908
909#endif // LOOMC_TARGET_SPIRV_PROFILE_H_
#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:63
loomc_spirv_storage_class_flag_bits_t
Storage-class fact bits used by cooperative operation rows.
Definition spirv/profile.h:452
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_STORAGE_BUFFER
StorageBuffer storage class is accepted.
Definition spirv/profile.h:457
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_PHYSICAL_STORAGE_BUFFER
PhysicalStorageBuffer storage class is accepted.
Definition spirv/profile.h:460
@ LOOMC_SPIRV_STORAGE_CLASS_BIT_WORKGROUP
Workgroup storage class is accepted.
Definition spirv/profile.h:454
#define LOOMC_SPIRV_VERSION_1_6
SPIR-V 1.6 binary version word.
Definition spirv/profile.h:170
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:339
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_LAYOUT_COLUMN_MAJOR_BIT
ColumnMajorKHR layout is accepted.
Definition spirv/profile.h:344
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_LAYOUT_ROW_MAJOR_BIT
RowMajorKHR layout is accepted.
Definition spirv/profile.h:341
loomc_spirv_scalar_type_t
SPIR-V semantic scalar type fact.
Definition spirv/profile.h:273
@ LOOMC_SPIRV_SCALAR_TYPE_U64
Unsigned 64-bit integer scalar type.
Definition spirv/profile.h:311
@ LOOMC_SPIRV_SCALAR_TYPE_F64
IEEE binary64 floating-point scalar type.
Definition spirv/profile.h:284
@ LOOMC_SPIRV_SCALAR_TYPE_F32
IEEE binary32 floating-point scalar type.
Definition spirv/profile.h:281
@ LOOMC_SPIRV_SCALAR_TYPE_S16
Signed 16-bit integer scalar type.
Definition spirv/profile.h:293
@ LOOMC_SPIRV_SCALAR_TYPE_S32
Signed 32-bit integer scalar type.
Definition spirv/profile.h:296
@ LOOMC_SPIRV_SCALAR_TYPE_U32
Unsigned 32-bit integer scalar type.
Definition spirv/profile.h:308
@ LOOMC_SPIRV_SCALAR_TYPE_UNKNOWN
Unknown or uninitialized scalar type.
Definition spirv/profile.h:275
@ LOOMC_SPIRV_SCALAR_TYPE_BF16
KHR bfloat16 scalar type.
Definition spirv/profile.h:287
@ LOOMC_SPIRV_SCALAR_TYPE_S8
Signed 8-bit integer scalar type.
Definition spirv/profile.h:290
@ LOOMC_SPIRV_SCALAR_TYPE_F16
IEEE binary16 floating-point scalar type.
Definition spirv/profile.h:278
@ LOOMC_SPIRV_SCALAR_TYPE_U8
Unsigned 8-bit integer scalar type.
Definition spirv/profile.h:302
@ LOOMC_SPIRV_SCALAR_TYPE_S64
Signed 64-bit integer scalar type.
Definition spirv/profile.h:299
@ LOOMC_SPIRV_SCALAR_TYPE_U16
Unsigned 16-bit integer scalar type.
Definition spirv/profile.h:305
loomc_spirv_cooperative_matrix_operand_flag_bits_t
Cooperative matrix operand fact bits.
Definition spirv/profile.h:351
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_B_SIGNED_COMPONENTS
Matrix B signed-components operand is required.
Definition spirv/profile.h:356
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_C_SIGNED_COMPONENTS
Matrix C signed-components operand is required.
Definition spirv/profile.h:359
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_SATURATING_ACCUMULATION
Saturating accumulation operand is required.
Definition spirv/profile.h:365
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_RESULT_SIGNED_COMPONENTS
Matrix result signed-components operand is required.
Definition spirv/profile.h:362
@ LOOMC_SPIRV_COOPERATIVE_MATRIX_OPERAND_A_SIGNED_COMPONENTS
Matrix A signed-components operand is required.
Definition spirv/profile.h:353
loomc_spirv_cooperative_vector_flag_bits_t
Cooperative vector behavior fact bits.
Definition spirv/profile.h:440
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_FLAG_TRANSPOSE
Transposed opaque matrix layout is accepted.
Definition spirv/profile.h:442
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_FLAG_TRAINING
Row is intended for training operations rather than inference only.
Definition spirv/profile.h:445
#define LOOMC_SPIRV_VERSION_1_5
SPIR-V 1.5 binary version word.
Definition spirv/profile.h:167
uint32_t loomc_spirv_cooperative_matrix_layout_flags_t
Bitset of loomc_spirv_cooperative_matrix_layout_flag_bits_t values.
Definition spirv/profile.h:348
loomc_spirv_limit_t
Stable SPIR-V numeric limit fact identifier.
Definition spirv/profile.h:204
@ LOOMC_SPIRV_LIMIT_UNKNOWN
Unknown or uninitialized limit.
Definition spirv/profile.h:206
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_Z
Maximum local workgroup size along the z dimension.
Definition spirv/profile.h:215
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_Y
Maximum dispatched workgroup count along the y dimension.
Definition spirv/profile.h:230
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_X
Maximum local workgroup size along the x dimension.
Definition spirv/profile.h:209
@ LOOMC_SPIRV_LIMIT_COUNT
Number of public SPIR-V limit identifiers.
Definition spirv/profile.h:248
@ LOOMC_SPIRV_LIMIT_MAX_FLAT_WORKGROUP_SIZE
Maximum product of local workgroup dimensions.
Definition spirv/profile.h:218
@ LOOMC_SPIRV_LIMIT_MAX_FLAT_GRID_SIZE
Maximum product of dispatched grid dimensions, in workitems.
Definition spirv/profile.h:245
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_Z
Maximum dispatched workgroup count along the z dimension.
Definition spirv/profile.h:233
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_COUNT_X
Maximum dispatched workgroup count along the x dimension.
Definition spirv/profile.h:227
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_STORAGE_BYTES
Maximum bytes reserved in SPIR-V Workgroup storage by one entry point.
Definition spirv/profile.h:221
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_Y
Maximum dispatched grid size along the y dimension, in workitems.
Definition spirv/profile.h:239
@ LOOMC_SPIRV_LIMIT_MAX_WORKGROUP_SIZE_Y
Maximum local workgroup size along the y dimension.
Definition spirv/profile.h:212
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_Z
Maximum dispatched grid size along the z dimension, in workitems.
Definition spirv/profile.h:242
@ LOOMC_SPIRV_LIMIT_SUBGROUP_SIZE
Fixed target-wide subgroup size in invocations.
Definition spirv/profile.h:224
@ LOOMC_SPIRV_LIMIT_MAX_GRID_SIZE_X
Maximum dispatched grid size along the x dimension, in workitems.
Definition spirv/profile.h:236
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:464
uint32_t loomc_spirv_cooperative_vector_flags_t
Bitset of loomc_spirv_cooperative_vector_flag_bits_t values.
Definition spirv/profile.h:449
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:315
@ LOOMC_SPIRV_SCOPE_CROSS_DEVICE
CrossDevice scope.
Definition spirv/profile.h:317
@ LOOMC_SPIRV_SCOPE_SUBGROUP
Subgroup scope.
Definition spirv/profile.h:326
@ LOOMC_SPIRV_SCOPE_SHADER_CALL_KHR
ShaderCallKHR scope.
Definition spirv/profile.h:335
@ LOOMC_SPIRV_SCOPE_DEVICE
Device scope.
Definition spirv/profile.h:320
@ LOOMC_SPIRV_SCOPE_QUEUE_FAMILY
QueueFamily scope.
Definition spirv/profile.h:332
@ LOOMC_SPIRV_SCOPE_WORKGROUP
Workgroup scope.
Definition spirv/profile.h:323
@ LOOMC_SPIRV_SCOPE_INVOCATION
Invocation scope.
Definition spirv/profile.h:329
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:152
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:437
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:256
@ LOOMC_SPIRV_ENVIRONMENT_UNKNOWN
Unknown or uninitialized environment fact.
Definition spirv/profile.h:258
@ LOOMC_SPIRV_ENVIRONMENT_MAX_SPIRV_VERSION
Maximum SPIR-V binary version accepted by the target.
Definition spirv/profile.h:261
@ LOOMC_SPIRV_ENVIRONMENT_COUNT
Number of public SPIR-V environment identifiers.
Definition spirv/profile.h:264
loomc_spirv_cooperative_vector_matrix_layout_flag_bits_t
Cooperative vector matrix-layout fact bits.
Definition spirv/profile.h:420
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_BIT
TrainingOptimalNV layout is accepted.
Definition spirv/profile.h:432
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_BIT
InferencingOptimalNV layout is accepted.
Definition spirv/profile.h:428
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_BIT
ColumnMajorNV layout is accepted.
Definition spirv/profile.h:425
@ LOOMC_SPIRV_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_BIT
RowMajorNV layout is accepted.
Definition spirv/profile.h:422
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_PHYSICAL_STORAGE_BUFFER
SPV_KHR_physical_storage_buffer support.
Definition spirv/profile.h:99
@ LOOMC_SPIRV_FEATURE_FLOAT64
64-bit floating-point scalar support.
Definition spirv/profile.h:105
@ LOOMC_SPIRV_FEATURE_INT16
16-bit integer scalar support.
Definition spirv/profile.h:111
@ 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_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_FLOAT16
16-bit floating-point scalar support.
Definition spirv/profile.h:102
@ LOOMC_SPIRV_FEATURE_COOPERATIVE_VECTOR_NV
SPV_NV_cooperative_vector support.
Definition spirv/profile.h:120
@ LOOMC_SPIRV_FEATURE_BFLOAT16_COOPERATIVE_MATRIX_KHR
SPV_KHR_bfloat16 cooperative-matrix support.
Definition spirv/profile.h:135
@ LOOMC_SPIRV_FEATURE_INT8
8-bit integer scalar support.
Definition spirv/profile.h:108
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_16BIT_ACCESS
16-bit storage-buffer access support.
Definition spirv/profile.h:117
@ 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:141
@ LOOMC_SPIRV_FEATURE_STORAGE_BUFFER_8BIT_ACCESS
8-bit storage-buffer access support.
Definition spirv/profile.h:114
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:161
loomc_spirv_component_type_t
SPIR-V cooperative vector ComponentType operand values.
Definition spirv/profile.h:372
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT32_NV
Float32NV component type.
Definition spirv/profile.h:377
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT64_NV
UnsignedInt64NV component type.
Definition spirv/profile.h:404
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT8_NV
SignedInt8NV component type.
Definition spirv/profile.h:383
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT64_NV
SignedInt64NV component type.
Definition spirv/profile.h:392
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT8_NV
UnsignedInt8NV component type.
Definition spirv/profile.h:395
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT32_NV
SignedInt32NV component type.
Definition spirv/profile.h:389
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT16_NV
UnsignedInt16NV component type.
Definition spirv/profile.h:398
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT8_PACKED_NV
SignedInt8PackedNV component type.
Definition spirv/profile.h:407
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT32_NV
UnsignedInt32NV component type.
Definition spirv/profile.h:401
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT_E4_M3_NV
FloatE4M3NV component type.
Definition spirv/profile.h:413
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT64_NV
Float64NV component type.
Definition spirv/profile.h:380
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT16_NV
Float16NV component type.
Definition spirv/profile.h:374
@ LOOMC_SPIRV_COMPONENT_TYPE_SIGNED_INT16_NV
SignedInt16NV component type.
Definition spirv/profile.h:386
@ LOOMC_SPIRV_COMPONENT_TYPE_UNSIGNED_INT8_PACKED_NV
UnsignedInt8PackedNV component type.
Definition spirv/profile.h:410
@ LOOMC_SPIRV_COMPONENT_TYPE_FLOAT_E5_M2_NV
FloatE5M2NV component type.
Definition spirv/profile.h:416
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:145
loomc_spirv_profile_preset_t
Built-in SPIR-V profile preset.
Definition spirv/profile.h:467
@ LOOMC_SPIRV_PROFILE_PRESET_VULKAN_1_3_BDA
Vulkan 1.3 shader profile with physical-storage-buffer addressing.
Definition spirv/profile.h:472
@ LOOMC_SPIRV_PROFILE_PRESET_NONE
No preset facts.
Definition spirv/profile.h:469
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:369
Host allocator used for persistent Loom object storage.
Definition base.h:375
Cooperative matrix operation fact row.
Definition spirv/profile.h:626
loomc_spirv_cooperative_matrix_layout_flags_t layout_flags
Accepted load/store memory layouts.
Definition spirv/profile.h:664
loomc_spirv_scalar_type_t result_type
Result scalar component type.
Definition spirv/profile.h:658
uint16_t m_size
Result row count and Matrix A row count.
Definition spirv/profile.h:640
loomc_spirv_storage_class_flags_t storage_class_flags
Accepted pointer storage classes for load/store operations.
Definition spirv/profile.h:667
loomc_target_fact_state_t state
Known availability state for this row.
Definition spirv/profile.h:631
loomc_spirv_scalar_type_t rhs_type
Matrix B scalar component type.
Definition spirv/profile.h:652
loomc_string_view_t name
Stable row name for diagnostics, caches, and tests.
Definition spirv/profile.h:628
loomc_spirv_scalar_type_t accumulator_type
Matrix C accumulator scalar component type.
Definition spirv/profile.h:655
loomc_spirv_scalar_type_t lhs_type
Matrix A scalar component type.
Definition spirv/profile.h:649
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:634
loomc_spirv_scope_t scope
Cooperative matrix scope operand.
Definition spirv/profile.h:661
loomc_spirv_feature_bits_t required_features
Feature bits required before this row is legal.
Definition spirv/profile.h:637
uint16_t n_size
Result column count and Matrix B column count.
Definition spirv/profile.h:643
uint16_t k_size
Matrix A column count and Matrix B row count.
Definition spirv/profile.h:646
loomc_spirv_cooperative_matrix_operand_flags_t operand_flags
Required cooperative matrix operand bits for this row.
Definition spirv/profile.h:670
Cooperative vector operation fact row.
Definition spirv/profile.h:674
loomc_spirv_component_type_t result_type
Component type of the Result vector object.
Definition spirv/profile.h:706
loomc_spirv_cooperative_vector_matrix_layout_flags_t matrix_layout_flags
Accepted matrix layout operands.
Definition spirv/profile.h:709
loomc_target_fact_state_t state
Known availability state for this row.
Definition spirv/profile.h:679
loomc_spirv_component_type_t input_type
Component type of the Input vector object.
Definition spirv/profile.h:694
loomc_spirv_cooperative_vector_flags_t flags
Additional cooperative vector behavior flags.
Definition spirv/profile.h:715
loomc_spirv_storage_class_flags_t storage_class_flags
Accepted matrix pointer storage classes.
Definition spirv/profile.h:712
loomc_spirv_feature_bits_t required_features
Feature bits required before this row is legal.
Definition spirv/profile.h:685
loomc_spirv_component_type_t bias_interpretation
BiasInterpretation operand value.
Definition spirv/profile.h:703
uint16_t m_size
Output vector component count.
Definition spirv/profile.h:688
uint16_t k_size
Logical input vector component count.
Definition spirv/profile.h:691
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:682
loomc_spirv_component_type_t matrix_interpretation
MatrixInterpretation operand value.
Definition spirv/profile.h:700
loomc_string_view_t name
Stable row name for diagnostics, caches, and tests.
Definition spirv/profile.h:676
loomc_spirv_component_type_t input_interpretation
InputInterpretation operand value.
Definition spirv/profile.h:697
One SPIR-V environment observation.
Definition spirv/profile.h:512
loomc_target_fact_state_t state
Observed state for the environment fact.
Definition spirv/profile.h:517
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:523
uint64_t value
Observed environment value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:520
loomc_spirv_environment_t environment
Environment fact being observed.
Definition spirv/profile.h:514
Queried SPIR-V environment fact state.
Definition spirv/profile.h:527
uint64_t value
Environment value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:532
loomc_target_fact_state_t state
Known state for the environment fact.
Definition spirv/profile.h:529
One SPIR-V feature observation.
Definition spirv/profile.h:476
loomc_target_fact_state_t state
Observed state for the feature.
Definition spirv/profile.h:481
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:484
loomc_spirv_feature_t feature
Feature being observed.
Definition spirv/profile.h:478
One SPIR-V numeric limit observation.
Definition spirv/profile.h:488
loomc_string_view_t provenance
Borrowed provenance string used in diagnostics.
Definition spirv/profile.h:499
uint64_t value
Observed limit value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:496
loomc_spirv_limit_t limit
Limit being observed.
Definition spirv/profile.h:490
loomc_target_fact_state_t state
Observed state for the limit.
Definition spirv/profile.h:493
Queried SPIR-V numeric limit state.
Definition spirv/profile.h:503
loomc_target_fact_state_t state
Known state for the limit.
Definition spirv/profile.h:505
uint64_t value
Limit value when state is LOOMC_TARGET_FACT_STATE_TRUE.
Definition spirv/profile.h:508
Prepared SPIR-V profile summary.
Definition spirv/profile.h:593
loomc_host_size_t storage_class_count
Number of storage-class rows selected by known-true features.
Definition spirv/profile.h:613
loomc_host_size_t cooperative_vector_row_count
Number of cooperative vector rows selected by known-true features.
Definition spirv/profile.h:622
loomc_host_size_t capability_count
Number of OpCapability rows selected by known-true features.
Definition spirv/profile.h:607
loomc_host_size_t decoration_count
Number of decoration rows selected by known-true features.
Definition spirv/profile.h:616
uint32_t minimum_spirv_version
Minimum SPIR-V binary version selected by known-true features.
Definition spirv/profile.h:595
uint32_t addressing_model
SPIR-V addressing model numeric value.
Definition spirv/profile.h:598
uint32_t memory_model
SPIR-V memory model numeric value.
Definition spirv/profile.h:601
loomc_host_size_t extension_count
Number of OpExtension rows selected by known-true features.
Definition spirv/profile.h:604
loomc_host_size_t opcode_count
Number of opcode rows selected by known-true features.
Definition spirv/profile.h:610
loomc_host_size_t cooperative_matrix_row_count
Number of cooperative matrix rows selected by known-true features.
Definition spirv/profile.h:619
SPIR-V target profile creation options.
Definition spirv/profile.h:544
loomc_spirv_profile_preset_t preset
Built-in preset facts applied before explicit feature facts.
Definition spirv/profile.h:559
const loomc_spirv_feature_fact_t * feature_facts
Borrowed feature fact array.
Definition spirv/profile.h:562
loomc_host_size_t environment_fact_count
Number of entries in environment_facts.
Definition spirv/profile.h:577
loomc_host_size_t cooperative_vector_row_count
Number of entries in cooperative_vector_rows.
Definition spirv/profile.h:589
loomc_string_view_t identifier
Stable profile identifier used in diagnostics.
Definition spirv/profile.h:556
const loomc_spirv_cooperative_matrix_row_t * cooperative_matrix_rows
Borrowed cooperative matrix row fact array.
Definition spirv/profile.h:580
const loomc_spirv_environment_fact_t * environment_facts
Borrowed environment fact array.
Definition spirv/profile.h:574
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition spirv/profile.h:550
const loomc_spirv_cooperative_vector_row_t * cooperative_vector_rows
Borrowed cooperative vector row fact array.
Definition spirv/profile.h:586
const loomc_spirv_limit_fact_t * limit_facts
Borrowed numeric limit fact array.
Definition spirv/profile.h:568
loomc_host_size_t cooperative_matrix_row_count
Number of entries in cooperative_matrix_rows.
Definition spirv/profile.h:583
loomc_host_size_t feature_fact_count
Number of entries in feature_facts.
Definition spirv/profile.h:565
loomc_structure_type_t type
Structure type.
Definition spirv/profile.h:547
loomc_host_size_t limit_fact_count
Number of entries in limit_facts.
Definition spirv/profile.h:571
const void * next
Reserved extension chain. Must be NULL.
Definition spirv/profile.h:553
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:123
loomc_target_fact_state_t
Three-valued target fact state.
Definition target.h:142
struct loomc_target_profile_t loomc_target_profile_t
Prepared immutable target profile.
Definition target.h:135