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
197
201
204
207
210
213
216
219
222
225
228
231
234
237
240
243
246
249
252
255
258
271
278
282
285
287#define LOOMC_SPIRV_VERSION(major, minor) \
288 ((((uint32_t)(major)) << 16) | (((uint32_t)(minor)) << 8))
289
291#define LOOMC_SPIRV_VERSION_1_0 LOOMC_SPIRV_VERSION(1, 0)
292
294#define LOOMC_SPIRV_VERSION_1_1 LOOMC_SPIRV_VERSION(1, 1)
295
297#define LOOMC_SPIRV_VERSION_1_2 LOOMC_SPIRV_VERSION(1, 2)
298
300#define LOOMC_SPIRV_VERSION_1_3 LOOMC_SPIRV_VERSION(1, 3)
301
303#define LOOMC_SPIRV_VERSION_1_4 LOOMC_SPIRV_VERSION(1, 4)
304
306#define LOOMC_SPIRV_VERSION_1_5 LOOMC_SPIRV_VERSION(1, 5)
307
309#define LOOMC_SPIRV_VERSION_1_6 LOOMC_SPIRV_VERSION(1, 6)
310
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)) {
319 }
320 if (vulkan_major == 1 && vulkan_minor >= 2) {
322 }
323 if (vulkan_major == 1 && vulkan_minor >= 1) {
325 }
327}
328
330static inline loomc_spirv_feature_bits_t loomc_spirv_feature_bit(
331 loomc_spirv_feature_t feature) {
332 return feature > LOOMC_SPIRV_FEATURE_UNKNOWN &&
334 ? (UINT64_C(1) << feature)
335 : 0u;
336}
337
404
420
467
491
500
503
521
524
572
588
592
601
604
616
619
628
640
655
664
679
688
692
696
745
778
828
873
901 loomc_target_environment_t* target_environment,
902 const loomc_spirv_profile_options_t* options, loomc_allocator_t allocator,
903 loomc_target_profile_t** out_profile, loomc_result_t** out_result);
904
938 const loomc_target_profile_t* base_profile,
939 const loomc_spirv_profile_options_t* options, loomc_allocator_t allocator,
940 loomc_target_profile_t** out_profile, loomc_result_t** out_result);
941
952 const loomc_target_profile_t* profile, loomc_spirv_feature_t feature,
953 loomc_target_fact_state_t* out_state);
954
962 const loomc_target_profile_t* profile, loomc_spirv_limit_t limit,
963 loomc_spirv_limit_value_t* out_value);
964
972 const loomc_target_profile_t* profile,
973 loomc_spirv_environment_t environment,
975
985
996 const loomc_target_profile_t* profile, loomc_host_size_t index,
997 loomc_string_view_t* out_extension);
998
1006 const loomc_target_profile_t* profile, loomc_host_size_t index,
1007 uint32_t* out_capability);
1008
1016 const loomc_target_profile_t* profile, loomc_host_size_t index,
1017 uint32_t* out_opcode);
1018
1026 const loomc_target_profile_t* profile, loomc_host_size_t index,
1027 uint32_t* out_storage_class);
1028
1036 const loomc_target_profile_t* profile, loomc_host_size_t index,
1037 uint32_t* out_decoration);
1038
1050 const loomc_target_profile_t* profile, loomc_host_size_t index,
1052
1064 const loomc_target_profile_t* profile, loomc_host_size_t index,
1066
1067#ifdef __cplusplus
1068} // extern "C"
1069#endif
1070
1071#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: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