# Codeowners for IREE Github Repository.
# The listed owners will automatically be added as reviewers to PRs that modify
# paths matching the specified patterns.
# Refer to https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# for syntax of this file (tl;dr: syntax is like .gitignore. Last matching rule
# takes precedence).
# Because of the precedence, rules for directories are listed topologically.
# @ghost is used to make a pattern have no owners. It is a sentinel GitHub user
# that takes the place of deleted users.

# No global owners because we don't really want e.g. changing the root
# CMakeLists.txt file to always ping a bunch of people.

# Third-Party Code
/.gitmodules @ScottTodd @stellaraccident
/third_party/ @ScottTodd @stellaraccident
# Except for routinely-updated submodules
/third_party/llvm-project @ghost
/third_party/llvm-project.branch-pin @ghost
/third_party/mlir-hlo @ghost

# Bindings
/runtime/bindings/python/ @stellaraccident
/runtime/bindings/tflite/ @benvanik

# Integrations
/integrations/ @benvanik @stellaraccident
/integrations/tensorflow/ @stellaraccident
/integrations/tensorflow/test/**/iree_tfl_tests/ @rsuderman

# Experimental
# It's experimental, but we still don't want any old directory added here.
/experimental/ @benvanik @stellaraccident
/experimental/cpu_ukernel/ @bjacob
/experimental/cuda2/ @antiagainst
/experimental/dispatch_profiler/ @manishucsd
/experimental/rocm/ @benvanik
/experimental/web/ @ScottTodd
/experimental/webgpu/ @benvanik @ScottTodd

# Infra Top-Level Directories
/build_tools/ @ScottTodd @pzread
/build_tools/benchmarks/ @antiagainst @pzread
/build_tools/python/ @pzread
/build_tools/python_deploy/ @stellaraccident
/build_tools/scripts/ @ScottTodd
/build_tools/third_party/ @ScottTodd @stellaraccident
/.github/ @ScottTodd

# llvm-external-projects
/llvm-external-projects/ @stellaraccident
/llvm-external-projects/iree-dialects/ @MaheshRavishankar
/llvm-external-projects/iree-dialects/**/Dialect/LinalgExt/ @hanhanW @MaheshRavishankar
/llvm-external-projects/iree-dialects/test/iree_linalgext @hanhanW @MaheshRavishankar

# Other Top-Level Directories
/docs/ @ScottTodd
/samples/ @ScottTodd
/tools/ @benvanik

# Compiler
/compiler/src/iree/compiler/ @benvanik
/compiler/src/iree/compiler/Codegen/ @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/Common @hanhanW @dcaballe
/compiler/src/iree/compiler/Codegen/LLVMCPU/ @dcaballe @hanhanW @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/LLVMGPU/ @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/SPIRV/ @antiagainst @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/TransformStrategies/ @qedawkins @MaheshRavishankar
/compiler/src/iree/compiler/ConstEval/ @hanhanW @stellaraccident
/compiler/src/iree/compiler/Dialect/Flow/ @hanhanW @MaheshRavishankar
/compiler/src/iree/compiler/Dialect/Vulkan/ @antiagainst
/compiler/src/iree/compiler/GlobalOptimization/ @hanhanW
/compiler/src/iree/compiler/InputConversion/ @MaheshRavishankar @stellaraccident
/compiler/src/iree/compiler/InputConversion/MHLO @hanhanW @MaheshRavishankar @rsuderman
/compiler/src/iree/compiler/InputConversion/TOSA @MaheshRavishankar @rsuderman

# Runtime
/runtime/src/iree/ @benvanik
/runtime/src/iree/hal/cts/ @ScottTodd
/runtime/src/iree/hal/drivers/metal/ @antiagainst
/runtime/src/iree/hal/drivers/vulkan/ @antiagainst @ScottTodd
