Ir.Compiler_optionsThe target-feature workaround for the observed gfx1102 half-register hazard. Used by both the compiler and its schedule-cache regime. An empty list selects no workaround. A mixed set containing gfx1102 is covered because HIP compilation is backend-wide and its artifact can link on any device.
val hiprtc :
target_archs:string list ->
hip_include_options:string list ->
rocwmma_include_options:string list ->
uses_rocwmma:bool ->
with_debug:bool ->
string listThe hiprtc (HIP) option vector: includes, then the clang fast-math umbrella with its left-to-right overrides (-fno-associative-math, -fhonor-infinities), the target's half-register workaround, then debug.
nvrtc's opt-IN for floating-point reassociation. It exists here only so nvrtc can be checked never to emit it: the CUDA half of the reduction-order policy is a MEMBERSHIP claim, not an ordering one.
val nvrtc :
cuda_include_options:string list ->
arch_options:string list ->
with_device_debug:bool ->
string listThe nvrtc (CUDA) option vector. What this guarantees is the absence of nvrtc_reassociation_opt_in: --use_fast_math is a fixed expansion of four switches, none of which concerns reassociation (measured for gh-ocannl-784; see the implementation).
Which Metal math-policy API the host macOS offers: the modern split properties (macOS 15+), or the deprecated fastMathEnabled fallback (macOS 14).
val metal_math_api : selector_available:(string -> bool) -> metal_math_apiSelect the modern split policy only when both required Objective-C selectors are available. The callback keeps the capability seam injectable without making this pure module depend on the Metal runtime.
Ordered property writes to apply to an MTLCompileOptions object; Metal_backend is only the interpreter that applies them, so the complete sequence is testable without linking Metal.
val equal_metal_option : metal_option -> metal_option -> boolval metal :
routine_logging:bool ->
math_api:metal_math_api ->
metal_option listval render_metal : metal_option list -> stringOne line, for diagnostics that have to travel through a log or an exception message: a compile's effective option vector is the state a numeric mismatch is reproducible against, and reading it off a failure is what turns "schedule-dependent numeric mismatch" into "optimizer flag".