[Mlir-commits] [mlir] [mlir] Migrate users to explicitly discardable/inherent attribute APIs (PR #217233)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Aug 19 01:03:36 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-spirv
Author: Mehdi Amini (joker-eph)
<details>
<summary>Changes</summary>
Start to require explicit handling of discardable attributes. Use operation-specific accessors for attributes stored as properties.
This is both more efficient (no need to materialize the combine dictionnary) and a step in the direction of deprecating these combined APIs.
Assisted-by: Codex
---
Patch is 500.58 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/217233.diff
300 Files Affected:
- (modified) mlir/examples/toy/Ch2/mlir/Dialect.cpp (+4-2)
- (modified) mlir/examples/toy/Ch3/mlir/Dialect.cpp (+4-2)
- (modified) mlir/examples/toy/Ch4/mlir/Dialect.cpp (+6-4)
- (modified) mlir/examples/toy/Ch5/mlir/Dialect.cpp (+6-4)
- (modified) mlir/examples/toy/Ch6/mlir/Dialect.cpp (+6-4)
- (modified) mlir/examples/toy/Ch7/mlir/Dialect.cpp (+6-4)
- (modified) mlir/include/mlir/Conversion/ArithCommon/AttrToLLVMConverter.h (+13-4)
- (modified) mlir/include/mlir/Conversion/LLVMCommon/Pattern.h (+3-2)
- (modified) mlir/include/mlir/Conversion/LLVMCommon/VectorPattern.h (+5-2)
- (modified) mlir/include/mlir/Dialect/ArmSME/IR/ArmSMEOps.td (+2-2)
- (modified) mlir/include/mlir/Dialect/Async/IR/AsyncOps.td (+2-2)
- (modified) mlir/include/mlir/Dialect/EmitC/IR/EmitC.td (+2-2)
- (modified) mlir/include/mlir/Dialect/Func/IR/FuncOps.td (+2-2)
- (modified) mlir/include/mlir/Dialect/GPU/IR/GPUOps.td (+4-2)
- (modified) mlir/include/mlir/Dialect/LLVMIR/BasicPtxBuilderInterface.td (+12-5)
- (modified) mlir/include/mlir/Dialect/LLVMIR/LLVMInterfaces.td (+11)
- (modified) mlir/include/mlir/Dialect/LLVMIR/NVVMOps.td (+2-1)
- (modified) mlir/include/mlir/Dialect/OpenACC/OpenACC.h (+3-2)
- (modified) mlir/include/mlir/Dialect/OpenACCMPCommon/Interfaces/AtomicInterfaces.td (+6-3)
- (modified) mlir/include/mlir/Dialect/OpenMP/OpenMPOpsInterfaces.td (+26-19)
- (modified) mlir/include/mlir/Dialect/Shard/Transforms/Simplify.h (+4-1)
- (modified) mlir/include/mlir/Dialect/Tosa/Utils/ConversionUtils.h (+4-4)
- (modified) mlir/include/mlir/IR/Matchers.h (+11-2)
- (modified) mlir/include/mlir/IR/Operation.h (+84-16)
- (modified) mlir/include/mlir/IR/SymbolInterfaces.td (+4-3)
- (modified) mlir/include/mlir/Target/SMTLIB/Namespace.h (+3-2)
- (modified) mlir/lib/Analysis/CallGraph.cpp (+10-3)
- (modified) mlir/lib/Analysis/DataFlow/ConstantPropagationAnalysis.cpp (+6-2)
- (modified) mlir/lib/Bytecode/Writer/BytecodeWriter.cpp (+7-4)
- (modified) mlir/lib/Bytecode/Writer/IRNumbering.cpp (+9-3)
- (modified) mlir/lib/CAPI/Dialect/Linalg.cpp (+4-1)
- (modified) mlir/lib/CAPI/IR/IR.cpp (+5-3)
- (modified) mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp (+3-3)
- (modified) mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp (+4-4)
- (modified) mlir/lib/Conversion/ArithToSPIRV/ArithToSPIRV.cpp (+7-5)
- (modified) mlir/lib/Conversion/ComplexToLLVM/ComplexToLLVM.cpp (+2-2)
- (modified) mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp (+2-2)
- (modified) mlir/lib/Conversion/FuncToEmitC/FuncToEmitC.cpp (+16-5)
- (modified) mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp (+25-19)
- (modified) mlir/lib/Conversion/FuncToSPIRV/FuncToSPIRV.cpp (+8-4)
- (modified) mlir/lib/Conversion/GPUCommon/GPUOpsLowering.cpp (+8-6)
- (modified) mlir/lib/Conversion/GPUCommon/IndexIntrinsicsOpLowering.h (+1-1)
- (modified) mlir/lib/Conversion/GPUToNVVM/LowerGpuOpsToNVVMOps.cpp (+2-2)
- (modified) mlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp (+6-5)
- (modified) mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp (+33-8)
- (modified) mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRVPass.cpp (+2-2)
- (modified) mlir/lib/Conversion/LLVMCommon/LowerFunctionDiscardablesToLLVM.cpp (+2-1)
- (modified) mlir/lib/Conversion/LLVMCommon/Pattern.cpp (+1-1)
- (modified) mlir/lib/Conversion/LinalgToStandard/LinalgToStandard.cpp (+2-2)
- (modified) mlir/lib/Conversion/MathToFuncs/MathToFuncs.cpp (+3-3)
- (modified) mlir/lib/Conversion/MathToLibm/MathToLibm.cpp (+2-2)
- (modified) mlir/lib/Conversion/MathToXeVM/MathToXeVM.cpp (+2-1)
- (modified) mlir/lib/Conversion/MemRefToSPIRV/MapMemRefStorageClassPass.cpp (+3-3)
- (modified) mlir/lib/Conversion/NVGPUToNVVM/NVGPUToNVVM.cpp (+2-2)
- (modified) mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp (+9-2)
- (modified) mlir/lib/Conversion/RaiseWasm/RaiseWasmMLIR.cpp (+4-4)
- (modified) mlir/lib/Conversion/SCFToControlFlow/SCFToControlFlow.cpp (+2-2)
- (modified) mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp (+10-9)
- (modified) mlir/lib/Conversion/SCFToSPIRV/SCFToSPIRV.cpp (+6-5)
- (modified) mlir/lib/Conversion/SPIRVToLLVM/ConvertLaunchFuncToLLVMCalls.cpp (+6-23)
- (modified) mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp (+25-12)
- (modified) mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp (+7-6)
- (modified) mlir/lib/Conversion/TosaToLinalg/TosaToLinalgNamed.cpp (+3-3)
- (modified) mlir/lib/Conversion/TosaToSPIRVTosa/TosaToSPIRVTosa.cpp (+2-2)
- (modified) mlir/lib/Conversion/TosaToSPIRVTosa/TosaToSPIRVTosaConstants.cpp (+3-2)
- (modified) mlir/lib/Conversion/TosaToSPIRVTosa/TosaToSPIRVTosaPass.cpp (+2-2)
- (modified) mlir/lib/Conversion/VectorToArmSME/VectorToArmSME.cpp (+3-3)
- (modified) mlir/lib/Conversion/VectorToSCF/VectorToSCF.cpp (+5-5)
- (modified) mlir/lib/Conversion/XeGPUToXeVM/XeGPUToXeVM.cpp (+2-2)
- (modified) mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp (+20-9)
- (modified) mlir/lib/Dialect/AMDGPU/Transforms/EmulateAtomics.cpp (+2-1)
- (modified) mlir/lib/Dialect/AMDGPU/Transforms/MaskedloadToLoad.cpp (+2-2)
- (modified) mlir/lib/Dialect/Affine/Analysis/Utils.cpp (+2-1)
- (modified) mlir/lib/Dialect/Affine/IR/AffineOps.cpp (+47-53)
- (modified) mlir/lib/Dialect/Affine/Transforms/PipelineDataTransfer.cpp (+1-1)
- (modified) mlir/lib/Dialect/Affine/Transforms/SimplifyAffineStructures.cpp (+7-2)
- (modified) mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp (+5-3)
- (modified) mlir/lib/Dialect/Affine/Utils/Utils.cpp (+9-10)
- (modified) mlir/lib/Dialect/Arith/IR/ArithOps.cpp (+9-4)
- (modified) mlir/lib/Dialect/Arith/Transforms/EmulateUnsupportedFloats.cpp (+5-3)
- (modified) mlir/lib/Dialect/Arith/Transforms/IntRangeOptimizations.cpp (+3-2)
- (modified) mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp (+3-2)
- (modified) mlir/lib/Dialect/ArmSME/Transforms/EnableArmStreaming.cpp (+3-3)
- (modified) mlir/lib/Dialect/ArmSVE/Transforms/LegalizeVectorStorage.cpp (+2-2)
- (modified) mlir/lib/Dialect/Async/IR/Async.cpp (+4-3)
- (modified) mlir/lib/Dialect/Async/Transforms/AsyncToAsyncRuntime.cpp (+7-4)
- (modified) mlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp (+5-2)
- (modified) mlir/lib/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.cpp (+4-2)
- (modified) mlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp (+15-11)
- (modified) mlir/lib/Dialect/Bufferization/Transforms/OneShotModuleBufferize.cpp (+3-3)
- (modified) mlir/lib/Dialect/Bufferization/Transforms/OwnershipBasedBufferDeallocation.cpp (+6-6)
- (modified) mlir/lib/Dialect/DLTI/DLTI.cpp (+1-1)
- (modified) mlir/lib/Dialect/DLTI/Traits.cpp (+2-2)
- (modified) mlir/lib/Dialect/EmitC/IR/EmitC.cpp (+5-4)
- (modified) mlir/lib/Dialect/EmitC/Transforms/MLGOAddReflectionMap.cpp (+2-1)
- (modified) mlir/lib/Dialect/Func/IR/FuncOps.cpp (+4-4)
- (modified) mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp (+2-1)
- (modified) mlir/lib/Dialect/GPU/IR/GPUDialect.cpp (+26-18)
- (modified) mlir/lib/Dialect/GPU/IR/InferIntRangeInterfaceImpls.cpp (+3-1)
- (modified) mlir/lib/Dialect/GPU/Transforms/EliminateBarriers.cpp (+1-1)
- (modified) mlir/lib/Dialect/GPU/Transforms/KernelOutlining.cpp (+5-3)
- (modified) mlir/lib/Dialect/GPU/Transforms/ParallelLoopMapper.cpp (+4-3)
- (modified) mlir/lib/Dialect/IRDL/IRDLLoading.cpp (+2-2)
- (modified) mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp (+2-2)
- (modified) mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp (+21-14)
- (modified) mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp (+20-11)
- (modified) mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp (+1-1)
- (modified) mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp (+3-2)
- (modified) mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp (+4-4)
- (modified) mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp (+39-26)
- (modified) mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp (+11-4)
- (modified) mlir/lib/Dialect/Linalg/Transforms/BufferizableOpInterfaceImpl.cpp (+12-5)
- (modified) mlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp (+2-2)
- (modified) mlir/lib/Dialect/Linalg/Transforms/ElementwiseToLinalg.cpp (+5-4)
- (modified) mlir/lib/Dialect/Linalg/Transforms/EraseUnusedOperandsAndResults.cpp (+2-2)
- (modified) mlir/lib/Dialect/Linalg/Transforms/FoldIntoElementwise.cpp (+2-1)
- (modified) mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp (+1-1)
- (modified) mlir/lib/Dialect/Linalg/Transforms/TilingInterfaceImpl.cpp (+17-9)
- (modified) mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp (+10-8)
- (modified) mlir/lib/Dialect/Math/Transforms/PolynomialApproximation.cpp (+2-2)
- (modified) mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp (+8-6)
- (modified) mlir/lib/Dialect/MemRef/Transforms/AllocationOpInterfaceImpl.cpp (+6-5)
- (modified) mlir/lib/Dialect/MemRef/Transforms/MultiBuffer.cpp (+3-2)
- (modified) mlir/lib/Dialect/MemRef/Transforms/NormalizeMemRefs.cpp (+2-1)
- (modified) mlir/lib/Dialect/NVGPU/IR/NVGPUDialect.cpp (+2-3)
- (modified) mlir/lib/Dialect/NVGPU/Transforms/MmaSyncTF32Transform.cpp (+1-1)
- (modified) mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp (+1-1)
- (modified) mlir/lib/Dialect/OpenACC/IR/OpenACCCG.cpp (+12-6)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCBindRoutine.cpp (+4-4)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCCGToGPU.cpp (+6-4)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCComputeLowering.cpp (+1-1)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCDeclareGPUModuleInsertion.cpp (+12-9)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCEmitRemarksData.cpp (+1-1)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCEmitRemarksLoop.cpp (+1-1)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCImplicitData.cpp (+2-2)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCImplicitDeclare.cpp (+5-4)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCImplicitRoutine.cpp (+2-2)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCRecipeMaterialization.cpp (+9-7)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCRoutineLowering.cpp (+9-7)
- (modified) mlir/lib/Dialect/OpenACC/Transforms/ACCRoutineToGPUFunc.cpp (+10-6)
- (modified) mlir/lib/Dialect/OpenACC/Utils/OpenACCUtils.cpp (+9-7)
- (modified) mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsCG.cpp (+15-10)
- (modified) mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsGPU.cpp (+2-2)
- (modified) mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsLoop.cpp (+5-3)
- (modified) mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp (+14-10)
- (modified) mlir/lib/Dialect/OpenMP/Utils/Utils.cpp (+4-4)
- (modified) mlir/lib/Dialect/PDLInterp/IR/PDLInterp.cpp (+1-1)
- (modified) mlir/lib/Dialect/Quant/Transforms/NormalizeQuantTypes.cpp (+2-1)
- (modified) mlir/lib/Dialect/SCF/IR/SCF.cpp (+29-20)
- (modified) mlir/lib/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.cpp (+2-1)
- (modified) mlir/lib/Dialect/SCF/Transforms/ForToWhile.cpp (+3-2)
- (modified) mlir/lib/Dialect/SCF/Transforms/ForallToParallel.cpp (+1-1)
- (modified) mlir/lib/Dialect/SCF/Transforms/LoopSpecialization.cpp (+9-7)
- (modified) mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp (+2-2)
- (modified) mlir/lib/Dialect/SMT/IR/SMTOps.cpp (+8-4)
- (modified) mlir/lib/Dialect/SPIRV/IR/AtomicOps.cpp (+1-5)
- (modified) mlir/lib/Dialect/SPIRV/IR/ControlFlowOps.cpp (+2-2)
- (modified) mlir/lib/Dialect/SPIRV/IR/DotProductOps.cpp (+5-9)
- (modified) mlir/lib/Dialect/SPIRV/IR/GroupOps.cpp (+1-5)
- (modified) mlir/lib/Dialect/SPIRV/IR/MemoryOps.cpp (+17-16)
- (modified) mlir/lib/Dialect/SPIRV/IR/SPIRVCanonicalization.cpp (+5-4)
- (modified) mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp (+18-12)
- (modified) mlir/lib/Dialect/SPIRV/IR/TargetAndABI.cpp (+2-2)
- (modified) mlir/lib/Dialect/SPIRV/Linking/ModuleCombiner/ModuleCombiner.cpp (+5-4)
- (modified) mlir/lib/Dialect/SPIRV/Transforms/DecorateCompositeTypeLayoutPass.cpp (+4-7)
- (modified) mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp (+7-5)
- (modified) mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp (+17-9)
- (modified) mlir/lib/Dialect/SPIRV/Transforms/UnifyAliasedResourcePass.cpp (+6-4)
- (modified) mlir/lib/Dialect/SPIRV/Transforms/UpdateVCEPass.cpp (+1-1)
- (modified) mlir/lib/Dialect/Shape/IR/Shape.cpp (+12-8)
- (modified) mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp (+1-1)
- (modified) mlir/lib/Dialect/SparseTensor/Transforms/SparseAssembler.cpp (+5-4)
- (modified) mlir/lib/Dialect/SparseTensor/Transforms/SparseGPUCodegen.cpp (+4-3)
- (modified) mlir/lib/Dialect/SparseTensor/Transforms/SparseReinterpretMap.cpp (+2-2)
- (modified) mlir/lib/Dialect/SparseTensor/Transforms/SparseVectorization.cpp (+5-4)
- (modified) mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp (+2-2)
- (modified) mlir/lib/Dialect/SparseTensor/Transforms/Utils/CodegenUtils.cpp (+2-2)
- (modified) mlir/lib/Dialect/SparseTensor/Transforms/Utils/LoopEmitter.h (+2-1)
- (modified) mlir/lib/Dialect/Tensor/Transforms/ScalarizeFunctionResult.cpp (+2-1)
- (modified) mlir/lib/Dialect/Tosa/IR/TargetEnv.cpp (+2-1)
- (modified) mlir/lib/Dialect/Tosa/IR/TosaOps.cpp (+12-9)
- (modified) mlir/lib/Dialect/Tosa/Transforms/TosaAttachTarget.cpp (+1-1)
- (modified) mlir/lib/Dialect/Tosa/Transforms/TosaConvertIntegerTypeToSignless.cpp (+2-1)
- (modified) mlir/lib/Dialect/Tosa/Transforms/TosaNarrowTypes.cpp (+4-2)
- (modified) mlir/lib/Dialect/Tosa/Transforms/TosaReduceTransposes.cpp (+7-7)
- (modified) mlir/lib/Dialect/Tosa/Transforms/TosaValidation.cpp (+5-1)
- (modified) mlir/lib/Dialect/Tosa/Utils/ConversionUtils.cpp (+1-2)
- (modified) mlir/lib/Dialect/Transform/IR/TransformDialect.cpp (+2-2)
- (modified) mlir/lib/Dialect/Transform/IR/TransformOps.cpp (+5-6)
- (modified) mlir/lib/Dialect/Transform/Interfaces/TransformInterfaces.cpp (+2-2)
- (modified) mlir/lib/Dialect/Transform/Transforms/InterpreterPass.cpp (+1-1)
- (modified) mlir/lib/Dialect/Transform/Transforms/TransformInterpreterUtils.cpp (+2-2)
- (modified) mlir/lib/Dialect/Utils/StructuredOpsUtils.cpp (+5-3)
- (modified) mlir/lib/Dialect/Vector/IR/VectorOps.cpp (+18-12)
- (modified) mlir/lib/Dialect/Vector/Transforms/VectorDistribute.cpp (+2-1)
- (modified) mlir/lib/Dialect/Vector/Transforms/VectorDropLeadUnitDim.cpp (+13-7)
- (modified) mlir/lib/Dialect/Vector/Transforms/VectorLinearize.cpp (+6-2)
- (modified) mlir/lib/Dialect/Vector/Transforms/VectorTransferSplitRewritePatterns.cpp (+5-3)
- (modified) mlir/lib/Dialect/Vector/Transforms/VectorTransforms.cpp (+12-8)
- (modified) mlir/lib/Dialect/Vector/Transforms/VectorUnroll.cpp (+4-2)
- (modified) mlir/lib/Dialect/XeGPU/Transforms/XeGPUBlocking.cpp (+11-9)
- (modified) mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp (+5-5)
- (modified) mlir/lib/Dialect/XeGPU/Transforms/XeGPUPropagateLayout.cpp (+6-4)
- (modified) mlir/lib/Dialect/XeGPU/Transforms/XeGPUSgToLaneDistribute.cpp (+8-5)
- (modified) mlir/lib/Dialect/XeGPU/Transforms/XeGPUUnroll.cpp (+14-16)
- (modified) mlir/lib/Dialect/XeGPU/Transforms/XeGPUWgToSgDistribute.cpp (+3-2)
- (modified) mlir/lib/Dialect/XeGPU/Utils/XeGPUUtils.cpp (+15-12)
- (modified) mlir/lib/IR/AsmPrinter.cpp (+9-4)
- (modified) mlir/lib/IR/AttrTypeSubElements.cpp (+11-2)
- (modified) mlir/lib/IR/BuiltinAttributes.cpp (+3-4)
- (modified) mlir/lib/IR/BuiltinDialect.cpp (+7-4)
- (modified) mlir/lib/IR/Operation.cpp (+6-1)
- (modified) mlir/lib/IR/OperationSupport.cpp (+7-1)
- (modified) mlir/lib/IR/PatternMatch.cpp (+3-1)
- (modified) mlir/lib/IR/SymbolTable.cpp (+59-25)
- (modified) mlir/lib/Interfaces/FunctionImplementation.cpp (+12-6)
- (modified) mlir/lib/Interfaces/Utils/MemorySlotUtils.cpp (+2-1)
- (modified) mlir/lib/Pass/IRPrinting.cpp (+4-7)
- (modified) mlir/lib/Rewrite/ByteCode.cpp (+8-2)
- (modified) mlir/lib/Target/Cpp/TranslateToCpp.cpp (+4-2)
- (modified) mlir/lib/Target/LLVM/XeVM/Target.cpp (+2-1)
- (modified) mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMIRToLLVMTranslation.cpp (+1-1)
- (modified) mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp (+1-1)
- (modified) mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp (+2-3)
- (modified) mlir/lib/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.cpp (+4-4)
- (modified) mlir/lib/Target/LLVMIR/ModuleImport.cpp (+15-12)
- (modified) mlir/lib/Target/LLVMIR/ModuleTranslation.cpp (+7-5)
- (modified) mlir/lib/Target/LLVMIR/Transforms/TargetToDataLayout.cpp (+5-4)
- (modified) mlir/lib/Target/LLVMIR/Transforms/TargetToTargetFeatures.cpp (+3-2)
- (modified) mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp (+18-15)
- (modified) mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp (+18-26)
- (modified) mlir/lib/Target/SPIRV/Serialization/Serializer.cpp (+4-11)
- (modified) mlir/lib/Target/Wasm/TranslateFromWasm.cpp (+5-1)
- (modified) mlir/lib/Transforms/Utils/DialectConversion.cpp (+10-7)
- (modified) mlir/lib/Transforms/ViewOpGraph.cpp (+7-3)
- (modified) mlir/python/mlir/dialects/gpu/__init__.py (+3-7)
- (modified) mlir/test/lib/Analysis/DataFlow/TestDeadCodeAnalysis.cpp (+1-1)
- (modified) mlir/test/lib/Analysis/DataFlow/TestDenseBackwardDataFlowAnalysis.cpp (+7-6)
- (modified) mlir/test/lib/Analysis/DataFlow/TestDenseDataFlowAnalysis.h (+1-1)
- (modified) mlir/test/lib/Analysis/DataFlow/TestDenseForwardDataFlowAnalysis.cpp (+3-2)
- (modified) mlir/test/lib/Analysis/DataFlow/TestIntegerDivisibilityAnalysis.cpp (+3-2)
- (modified) mlir/test/lib/Analysis/DataFlow/TestLivenessAnalysis.cpp (+1-1)
- (modified) mlir/test/lib/Analysis/DataFlow/TestSparseBackwardDataFlowAnalysis.cpp (+3-3)
- (modified) mlir/test/lib/Analysis/TestAliasAnalysis.cpp (+3-2)
- (modified) mlir/test/lib/Analysis/TestDataFlowFramework.cpp (+8-7)
- (modified) mlir/test/lib/Analysis/TestSlice.cpp (+2-2)
- (modified) mlir/test/lib/Analysis/TestTopologicalSort.cpp (+4-4)
- (modified) mlir/test/lib/Dialect/Bufferization/TestTensorLikeAndBufferLike.cpp (+1-1)
- (modified) mlir/test/lib/Dialect/DLTI/TestDataLayoutQuery.cpp (+1-1)
- (modified) mlir/test/lib/Dialect/LLVM/TestPatterns.cpp (+3-2)
- (modified) mlir/test/lib/Dialect/OpenACC/TestOpenACCSupport.cpp (+4-3)
- (modified) mlir/test/lib/Dialect/OpenACC/TestPointerLikeTypeInterface.cpp (+10-8)
- (modified) mlir/test/lib/Dialect/OpenACC/TestRecipePopulate.cpp (+1-1)
- (modified) mlir/test/lib/Dialect/SCF/TestLoopUnrolling.cpp (+1-1)
- (modified) mlir/test/lib/Dialect/SCF/TestParallelLoopUnrolling.cpp (+1-1)
- (modified) mlir/test/lib/Dialect/SCF/TestSCFUtils.cpp (+14-11)
- (modified) mlir/test/lib/Dialect/SPIRV/TestAvailability.cpp (+3-2)
- (modified) mlir/test/lib/Dialect/SPIRV/TestEntryPointAbi.cpp (+7-7)
- (modified) mlir/test/lib/Dialect/Shape/TestShapeFunctions.cpp (+1-1)
- (modified) mlir/test/lib/Dialect/Tensor/TestTensorTransforms.cpp (+3-3)
- (modified) mlir/test/lib/Dialect/Test/TestDialect.cpp (+4-2)
- (modified) mlir/test/lib/Dialect/Test/TestDialectInterfaces.cpp (+3-2)
- (modified) mlir/test/lib/Dialect/Test/TestOpDefs.cpp (+21-8)
- (modified) mlir/test/lib/Dialect/Test/TestOps.td (+14-9)
- (modified) mlir/test/lib/Dialect/Test/TestOpsSyntax.cpp (+2-1)
- (modified) mlir/test/lib/Dialect/Test/TestPatterns.cpp (+45-38)
- (modified) mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp (+7-6)
- (modified) mlir/test/lib/Dialect/XeGPU/TestXeGPUTransforms.cpp (+3-2)
- (modified) mlir/test/lib/IR/TestAffineWalk.cpp (+1-1)
- (modified) mlir/test/lib/IR/TestBuiltinAttributeInterfaces.cpp (+4-1)
- (modified) mlir/test/lib/IR/TestBuiltinDistinctAttributes.cpp (+5-3)
- (modified) mlir/test/lib/IR/TestDiagnostics.cpp (+2-1)
- (modified) mlir/test/lib/IR/TestDiagnosticsMetadata.cpp (+2-1)
- (modified) mlir/test/lib/IR/TestDominance.cpp (+3-2)
- (modified) mlir/test/lib/IR/TestFunc.cpp (+8-5)
- (modified) mlir/test/lib/IR/TestOperationEquals.cpp (+3-3)
- (modified) mlir/test/lib/IR/TestPrintNesting.cpp (+4-3)
- (modified) mlir/test/lib/IR/TestSymbolUses.cpp (+2-1)
- (modified) mlir/test/lib/IR/TestVisitors.cpp (+4-4)
- (modified) mlir/test/lib/IR/TestVisitorsGeneric.cpp (+11-9)
- (modified) mlir/test/lib/Transforms/TestControlFlowSink.cpp (+2-2)
- (modified) mlir/test/mlir-linalg-ods-gen/test-linalg-ods-yaml-gen.yaml (+1-1)
- (modified) mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp (+5-3)
- (modified) mlir/tools/mlir-tblgen/DialectGen.cpp (+5-5)
``````````diff
diff --git a/mlir/examples/toy/Ch2/mlir/Dialect.cpp b/mlir/examples/toy/Ch2/mlir/Dialect.cpp
index 489f348c8be52..41c451e94d322 100644
--- a/mlir/examples/toy/Ch2/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch2/mlir/Dialect.cpp
@@ -84,7 +84,7 @@ static mlir::ParseResult parseBinaryOp(mlir::OpAsmParser &parser,
/// forms depending on if all of the types match.
static void printBinaryOp(mlir::OpAsmPrinter &printer, mlir::Operation *op) {
printer << " " << op->getOperands();
- printer.printOptionalAttrDict(op->getAttrs());
+ printer.printOptionalAttrDict(op->getDiscardableAttrDictionary().getValue());
printer << " : ";
// If all of the types are the same, print the type directly.
@@ -135,7 +135,9 @@ mlir::ParseResult ConstantOp::parse(mlir::OpAsmParser &parser,
/// strings, attributes, operands, types, etc.
void ConstantOp::print(mlir::OpAsmPrinter &printer) {
printer << " ";
- printer.printOptionalAttrDict((*this)->getAttrs(), /*elidedAttrs=*/{"value"});
+ printer.printOptionalAttrDict(
+ (*this)->getDiscardableAttrDictionary().getValue(),
+ /*elidedAttrs=*/{"value"});
printer << getValue();
}
diff --git a/mlir/examples/toy/Ch3/mlir/Dialect.cpp b/mlir/examples/toy/Ch3/mlir/Dialect.cpp
index 708855f18cf45..bfd4480db5702 100644
--- a/mlir/examples/toy/Ch3/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch3/mlir/Dialect.cpp
@@ -84,7 +84,7 @@ static mlir::ParseResult parseBinaryOp(mlir::OpAsmParser &parser,
/// forms depending on if all of the types match.
static void printBinaryOp(mlir::OpAsmPrinter &printer, mlir::Operation *op) {
printer << " " << op->getOperands();
- printer.printOptionalAttrDict(op->getAttrs());
+ printer.printOptionalAttrDict(op->getDiscardableAttrDictionary().getValue());
printer << " : ";
// If all of the types are the same, print the type directly.
@@ -135,7 +135,9 @@ mlir::ParseResult ConstantOp::parse(mlir::OpAsmParser &parser,
/// strings, attributes, operands, types, etc.
void ConstantOp::print(mlir::OpAsmPrinter &printer) {
printer << " ";
- printer.printOptionalAttrDict((*this)->getAttrs(), /*elidedAttrs=*/{"value"});
+ printer.printOptionalAttrDict(
+ (*this)->getDiscardableAttrDictionary().getValue(),
+ /*elidedAttrs=*/{"value"});
printer << getValue();
}
diff --git a/mlir/examples/toy/Ch4/mlir/Dialect.cpp b/mlir/examples/toy/Ch4/mlir/Dialect.cpp
index 1e5e67296a753..298491ad3476e 100644
--- a/mlir/examples/toy/Ch4/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch4/mlir/Dialect.cpp
@@ -146,7 +146,7 @@ static mlir::ParseResult parseBinaryOp(mlir::OpAsmParser &parser,
/// forms depending on if all of the types match.
static void printBinaryOp(mlir::OpAsmPrinter &printer, mlir::Operation *op) {
printer << " " << op->getOperands();
- printer.printOptionalAttrDict(op->getAttrs());
+ printer.printOptionalAttrDict(op->getDiscardableAttrDictionary().getValue());
printer << " : ";
// If all of the types are the same, print the type directly.
@@ -197,7 +197,9 @@ mlir::ParseResult ConstantOp::parse(mlir::OpAsmParser &parser,
/// strings, attributes, operands, types, etc.
void ConstantOp::print(mlir::OpAsmPrinter &printer) {
printer << " ";
- printer.printOptionalAttrDict((*this)->getAttrs(), /*elidedAttrs=*/{"value"});
+ printer.printOptionalAttrDict(
+ (*this)->getDiscardableAttrDictionary().getValue(),
+ /*elidedAttrs=*/{"value"});
printer << getValue();
}
@@ -328,13 +330,13 @@ void GenericCallOp::build(mlir::OpBuilder &builder, mlir::OperationState &state,
/// Return the callee of the generic call operation, this is required by the
/// call interface.
CallInterfaceCallable GenericCallOp::getCallableForCallee() {
- return (*this)->getAttrOfType<SymbolRefAttr>("callee");
+ return getCalleeAttr();
}
/// Set the callee for the generic call operation, this is required by the call
/// interface.
void GenericCallOp::setCalleeFromCallable(CallInterfaceCallable callee) {
- (*this)->setAttr("callee", cast<SymbolRefAttr>(callee));
+ setCalleeAttr(cast<FlatSymbolRefAttr>(cast<SymbolRefAttr>(callee)));
}
/// Get the argument operands to the called function, this is required by the
diff --git a/mlir/examples/toy/Ch5/mlir/Dialect.cpp b/mlir/examples/toy/Ch5/mlir/Dialect.cpp
index 69fb69fd6e7ba..0f9c24eba0cc7 100644
--- a/mlir/examples/toy/Ch5/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch5/mlir/Dialect.cpp
@@ -146,7 +146,7 @@ static mlir::ParseResult parseBinaryOp(mlir::OpAsmParser &parser,
/// forms depending on if all of the types match.
static void printBinaryOp(mlir::OpAsmPrinter &printer, mlir::Operation *op) {
printer << " " << op->getOperands();
- printer.printOptionalAttrDict(op->getAttrs());
+ printer.printOptionalAttrDict(op->getDiscardableAttrDictionary().getValue());
printer << " : ";
// If all of the types are the same, print the type directly.
@@ -197,7 +197,9 @@ mlir::ParseResult ConstantOp::parse(mlir::OpAsmParser &parser,
/// strings, attributes, operands, types, etc.
void ConstantOp::print(mlir::OpAsmPrinter &printer) {
printer << " ";
- printer.printOptionalAttrDict((*this)->getAttrs(), /*elidedAttrs=*/{"value"});
+ printer.printOptionalAttrDict(
+ (*this)->getDiscardableAttrDictionary().getValue(),
+ /*elidedAttrs=*/{"value"});
printer << getValue();
}
@@ -328,13 +330,13 @@ void GenericCallOp::build(mlir::OpBuilder &builder, mlir::OperationState &state,
/// Return the callee of the generic call operation, this is required by the
/// call interface.
CallInterfaceCallable GenericCallOp::getCallableForCallee() {
- return (*this)->getAttrOfType<SymbolRefAttr>("callee");
+ return getCalleeAttr();
}
/// Set the callee for the generic call operation, this is required by the call
/// interface.
void GenericCallOp::setCalleeFromCallable(CallInterfaceCallable callee) {
- (*this)->setAttr("callee", cast<SymbolRefAttr>(callee));
+ setCalleeAttr(cast<FlatSymbolRefAttr>(cast<SymbolRefAttr>(callee)));
}
/// Get the argument operands to the called function, this is required by the
diff --git a/mlir/examples/toy/Ch6/mlir/Dialect.cpp b/mlir/examples/toy/Ch6/mlir/Dialect.cpp
index 69fb69fd6e7ba..0f9c24eba0cc7 100644
--- a/mlir/examples/toy/Ch6/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch6/mlir/Dialect.cpp
@@ -146,7 +146,7 @@ static mlir::ParseResult parseBinaryOp(mlir::OpAsmParser &parser,
/// forms depending on if all of the types match.
static void printBinaryOp(mlir::OpAsmPrinter &printer, mlir::Operation *op) {
printer << " " << op->getOperands();
- printer.printOptionalAttrDict(op->getAttrs());
+ printer.printOptionalAttrDict(op->getDiscardableAttrDictionary().getValue());
printer << " : ";
// If all of the types are the same, print the type directly.
@@ -197,7 +197,9 @@ mlir::ParseResult ConstantOp::parse(mlir::OpAsmParser &parser,
/// strings, attributes, operands, types, etc.
void ConstantOp::print(mlir::OpAsmPrinter &printer) {
printer << " ";
- printer.printOptionalAttrDict((*this)->getAttrs(), /*elidedAttrs=*/{"value"});
+ printer.printOptionalAttrDict(
+ (*this)->getDiscardableAttrDictionary().getValue(),
+ /*elidedAttrs=*/{"value"});
printer << getValue();
}
@@ -328,13 +330,13 @@ void GenericCallOp::build(mlir::OpBuilder &builder, mlir::OperationState &state,
/// Return the callee of the generic call operation, this is required by the
/// call interface.
CallInterfaceCallable GenericCallOp::getCallableForCallee() {
- return (*this)->getAttrOfType<SymbolRefAttr>("callee");
+ return getCalleeAttr();
}
/// Set the callee for the generic call operation, this is required by the call
/// interface.
void GenericCallOp::setCalleeFromCallable(CallInterfaceCallable callee) {
- (*this)->setAttr("callee", cast<SymbolRefAttr>(callee));
+ setCalleeAttr(cast<FlatSymbolRefAttr>(cast<SymbolRefAttr>(callee)));
}
/// Get the argument operands to the called function, this is required by the
diff --git a/mlir/examples/toy/Ch7/mlir/Dialect.cpp b/mlir/examples/toy/Ch7/mlir/Dialect.cpp
index 4d2f063afd0fb..db0364307af94 100644
--- a/mlir/examples/toy/Ch7/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch7/mlir/Dialect.cpp
@@ -138,7 +138,7 @@ static mlir::ParseResult parseBinaryOp(mlir::OpAsmParser &parser,
/// forms depending on if all of the types match.
static void printBinaryOp(mlir::OpAsmPrinter &printer, mlir::Operation *op) {
printer << " " << op->getOperands();
- printer.printOptionalAttrDict(op->getAttrs());
+ printer.printOptionalAttrDict(op->getDiscardableAttrDictionary().getValue());
printer << " : ";
// If all of the types are the same, print the type directly.
@@ -189,7 +189,9 @@ mlir::ParseResult ConstantOp::parse(mlir::OpAsmParser &parser,
/// strings, attributes, operands, types, etc.
void ConstantOp::print(mlir::OpAsmPrinter &printer) {
printer << " ";
- printer.printOptionalAttrDict((*this)->getAttrs(), /*elidedAttrs=*/{"value"});
+ printer.printOptionalAttrDict(
+ (*this)->getDiscardableAttrDictionary().getValue(),
+ /*elidedAttrs=*/{"value"});
printer << getValue();
}
@@ -361,13 +363,13 @@ void GenericCallOp::build(mlir::OpBuilder &builder, mlir::OperationState &state,
/// Return the callee of the generic call operation, this is required by the
/// call interface.
CallInterfaceCallable GenericCallOp::getCallableForCallee() {
- return (*this)->getAttrOfType<SymbolRefAttr>("callee");
+ return getCalleeAttr();
}
/// Set the callee for the generic call operation, this is required by the call
/// interface.
void GenericCallOp::setCalleeFromCallable(CallInterfaceCallable callee) {
- (*this)->setAttr("callee", cast<SymbolRefAttr>(callee));
+ setCalleeAttr(cast<FlatSymbolRefAttr>(cast<SymbolRefAttr>(callee)));
}
/// Get the argument operands to the called function, this is required by the
diff --git a/mlir/include/mlir/Conversion/ArithCommon/AttrToLLVMConverter.h b/mlir/include/mlir/Conversion/ArithCommon/AttrToLLVMConverter.h
index feb74c86e349f..497ab3b7152da 100644
--- a/mlir/include/mlir/Conversion/ArithCommon/AttrToLLVMConverter.h
+++ b/mlir/include/mlir/Conversion/ArithCommon/AttrToLLVMConverter.h
@@ -18,6 +18,15 @@
namespace mlir {
namespace arith {
+
+template <typename SourceOp>
+static NamedAttrList getAttrsWithProperties(SourceOp srcOp) {
+ NamedAttrList attrs(srcOp->getDiscardableAttrDictionary());
+ if (auto properties =
+ dyn_cast_or_null<DictionaryAttr>(srcOp->getPropertiesAsAttribute()))
+ attrs.append(properties.getValue());
+ return attrs;
+}
/// Maps arithmetic fastmath enum values to LLVM enum values.
LLVM::FastmathFlags
convertArithFastMathFlagsToLLVM(arith::FastMathFlags arithFMF);
@@ -53,7 +62,7 @@ class AttrConvertFastMathToLLVM {
public:
AttrConvertFastMathToLLVM(SourceOp srcOp) {
// Copy the source attributes.
- convertedAttr = NamedAttrList{srcOp->getAttrs()};
+ convertedAttr = getAttrsWithProperties(srcOp);
// Get the name of the arith fastmath attribute.
StringRef arithFMFAttrName = SourceOp::getFastMathAttrName();
// Remove the source fastmath attribute.
@@ -82,7 +91,7 @@ class AttrConvertOverflowToLLVM {
using IntegerOverflowFlagsAttr = LLVM::IntegerOverflowFlagsAttr;
// Copy the source attributes.
- convertedAttr = NamedAttrList{srcOp->getAttrs()};
+ convertedAttr = getAttrsWithProperties(srcOp);
// Get the name of the arith overflow attribute.
StringRef arithAttrName = SourceOp::getIntegerOverflowAttrName();
// Remove the source overflow attribute from the set that will be present
@@ -118,7 +127,7 @@ template <typename SourceOp, typename TargetOp>
class AttrConvertNonNegToLLVM {
public:
AttrConvertNonNegToLLVM(SourceOp srcOp) {
- convertedAttr = NamedAttrList{srcOp->getAttrs()};
+ convertedAttr = getAttrsWithProperties(srcOp);
if (!convertedAttr.erase("nonNeg"))
return;
MLIRContext *ctx = srcOp.getOperation()->getContext();
@@ -144,7 +153,7 @@ class AttrConverterConstrainedFPToLLVM {
public:
AttrConverterConstrainedFPToLLVM(SourceOp srcOp) {
// Copy the source attributes.
- convertedAttr = NamedAttrList{srcOp->getAttrs()};
+ convertedAttr = getAttrsWithProperties(srcOp);
if constexpr (TargetOp::template hasTrait<
LLVM::RoundingModeOpInterface::Trait>()) {
diff --git a/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h b/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h
index 2f468458addd3..b50aeb1e274b3 100644
--- a/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h
+++ b/mlir/include/mlir/Conversion/LLVMCommon/Pattern.h
@@ -338,8 +338,9 @@ class OneToOneConvertToLLVMPattern : public ConvertOpToLLVMPattern<SourceOp> {
matchAndRewrite(SourceOp op, typename SourceOp::Adaptor adaptor,
ConversionPatternRewriter &rewriter) const override {
return LLVM::detail::oneToOneRewrite(
- op, TargetOp::getOperationName(), adaptor.getOperands(), op->getAttrs(),
- /*propertiesAttr=*/Attribute{}, *this->getTypeConverter(), rewriter);
+ op, TargetOp::getOperationName(), adaptor.getOperands(),
+ op->getDiscardableAttrDictionary().getValue(),
+ op->getPropertiesAsAttribute(), *this->getTypeConverter(), rewriter);
}
};
diff --git a/mlir/include/mlir/Conversion/LLVMCommon/VectorPattern.h b/mlir/include/mlir/Conversion/LLVMCommon/VectorPattern.h
index 65988a2466318..fdc787d84383e 100644
--- a/mlir/include/mlir/Conversion/LLVMCommon/VectorPattern.h
+++ b/mlir/include/mlir/Conversion/LLVMCommon/VectorPattern.h
@@ -70,13 +70,16 @@ LogicalResult vectorOneToOneRewrite(Operation *op, StringRef targetOp,
template <typename SourceOp, typename TargetOp>
class AttrConvertPassThrough {
public:
- AttrConvertPassThrough(SourceOp srcOp) : srcAttrs(srcOp->getAttrs()) {}
+ AttrConvertPassThrough(SourceOp srcOp)
+ : srcAttrs(srcOp->getDiscardableAttrDictionary().getValue()),
+ propertiesAttr(srcOp->getPropertiesAsAttribute()) {}
ArrayRef<NamedAttribute> getAttrs() const { return srcAttrs; }
- Attribute getPropAttr() const { return {}; }
+ Attribute getPropAttr() const { return propertiesAttr; }
private:
ArrayRef<NamedAttribute> srcAttrs;
+ Attribute propertiesAttr;
};
/// Basic lowering implementation to rewrite Ops with just one result to the
diff --git a/mlir/include/mlir/Dialect/ArmSME/IR/ArmSMEOps.td b/mlir/include/mlir/Dialect/ArmSME/IR/ArmSMEOps.td
index 264c3969a1152..22ed496a9f48f 100644
--- a/mlir/include/mlir/Dialect/ArmSME/IR/ArmSMEOps.td
+++ b/mlir/include/mlir/Dialect/ArmSME/IR/ArmSMEOps.td
@@ -63,7 +63,7 @@ def ArmSMETileOpInterface : OpInterface<"ArmSMETileOpInterface"> {
if (!tileId)
return;
::mlir::Operation* op = this->getOperation();
- op->setAttr("tile_id", tileId);
+ op->setDiscardableAttr("tile_id", tileId);
}]
>,
InterfaceMethod<
@@ -77,7 +77,7 @@ def ArmSMETileOpInterface : OpInterface<"ArmSMETileOpInterface"> {
/*methodBody=*/[{}],
/*defaultImpl=*/ [{
::mlir::Operation* op = this->getOperation();
- return op->getAttrOfType<mlir::IntegerAttr>("tile_id");
+ return op->getDiscardableAttrOfType<mlir::IntegerAttr>("tile_id");
}]
>,
InterfaceMethod<
diff --git a/mlir/include/mlir/Dialect/Async/IR/AsyncOps.td b/mlir/include/mlir/Dialect/Async/IR/AsyncOps.td
index 722370b8f3e29..0368bb55ca271 100644
--- a/mlir/include/mlir/Dialect/Async/IR/AsyncOps.td
+++ b/mlir/include/mlir/Dialect/Async/IR/AsyncOps.td
@@ -261,12 +261,12 @@ def Async_CallOp : Async_Op<"call",
/// Return the callee of this operation.
CallInterfaceCallable getCallableForCallee() {
- return (*this)->getAttrOfType<SymbolRefAttr>("callee");
+ return getCalleeAttr();
}
/// Set the callee for this operation.
void setCalleeFromCallable(CallInterfaceCallable callee) {
- (*this)->setAttr("callee", cast<SymbolRefAttr>(callee));
+ setCalleeAttr(cast<FlatSymbolRefAttr>(cast<SymbolRefAttr>(callee)));
}
}];
diff --git a/mlir/include/mlir/Dialect/EmitC/IR/EmitC.td b/mlir/include/mlir/Dialect/EmitC/IR/EmitC.td
index 49412d1dfb01c..0e7ea45d6d091 100644
--- a/mlir/include/mlir/Dialect/EmitC/IR/EmitC.td
+++ b/mlir/include/mlir/Dialect/EmitC/IR/EmitC.td
@@ -794,12 +794,12 @@ def EmitC_CallOp : EmitC_Op<"call",
/// Return the callee of this operation.
CallInterfaceCallable getCallableForCallee() {
- return (*this)->getAttrOfType<SymbolRefAttr>("callee");
+ return getCalleeAttr();
}
/// Set the callee for this operation.
void setCalleeFromCallable(CallInterfaceCallable callee) {
- (*this)->setAttr("callee", cast<SymbolRefAttr>(callee));
+ setCalleeAttr(cast<FlatSymbolRefAttr>(cast<SymbolRefAttr>(callee)));
}
bool hasSideEffects() {
diff --git a/mlir/include/mlir/Dialect/Func/IR/FuncOps.td b/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
index a31b860276099..f86dac3a772f1 100644
--- a/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
+++ b/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
@@ -110,12 +110,12 @@ def CallOp : Func_Op<"call",
/// Return the callee of this operation.
CallInterfaceCallable getCallableForCallee() {
- return (*this)->getAttrOfType<SymbolRefAttr>("callee");
+ return getCalleeAttr();
}
/// Set the callee for this operation.
void setCalleeFromCallable(CallInterfaceCallable callee) {
- (*this)->setAttr("callee", cast<SymbolRefAttr>(callee));
+ setCalleeAttr(cast<FlatSymbolRefAttr>(cast<SymbolRefAttr>(callee)));
}
}];
diff --git a/mlir/include/mlir/Dialect/GPU/IR/GPUOps.td b/mlir/include/mlir/Dialect/GPU/IR/GPUOps.td
index de145960692ad..7dbce7bed893a 100644
--- a/mlir/include/mlir/Dialect/GPU/IR/GPUOps.td
+++ b/mlir/include/mlir/Dialect/GPU/IR/GPUOps.td
@@ -419,7 +419,9 @@ def GPU_GPUFuncOp : GPU_Op<"func", [
attribution.
}];
- let arguments = (ins TypeAttrOf<FunctionType>:$function_type,
+ let arguments = (ins SymbolNameAttr:$sym_name,
+ OptionalAttr<StrAttr>:$sym_visibility,
+ TypeAttrOf<FunctionType>:$function_type,
OptionalAttr<DictArrayAttr>:$arg_attrs,
OptionalAttr<DictArrayAttr>:$res_attrs,
OptionalAttr<DictArrayAttr>:$workgroup_attrib_attrs,
@@ -447,7 +449,7 @@ def GPU_GPUFuncOp : GPU_Op<"func", [
bool isKernel() {
if (getKernel())
return true;
- return (*this)->getAttrOfType<UnitAttr>(
+ return (*this)->getDiscardableAttrOfType<UnitAttr>(
GPUDialect::getKernelFuncAttrName()) != nullptr;
}
diff --git a/mlir/include/mlir/Dialect/LLVMIR/BasicPtxBuilderInterface.td b/mlir/include/mlir/Dialect/LLVMIR/BasicPtxBuilderInterface.td
index 2834ae160595d..b631ec169f943 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/BasicPtxBuilderInterface.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/BasicPtxBuilderInterface.td
@@ -157,11 +157,18 @@ def BasicPtxBuilderOpInterface : OpInterface<"BasicPtxBuilderInterface"> {
for (auto val : op->getOperands())
asmValues.push_back({val, mlir::NVVM::PTXRegisterMod::Read});
- // Step 3. Add attributes
- for (auto attr : op->getAttrs()) {
- if (auto intAttr = dyn_cast<mlir::IntegerAttr>(attr.getValue())) {
- ::mlir::Value val = makeConstantI32(rewriter, intAttr.getInt());
- asmValues.push_back({val, mlir::NVVM::PTXRegisterMod::Read});
+ // Step 3. Add inherent attributes.
+ auto properties = llvm::dyn_cast_or_null<mlir::DictionaryAttr>(
+ op->getPropertiesAsAttribute());
+ if (properties) {
+ for (auto attr : properties) {
+ if (auto intAttr =
+ dyn_cast<mlir::IntegerAttr>(attr.getValue())) {
+ ::mlir::Value val =
+ makeConstantI32(rewriter, intAttr.getInt());
+ asmValues.push_back(
+ {val, mlir::NVVM::PTXRegisterMod::Read});
+ }
}
}
return false; // No manual mapping needed
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMInterfaces.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMInterfaces.td
index c59b38c416956..66a1fe0ce251a 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMInterfaces.td
+++ b/mlir/include/mlir/D...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/217233
More information about the Mlir-commits
mailing list