# 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.
#
# Note that GitHub's concept of "code owner" is independent from LLVM's own
# "code owner" concept, they merely happen to share terminology. See
# https://llvm.org/docs/DeveloperPolicy.html#code-owners, as well as the
# CODE_OWNERS.txt files in 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/include/clang/Sema/Sema.h @Endilll
/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

# 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
/mlir/include/mlir/Dialect/Vector/IR @kuhar
/mlir/lib/Dialect/Vector @banach-space @dcaballe @nicolasvasilache
/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 @dcci

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

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

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

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

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