|
| typedef size_t | SimIRNodeId |
| |
|
typedef enum SimIRValueKind | SimIRValueKind |
| | Enumerates the value category for an IR expression.
|
| |
|
typedef struct SimIRType | SimIRType |
| | Type descriptor carried by each IR node.
|
| |
|
typedef union SimIRDomainPayload | SimIRDomainPayload |
| | Exact scalar payload used by scalar-domain-aware evaluators.
|
| |
|
typedef struct SimIRDomainValue | SimIRDomainValue |
| | Scalar-domain-aware evaluation result.
|
| |
|
typedef struct SimIRShape | SimIRShape |
| | Maximum rank supported by shape descriptors.
|
| |
|
typedef enum SimIRBoundaryPolicy | SimIRBoundaryPolicy |
| | Boundary handling policy for differential operators.
|
| |
|
typedef enum SimIRDiffMethod | SimIRDiffMethod |
| | Finite-difference stencil selection for differential operators.
|
| |
|
typedef enum SimIRNoiseLaw | SimIRNoiseLaw |
| | Noise law describing the stochastic calculus interpretation.
|
| |
|
typedef enum SimIRNoiseDistribution | SimIRNoiseDistribution |
| | Probability distribution used when sampling stochastic nodes.
|
| |
|
typedef enum SimIRParamKind | SimIRParamKind |
| | Runtime parameter identifiers referenced by PARAM nodes.
|
| |
|
typedef struct SimIRDiffSpec | SimIRDiffSpec |
| | Optional metadata for creating differential nodes.
|
| |
|
typedef enum SimIRWarpProfile | SimIRWarpProfile |
| | Supported analytic warp profiles for dedicated IR nodes.
|
| |
|
typedef enum SimIRCallKind | SimIRCallKind |
| | Built-in call identifiers for unary analytic functions.
|
| |
|
typedef struct SimIRWarpGuard | SimIRWarpGuard |
| | Continuity guard metadata attached to warp specifications.
|
| |
|
typedef struct SimIRWarpSpec | SimIRWarpSpec |
| | Metadata for creating analytic warp nodes.
|
| |
|
typedef struct SimIRNoiseSpec | SimIRNoiseSpec |
| | Optional metadata for creating stochastic noise nodes.
|
| |
|
typedef enum SimIRNodeType | SimIRNodeType |
| | Enumerates IR node categories.
|
| |
|
typedef SimResult(* | SimIRStatefulEvalFn) (void *userdata, const struct KernelIR *kernel, size_t element_index, size_t component, double *out_value) |
| | Callback signature for stateful IR nodes.
|
| |
|
typedef struct SimIRNode | SimIRNode |
| | Node record in a symbolic kernel IR expression graph.
|
| |
|
typedef struct SimIRStatefulSpec | SimIRStatefulSpec |
| | Metadata for creating stateful IR nodes.
|
| |
|
typedef struct SimIRBuilder | SimIRBuilder |
| | Monotonic arena for IR node allocation.
|
| |
|
typedef SimResult(* | SimIRFieldEvalFn) (void *userdata, size_t field_id, SimIRType type, double *out_value) |
| | Resolve a real-valued field reference during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRDiffEvalFn) (void *userdata, const SimIRBuilder *builder, const SimIRNode *node, SimIRNodeId operand, double operand_value, double *out_value) |
| | Evaluate a real-valued differential node during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRNoiseEvalFn) (void *userdata, const SimIRNode *node, double *out_value) |
| | Sample a real-valued stochastic node during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRParamEvalFn) (void *userdata, SimIRParamKind param, double *out_value) |
| | Resolve a real-valued runtime parameter during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRFieldEvalFnComplex) (void *userdata, size_t field_id, SimIRType type, SimComplexDouble *out_value) |
| | Resolve a complex-valued field reference during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRDiffEvalFnComplex) (void *userdata, const SimIRBuilder *builder, const SimIRNode *node, SimIRNodeId operand, SimComplexDouble operand_value, SimComplexDouble *out_value) |
| | Evaluate a complex-valued differential node during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRNoiseEvalFnComplex) (void *userdata, const SimIRNode *node, SimComplexDouble *out_value) |
| | Sample a complex-valued stochastic node during IR evaluation.
|
| |
|
typedef struct SimIREvaluatorComplex | SimIREvaluatorComplex |
| | Callback surface for evaluating complex-valued IR expressions.
|
| |
|
typedef struct SimIREvaluator | SimIREvaluator |
| | Callback surface for evaluating real-valued IR expressions.
|
| |
|
typedef SimResult(* | SimIRFieldEvalFnDomain) (void *userdata, size_t field_id, SimIRType type, SimScalarDomain domain, SimIRDomainValue *out_value) |
| | Resolve a scalar-domain-aware field reference during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRDiffEvalFnDomain) (void *userdata, const SimIRBuilder *builder, const SimIRNode *node, SimIRNodeId operand, SimScalarDomain domain, SimIRDomainValue operand_value, SimIRDomainValue *out_value) |
| | Evaluate a scalar-domain-aware differential node during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRNoiseEvalFnDomain) (void *userdata, const SimIRNode *node, SimScalarDomain domain, SimIRDomainValue *out_value) |
| | Sample a scalar-domain-aware stochastic node during IR evaluation.
|
| |
|
typedef SimResult(* | SimIRParamEvalFnDomain) (void *userdata, SimIRParamKind param, SimScalarDomain domain, SimIRDomainValue *out_value) |
| | Resolve a scalar-domain-aware runtime parameter during IR evaluation.
|
| |
|
typedef struct SimIREvaluatorDomain | SimIREvaluatorDomain |
| | Callback surface for evaluating scalar-domain-aware IR expressions.
|
| |
|
|
SimResult | sim_ir_warp_sample_response (const struct SimWarpSampleSpec *spec, SimIRWarpProfile profile, double tolerance, SimSpecialFallbackFn fallback, void *fallback_userdata, double *out_response) |
| |
| SimResult | sim_ir_builder_init (SimIRBuilder *builder) |
| | Initialize an empty IR builder.
|
| |
| void | sim_ir_builder_set_default_boundary (SimIRBuilder *builder, SimIRBoundaryPolicy boundary) |
| | Set the default boundary policy used by shorthand differential helpers.
|
| |
| void | sim_ir_builder_reset (SimIRBuilder *builder) |
| | Reset builder counts while retaining allocated storage.
|
| |
| void | sim_ir_builder_apply_opcode (SimIRBuilder *builder, SimIROpcode opcode, bool preserve_existing) |
| | Apply a semantic opcode to nodes stored in a builder.
|
| |
| SimResult | sim_ir_builder_apply_opcode_reachable (SimIRBuilder *builder, SimIROpcode opcode, bool preserve_existing, const SimIRNodeId *roots, size_t root_count) |
| | Apply a semantic opcode to reachable nodes starting from the provided roots.
|
| |
| SimResult | sim_ir_collect_reachable (const SimIRBuilder *builder, const SimIRNodeId *roots, size_t root_count, unsigned char *out_reachable, size_t reachable_count) |
| | Mark nodes reachable from a set of roots.
|
| |
| void | sim_ir_diff_spec_init (SimIRDiffSpec *spec, const SimIRBuilder *builder) |
| | Initialize a diff spec with safe defaults.
|
| |
| void | sim_ir_builder_destroy (SimIRBuilder *builder) |
| | Release resources held by an IR builder.
|
| |
| const SimIRNode * | sim_ir_builder_get (const SimIRBuilder *builder, SimIRNodeId id) |
| | Retrieve an immutable pointer to a node.
|
| |
|
SimIRType | sim_ir_builder_node_type (const SimIRBuilder *builder, SimIRNodeId id) |
| | Query the value type of a node.
|
| |
|
SimWarpLevel | sim_ir_builder_node_warp_class (const SimIRBuilder *builder, SimIRNodeId id) |
| | Retrieve the warp classification associated with a node.
|
| |
|
SimResult | sim_ir_builder_set_node_warp_class (SimIRBuilder *builder, SimIRNodeId id, SimWarpLevel warp_class) |
| | Assign a warp classification to a node for downstream code generation.
|
| |
|
SimIRNodeId | sim_ir_builder_constant_typed (SimIRBuilder *builder, double value, SimIRType type) |
| | Create a constant node with explicit type annotation.
|
| |
|
SimIRNodeId | sim_ir_builder_constant_i64_typed (SimIRBuilder *builder, int64_t value, SimIRType type) |
| | Create an exact signed integer constant node with explicit type annotation.
|
| |
|
SimIRNodeId | sim_ir_builder_constant_u64_typed (SimIRBuilder *builder, uint64_t value, SimIRType type) |
| | Create an exact unsigned integer constant node with explicit type annotation.
|
| |
|
SimIRNodeId | sim_ir_builder_constant_vector_typed (SimIRBuilder *builder, const double *values, size_t components, SimIRType type) |
| | Create a vector constant node with explicit type annotation.
|
| |
|
SimIRNodeId | sim_ir_builder_constant_complex (SimIRBuilder *builder, double real, double imag) |
| | Create a complex constant node from real/imag components.
|
| |
| SimIRNodeId | sim_ir_builder_constant_vector (SimIRBuilder *builder, const double *values, size_t components) |
| | Add a per-lane constant vector to the builder and return a node id.
|
| |
| bool | sim_ir_kernel_has_unsupported_complex_semantics (const struct KernelIR *kernel) |
| | Query whether a kernel contains true complex-domain nodes whose semantics are not representable by the simple pointwise GPU emitters.
|
| |
| SimIRNodeId | sim_ir_builder_constant (SimIRBuilder *builder, double value) |
| | Create a constant node.
|
| |
|
SimIRNodeId | sim_ir_builder_param (SimIRBuilder *builder, SimIRParamKind param) |
| | Create a runtime parameter node.
|
| |
|
SimIRNodeId | sim_ir_builder_index (SimIRBuilder *builder) |
| | Create a linear element-index node.
|
| |
|
SimIRNodeId | sim_ir_builder_call (SimIRBuilder *builder, SimIRCallKind kind, SimIRNodeId operand) |
| | Create a unary analytic call node (elementwise for vector values).
|
| |
|
SimIRNodeId | sim_ir_builder_floor (SimIRBuilder *builder, SimIRNodeId operand) |
| | Create a floor node.
|
| |
|
SimIRNodeId | sim_ir_builder_mod (SimIRBuilder *builder, SimIRNodeId lhs, SimIRNodeId rhs) |
| | Create a modulo node.
|
| |
|
SimIRNodeId | sim_ir_builder_coord (SimIRBuilder *builder, size_t field_id, size_t axis) |
| | Create a coordinate lookup node.
|
| |
|
SimIRNodeId | sim_ir_builder_field_ref_typed (SimIRBuilder *builder, size_t field_id, SimIRType type) |
| | Create a field reference node with an explicit value type.
|
| |
| SimIRNodeId | sim_ir_builder_field_ref (SimIRBuilder *builder, size_t field_id) |
| | Create a field reference node.
|
| |
| SimIRNodeId | sim_ir_builder_binary (SimIRBuilder *builder, SimIRNodeType type, SimIRNodeId lhs, SimIRNodeId rhs) |
| | Create a binary operation node.
|
| |
|
SimIRNodeId | sim_ir_builder_pow (SimIRBuilder *builder, SimIRNodeId lhs, SimIRNodeId rhs) |
| | Create a power node (pow for real, cpow for complex).
|
| |
|
SimIRNodeId | sim_ir_builder_diff_spec (SimIRBuilder *builder, const SimIRDiffSpec *spec) |
| | Create a differential term node using an extended specification.
|
| |
| SimIRNodeId | sim_ir_builder_diff (SimIRBuilder *builder, SimIRNodeId operand, size_t axis, double dx, double scale) |
| | Create a differential term node.
|
| |
|
SimIRNodeId | sim_ir_builder_noise_spec (SimIRBuilder *builder, const SimIRNoiseSpec *spec) |
| | Create a stochastic noise node with extended metadata.
|
| |
|
SimIRNodeId | sim_ir_builder_stateful_spec (SimIRBuilder *builder, const SimIRStatefulSpec *spec) |
| | Create a stateful callback node with extended metadata.
|
| |
|
SimIRNodeId | sim_ir_builder_stateful (SimIRBuilder *builder, SimIRStatefulEvalFn eval, void *userdata, const char *label) |
| | Create a stateful callback node with a scalar result type.
|
| |
| SimIRNodeId | sim_ir_builder_noise (SimIRBuilder *builder, uint32_t seed, double amplitude) |
| | Create a stochastic noise node.
|
| |
|
SimIRNodeId | sim_ir_builder_warp_spec (SimIRBuilder *builder, const SimIRWarpSpec *spec) |
| | Create an analytic warp node using the extended specification.
|
| |
|
SimIRNodeId | sim_ir_builder_warp (SimIRBuilder *builder, SimIRNodeId operand, SimIRWarpProfile profile, double bias, double delta, double lambda) |
| | Create an analytic warp node with explicit parameters.
|
| |
|
SimIRNodeId | sim_ir_builder_complex_pack (SimIRBuilder *builder, SimIRNodeId real, SimIRNodeId imag) |
| | Pack real/imag scalar nodes into a complex-valued vector.
|
| |
|
SimIRNodeId | sim_ir_builder_complex_rotate (SimIRBuilder *builder, SimIRNodeId operand, SimIRNodeId angle) |
| | Create a complex rotation node using a scalar angle.
|
| |
|
SimIRType | sim_ir_type_scalar (void) |
| | Construct a scalar value type descriptor.
|
| |
|
SimIRType | sim_ir_type_scalar_domain_typed (SimScalarDomain domain) |
| | Construct a scalar value type descriptor for an explicit scalar domain.
|
| |
|
SimIRType | sim_ir_type_vector (size_t components) |
| | Construct a vector value type descriptor with the requested lane count.
|
| |
|
SimIRType | sim_ir_type_complex (void) |
| | Construct a complex scalar value type descriptor (2 lanes).
|
| |
|
bool | sim_ir_type_is_scalar (SimIRType type) |
| | Return true if the provided type describes a scalar expression.
|
| |
|
bool | sim_ir_type_equal (SimIRType lhs, SimIRType rhs) |
| | Compare two type descriptors for equality.
|
| |
|
SimScalarDomain | sim_ir_type_scalar_domain (SimIRType type) |
| | Return the scalar-domain descriptor attached to an IR type.
|
| |
|
double | sim_ir_warp_profile_eval (SimIRWarpProfile profile, double x, double tolerance) |
| | Evaluate a warp profile at the provided sample.
|
| |
|
double | sim_ir_warp_difference (SimIRWarpProfile profile, double sample, double delta, double tolerance) |
| | Compute the symmetric warp difference f(x+δ) − f(x−δ).
|
| |
| SimResult | sim_ir_evaluate_domain (const SimIRBuilder *builder, SimIRNodeId root, const SimIREvaluatorDomain *evaluator, SimIRDomainValue *out_value) |
| | Evaluate an IR expression using a unified scalar-domain evaluator surface.
|
| |
|
SimResult | sim_ir_evaluate (const SimIRBuilder *builder, SimIRNodeId root, const SimIREvaluator *evaluator, double *out_value) |
| | Evaluate an IR expression recursively using user-provided callbacks.
|
| |
|
SimResult | sim_ir_evaluate_complex (const SimIRBuilder *builder, SimIRNodeId root, const SimIREvaluatorComplex *evaluator, SimComplexDouble *out_value) |
| | Evaluate an IR expression recursively using complex-valued callbacks.
|
| |
Intermediate representation facilities for libsimcore operator fusion.
KernelIR is a typed expression graph used by operators and backends to describe pointwise numeric work independently of a concrete execution engine. Builders own node and constant-pool storage; backend launch packages borrow builders, field bindings, outputs, and runtime parameters only for the duration of a launch.