# 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/stablehlo @ghost
/third_party/torch-mlir @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

# Infra Top-Level Directories
/build_tools/ @Groverkss @kuhar
/build_tools/python_deploy/ @stellaraccident
/build_tools/scripts/ @Groverkss @kuhar
/build_tools/third_party/ @ScottTodd @stellaraccident
/.github/ @amd-eochoalo @kuhar @Groverkss

# llvm-external-projects
/llvm-external-projects/ @stellaraccident

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

# Tests
/tests/external/iree-test-suites @Groverkss @MaheshRavishankar @kuhar

# Compiler
/compiler/src/iree/compiler/ @benvanik
/compiler/src/iree/compiler/API/ @benvanik @IanWood1
/compiler/src/iree/compiler/Codegen/ @MaheshRavishankar
/compiler/src/iree/compiler/Codegen/Common @hanhanW @Max191 @MaheshRavishankar @qedawkins
/compiler/src/iree/compiler/Codegen/**/*Vector* @amd-eochoalo @Groverkss @hanhanW @sommerlukas
/compiler/src/iree/compiler/Codegen/Common/GPU @qedawkins @Groverkss @kuhar
/compiler/src/iree/compiler/Codegen/Dialect/Codegen @Max191 @MaheshRavishankar @qedawkins
/compiler/src/iree/compiler/Codegen/Dialect/CPU @hanhanW
/compiler/src/iree/compiler/Codegen/Dialect/GPU @qedawkins @Max191 @Groverkss @nirvedhmeshram @krzysz00
/compiler/src/iree/compiler/Codegen/Dialect/PCF @qedawkins
/compiler/src/iree/compiler/Codegen/Dialect/VectorExt @Groverkss
/compiler/src/iree/compiler/Codegen/ExternalInterfaces @hanhanW @Max191 @jtuyls
/compiler/src/iree/compiler/Codegen/LLVMCPU/ @hanhanW
/compiler/src/iree/compiler/Codegen/LLVMGPU/ @qedawkins @kuhar @Groverkss @nirvedhmeshram @krzysz00 @Max191
/compiler/src/iree/compiler/Codegen/SPIRV/ @kuhar
/compiler/src/iree/compiler/ConstEval/ @hanhanW @MaheshRavishankar
/compiler/src/iree/compiler/Dialect/Encoding/ @hanhanW @Max191 @jtuyls
/compiler/src/iree/compiler/Dialect/Flow/ @hanhanW @MaheshRavishankar @IanWood1
/compiler/src/iree/compiler/Dialect/LinalgExt/ @hanhanW @MaheshRavishankar @Groverkss @Max191 @IanWood1 @bangtianliu
/compiler/src/iree/compiler/Dialect/Stream/ @benvanik @hanhanW @MaheshRavishankar
/compiler/src/iree/compiler/Dialect/TensorExt/ @hanhanW @MaheshRavishankar @IanWood1
/compiler/src/iree/compiler/Dialect/Vulkan/ @kuhar
/compiler/src/iree/compiler/DispatchCreation/ @MaheshRavishankar @IanWood1
/compiler/src/iree/compiler/GlobalOptimization/ @MaheshRavishankar @IanWood1
/compiler/src/iree/compiler/InputConversion/ @MaheshRavishankar
/compiler/src/iree/compiler/Pipelines/ @benvanik @IanWood1
/compiler/src/iree/compiler/Preprocessing/ @qedawkins @MaheshRavishankar

# Compiler Plugins
/compiler/plugins/input/StableHLO/ @MaheshRavishankar @rsuderman
/compiler/plugins/input/Torch/ @keshavvinayak01 @rsuderman @zjgarvey
/compiler/plugins/input/TOSA/ @MaheshRavishankar @rsuderman
/compiler/plugins/target/ROCM/ @kuhar @krzysz00 @jtuyls @Yu-Zhewen

# Runtime
/runtime/src/iree/ @benvanik
/runtime/src/iree/hal/drivers/amdgpu/ @benvanik @AWoloszyn
/runtime/src/iree/hal/drivers/cuda/ @antiagainst
/runtime/src/iree/hal/drivers/hip/ @AWoloszyn
/runtime/src/iree/hal/drivers/metal/ @antiagainst
/runtime/src/iree/hal/drivers/vulkan/ @antiagainst
