# This file lists reviewers that are auto-assigned when a pull request modifies
# certain files or directories. If you add yourself to this file, you commit to
# reviewing a large fraction of pull requests in the relevant area.
#
# The GitHub "code owners" mechanism is used exclusively to auto-assign
# reviewers and does not carry significance beyond that. It is not necessary
# to receive an approval from a "code owner" in particular -- any LLVM project
# member can approve pull requests.
#
# This is independent of LLVM's own "maintainer" concept.
# See https://llvm.org/docs/DeveloperPolicy.html#maintainers as well as the
# Maintainers.* files in the the respective subproject directories.

/libcxx/ @llvm/reviewers-libcxx
/libcxxabi/ @llvm/reviewers-libcxxabi
/libunwind/ @llvm/reviewers-libunwind
/runtimes/ @llvm/reviewers-libcxx

/llvm/lib/Analysis/BasicAliasAnalysis.cpp @nikic
/llvm/lib/Analysis/InstructionSimplify.cpp @nikic
/llvm/lib/Analysis/LazyValueInfo.cpp @nikic
/llvm/lib/Analysis/ScalarEvolution.cpp @nikic
/llvm/lib/Analysis/ValueTracking.cpp @nikic
/llvm/lib/IR/ConstantRange.cpp @nikic
/llvm/lib/IR/Core.cpp @nikic
/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp @nikic
/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp @nikic
/llvm/lib/Transforms/InstCombine/ @nikic

/clang/test/CXX/drs/ @Endilll
/clang/www/cxx_dr_status.html @Endilll
/clang/www/make_cxx_dr_status @Endilll

/clang/include/clang/CIR @lanza @bcardosolopes
/clang/lib/CIR @lanza @bcardosolopes
/clang/tools/cir-* @lanza @bcardosolopes

/lldb/ @JDevlieghere

# MLIR Interfaces.
/mlir/include/mlir/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache
/mlir/lib/Interfaces/TilingInterface.* @MaheshRavishankar @nicolasvasilache
/mlir/include/mlir/Interfaces/ValueBoundsOpInterface.* @matthias-springer
/mlir/lib/Interfaces/ValueBoundsOpInterface.* @matthias-springer
/mlir/**/ValueBoundsOpInterfaceImpl.* @matthias-springer
/mlir/include/mlir/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer
/mlir/lib/Interfaces/RuntimeVerifiableOpInterface.* @matthias-springer
/mlir/**/RuntimeVerifiableOpInterfaceImpl.* @matthias-springer
/mlir/include/mlir/Interfaces/SubsetOpInterface.* @matthias-springer
/mlir/lib/Interfaces/SubsetOpInterface.* @matthias-springer
/mlir/**/SubsetOpInterfaceImpl.* @matthias-springer
/mlir/include/mlir/Interfaces/DestinationStyleOpInterface.* @matthias-springer
/mlir/lib/Interfaces/DestinationStyleOpInterface.* @matthias-springer

