# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# Autogenerated by numba_cuda_mlir/decorators.py
# Please do not edit

from typing import Callable
from numba_cuda_mlir.descriptor import MLIRDispatcher

def jit(
    func_or_sig: Callable | str | None = None,
    abi: str = "numba",  # ABI for the compiled function
    capi: (
        bool | str
    ) = False,  # Use the function's name as the symbol name in the generated cubin. False means use the mangled name, true means use the function's name, and a string means use the string as the symbol name.
    chip: str = "sm_100",  # GPU compute capability used for compilation
    debug: bool = False,  # Emit debug information
    device: bool = False,  # Device-only functions can only be called by a kernel or other device functions
    dump: bool = False,  # Dump Numba IR and MLIR to stderr before compilation
    dump_ast: bool = False,  # Dump Python AST before/after transformations
    dump_ast_after_all: bool = False,  # Dump Python AST after each transformation pass
    dump_cubin: bool = False,  # Dump cubin to stderr after compilation
    dump_llvmir: bool = False,  # Dump LLVM IR to stderr before libnvvm compilation
    dump_mlir: bool = False,  # Dump MLIR to stderr before compilation
    dump_numba_ir: bool = False,  # Dump Numba IR to stderr before compilation
    dump_ptx: bool = False,  # Dump PTX to stderr before compilation
    experimental_ast_transforms: bool = False,  # Enable experimental AST transforms (consteval, loop unrolling)
    extensions: (
        list | None
    ) = None,  # List of argument handler extensions with prepare_args method
    fastmath: bool = False,  # Use faster approximations for floating-point arithmetic
    features: str = None,  # Additional PTX features to enable (for example, '+ptx80')
    inline: str | bool | Callable = "always",  # Inline strategy
    launch_bounds: (
        tuple | int | None
    ) = None,  # Launch bounds (max_threads_per_block, min_blocks_per_sm) or just max_threads_per_block as int
    lineinfo: bool = False,  # Emit line number information for profiling
    link: list = [],  # List of libraries to link against
    lto: bool = False,  # Enable link time optimization
    max_registers: int = None,  # Maximum number of registers per thread
    opt_level: int = 3,  # Optimization level
    print_after_all: bool = False,  # Print MLIR to stderr after every optimization pass
    print_before_all: bool = False,  # Print MLIR to stderr before every optimization pass
    ptxas_options: str = None,  # Additional options to pass to ptxas
    shared_memory_carveout: (
        str | int | None
    ) = None,  # Shared memory carveout percentage (-1 to 100, or 'default'/'maxl1'/'maxshared')
    signature: (
        tuple | list | str
    ) = None,  # Function signature to compile for. Setting to 'infer' will infer the signature from the type annotations of the arguments
) -> MLIRDispatcher:
    """
    numba_cuda_mlir JIT decorator. Use this function to decorate kernels and device functions.

    """
