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
91typedef enum loomc_spirv_feature_e {
94
97
100
103
106
109
112
115
118
121
124
127
130
133
136
139
142
145
148
151
154
157
160
163
166
169
172
175
178
181
184
187
190
193
196
199
202
205
208
211
214
217
220
223
226
229
232
236
239
241#define LOOMC_SPIRV_VERSION(major, minor) \
242 ((((uint32_t)(major)) << 16) | (((uint32_t)(minor)) << 8))
243
245#define LOOMC_SPIRV_VERSION_1_0 LOOMC_SPIRV_VERSION(1, 0)
246
248#define LOOMC_SPIRV_VERSION_1_1 LOOMC_SPIRV_VERSION(1, 1)
249
251#define LOOMC_SPIRV_VERSION_1_2 LOOMC_SPIRV_VERSION(1, 2)
252
254#define LOOMC_SPIRV_VERSION_1_3 LOOMC_SPIRV_VERSION(1, 3)
255
257#define LOOMC_SPIRV_VERSION_1_4 LOOMC_SPIRV_VERSION(1, 4)
258
260#define LOOMC_SPIRV_VERSION_1_5 LOOMC_SPIRV_VERSION(1, 5)
261
263#define LOOMC_SPIRV_VERSION_1_6 LOOMC_SPIRV_VERSION(1, 6)
264
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)) {
273 }
274 if (vulkan_major == 1 && vulkan_minor >= 2) {
276 }
277 if (vulkan_major == 1 && vulkan_minor >= 1) {
279 }
281}
282
284static inline loomc_spirv_feature_bits_t loomc_spirv_feature_bit(
285 loomc_spirv_feature_t feature) {
286 return feature > LOOMC_SPIRV_FEATURE_UNKNOWN &&
288 ? (UINT64_C(1) << feature)
289 : 0u;
290}
291
358
374
421
445
454
457
475
478
526
542
546
555
558
570
573
582
594
609
618
633
642
646
650
699
732
782
827
855 loomc_target_environment_t* target_environment,
856 const loomc_spirv_profile_options_t* options, loomc_allocator_t allocator,
857 loomc_target_profile_t** out_profile, loomc_result_t** out_result);
858
892 const loomc_target_profile_t* base_profile,
893 const loomc_spirv_profile_options_t* options, loomc_allocator_t allocator,
894 loomc_target_profile_t** out_profile, loomc_result_t** out_result);
895
906 const loomc_target_profile_t* profile, loomc_spirv_feature_t feature,
907 loomc_target_fact_state_t* out_state);
908
916 const loomc_target_profile_t* profile, loomc_spirv_limit_t limit,
917 loomc_spirv_limit_value_t* out_value);
918
926 const loomc_target_profile_t* profile,
927 loomc_spirv_environment_t environment,
929
939
950 const loomc_target_profile_t* profile, loomc_host_size_t index,
951 loomc_string_view_t* out_extension);
952
960 const loomc_target_profile_t* profile, loomc_host_size_t index,
961 uint32_t* out_capability);
962
970 const loomc_target_profile_t* profile, loomc_host_size_t index,
971 uint32_t* out_opcode);
972
980 const loomc_target_profile_t* profile, loomc_host_size_t index,
981 uint32_t* out_storage_class);
982
990 const loomc_target_profile_t* profile, loomc_host_size_t index,
991 uint32_t* out_decoration);
992
1004 const loomc_target_profile_t* profile, loomc_host_size_t index,
1006
1018 const loomc_target_profile_t* profile, loomc_host_size_t index,
1020
1021#ifdef __cplusplus
1022} // extern "C"
1023#endif
1024
1025#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: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