# 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/llvm-project.branch-pin @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 @pzread
/build_tools/ @GMNGeoffrey @ScottTodd @pzread
/build_tools/benchmarks/ @GMNGeoffrey @antiagainst @pzread
/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
/samples/ @ScottTodd
/tools/ @benvanik @GMNGeoffrey

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