# Codeowners for IREE Github Repository.
# 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.

# Code owners for individual components/directories

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

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

# Integrations
/integrations/ @benvanik @stellaraccident
/integrations/tensorflow/ @stellaraccident
/integrations/tensorflow/build_tools/ @GMNGeoffrey @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 @GMNGeoffrey @stellaraccident
/experimental/remoting/ @stellaraccident
/experimental/rocm/ @ThomasRaoux
/experimental/web/ @ScottTodd

# Infra Top-Level Directories
/benchmarks/ @GMNGeoffrey @antiagainst
/build_tools/ @GMNGeoffrey @ScottTodd
/build_tools/benchmarks/ @GMNGeoffrey @antiagainst
/build_tools/python_deploy/ @stellaraccident
/build_tools/scripts/ @GMNGeoffrey @ScottTodd
/build_tools/third_party/ @GMNGeoffrey @ScottTodd @stellaraccident
/.github/ @GMNGeoffrey @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


# Main IREE directories
/iree/ @benvanik

# Compiler
/compiler/src/iree/compiler/ @benvanik
/compiler/src/iree/compiler/Codegen/ @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/LLVMCPU/ @hanhanW @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/LLVMGPU/ @MaheshRavishankar @ThomasRaoux
/compiler/src/iree/compiler/Codegen/Sandbox/ @hanhanW @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/SPIRV/ @antiagainst @MaheshRavishankar
/compiler/src/iree/compiler/ConstEval/ @stellaraccident
/compiler/src/iree/compiler/Dialect/Flow/ @MaheshRavishankar
/compiler/src/iree/compiler/Dialect/Vulkan/ @antiagainst
/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/cuda/ @ThomasRaoux
/runtime/src/iree/hal/cts/ @ScottTodd
/runtime/src/iree/hal/vulkan/ @antiagainst @ScottTodd

# Other IREE directories
/samples/ @ScottTodd
/iree/test/ @ghost
/iree/tools/ @benvanik @GMNGeoffrey