# Bufferization Dialect in MLIR.
/mlir/include/mlir/Dialect/Bufferization @matthias-springer
/mlir/lib/Dialect/Bufferization @matthias-springer
/mlir/**/BufferizableOpInterfaceImpl.* @matthias-springer
/mlir/Dialect/*/Transforms/Bufferize.cpp @matthias-springer

# Linalg Dialect in MLIR.
/mlir/include/mlir/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin
/mlir/lib/Dialect/Linalg @dcaballe @nicolasvasilache @rengolin
/mlir/lib/Dialect/Linalg/Transforms/DecomposeLinalgOps.cpp @MaheshRavishankar @nicolasvasilache
/mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp @dcaballe @MaheshRavishankar @nicolasvasilache
/mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp @MaheshRavishankar @nicolasvasilache
/mlir/lib/Dialect/Linalg/Transforms/DataLayoutPropagation.cpp @hanhanW @nicolasvasilache
/mlir/lib/Dialect/Linalg/Transforms/Transforms.cpp @dcaballe @hanhanW @nicolasvasilache
/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp @banach-space @dcaballe @hanhanW @nicolasvasilache @Groverkss

# MemRef Dialect in MLIR.
/mlir/lib/Dialect/MemRef/Transforms/EmulateNarrowType.cpp @MaheshRavishankar @nicolasvasilache

# Vector Dialect in MLIR.
/mlir/**/*AMX* @aartbik @dcaballe
/mlir/**/*Neon* @banach-space @dcaballe @nicolasvasilache
/mlir/**/*SME* @banach-space @dcaballe @nicolasvasilache
/mlir/**/*SVE* @banach-space @dcaballe @nicolasvasilache
/mlir/**/*VectorInterfaces* @dcaballe @nicolasvasilache
/mlir/**/*VectorToSCF* @banach-space @dcaballe @matthias-springer @nicolasvasilache
/mlir/**/*VectorToLLVM* @banach-space @dcaballe @nicolasvasilache
/mlir/**/*X86Vector* @aartbik @dcaballe @nicolasvasilache
/mlir/include/mlir/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss
/mlir/include/mlir/Dialect/Vector/IR @kuhar
/mlir/lib/Dialect/Vector @banach-space @dcaballe @nicolasvasilache @Groverkss
/mlir/lib/Dialect/Vector/Transforms/* @banach-space @dcaballe @hanhanW @nicolasvasilache
/mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp @banach-space @dcaballe @MaheshRavishankar @nicolasvasilache
/mlir/**/*EmulateNarrowType* @dcaballe @hanhanW

# Presburger library in MLIR
/mlir/**/*Presburger* @Groverkss @Superty

# Tensor Dialect in MLIR.
/mlir/lib/Dialect/Tensor/IR/TensorTilingInterfaceImpl.cpp @hanhanW @nicolasvasilache
/mlir/lib/Dialect/Tensor/Transforms/* @hanhanW @nicolasvasilache

# Transform Dialect in MLIR.
/mlir/include/mlir/Dialect/Transform/* @ftynse @nicolasvasilache
/mlir/lib/Dialect/Transform/* @ftynse @nicolasvasilache
/mlir/**/*TransformOps* @ftynse @nicolasvasilache

# SPIR-V Dialect in MLIR.
/mlir/**/SPIRV/ @antiagainst @kuhar
/mlir/**/SPIRVTo*/ @antiagainst @kuhar
/mlir/**/*ToSPIRV/ @antiagainst @kuhar
/mlir/tools/mlir-tblgen/SPIRVUtilsGen.cpp @antiagainst @kuhar

# MLIR Sparsifier.
/mlir/**/*SparseTensor*/ @aartbik @PeimingLiu @yinying-lisa-li @matthias-springer

# MLIR NVGPU Dialect
/mlir/**/NVGPU*/ @grypp
/mlir/test/**/CUDA/ @grypp

# MLIR NVVM Dialect in MLIR
/mlir/**/LLVMIR/**/BasicPtxBuilderInterface* @grypp
/mlir/**/NVVM* @grypp

# MLIR Index Dialect
/mlir/**/Index* @mogball

# MLIR Python Bindings
/mlir/test/python/ @ftynse @makslevental @stellaraccident
/mlir/python/ @ftynse @makslevental @stellaraccident

# MLIR Mem2Reg/SROA
/mlir/**/Transforms/Mem2Reg.* @moxinilian
/mlir/**/Transforms/SROA.* @moxinilian

# BOLT
/bolt/ @aaupov @maksfb @rafaelauler @ayermolo @yota9 @paschalis-mpeis

# Bazel build system.
/utils/bazel/ @rupprecht @keith @aaronmondal

# InstallAPI and TextAPI
/llvm/**/TextAPI/ @cyndyishida
/clang/**/InstallAPI/ @cyndyishida
/clang/tools/clang-installapi/ @cyndyishida

# ExtractAPI
/clang/**/ExtractAPI @daniel-grumberg @QuietMisdreavus

# DWARFLinker, dwarfutil, dsymutil
/llvm/**/DWARFLinker/ @JDevlieghere
/llvm/**/dsymutil/ @JDevlieghere
/llvm/**/llvm-dwarfutil/ @JDevlieghere

# libclang/Python bindings
/clang/bindings/python @DeinAlptraum
