Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
mlir/lib/Conversion/GPUToROCDL/LowerGpuOpsToROCDLOps.cpp
Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | void runOnOperation() override { | ||||
populateVectorToLLVMConversionPatterns(converter, llvmPatterns); | populateVectorToLLVMConversionPatterns(converter, llvmPatterns); | ||||
populateVectorToROCDLConversionPatterns(converter, llvmPatterns); | populateVectorToROCDLConversionPatterns(converter, llvmPatterns); | ||||
populateStdToLLVMConversionPatterns(converter, llvmPatterns); | populateStdToLLVMConversionPatterns(converter, llvmPatterns); | ||||
populateGpuToROCDLConversionPatterns(converter, llvmPatterns); | populateGpuToROCDLConversionPatterns(converter, llvmPatterns); | ||||
LLVMConversionTarget target(getContext()); | LLVMConversionTarget target(getContext()); | ||||
target.addIllegalDialect<gpu::GPUDialect>(); | target.addIllegalDialect<gpu::GPUDialect>(); | ||||
target.addIllegalOp<LLVM::CosOp, LLVM::ExpOp, LLVM::FAbsOp, LLVM::FCeilOp, | target.addIllegalOp<LLVM::CosOp, LLVM::ExpOp, LLVM::FAbsOp, LLVM::FCeilOp, | ||||
LLVM::FFloorOp, LLVM::LogOp, LLVM::Log10Op, | LLVM::FFloorOp, LLVM::LogOp, LLVM::Log10Op, | ||||
LLVM::Log2Op>(); | LLVM::Log2Op, LLVM::SinOp, LLVM::TanhOp>(); | ||||
Lint: Pre-merge checks: clang-tidy: error: no member named 'TanhOp' in namespace 'mlir::LLVM' [clang-diagnostic-error]… | |||||
Not Done ReplyInline ActionsJust wondering, why is there no TanOp here? Could you add this, as well? herhut: Just wondering, why is there no `TanOp` here? Could you add this, as well? | |||||
Yes, looks like this was an oversight. I have added it now as well. akuegel: Yes, looks like this was an oversight. I have added it now as well. | |||||
target.addIllegalOp<FuncOp>(); | target.addIllegalOp<FuncOp>(); | ||||
target.addLegalDialect<ROCDL::ROCDLDialect>(); | target.addLegalDialect<ROCDL::ROCDLDialect>(); | ||||
// TODO: Remove once we support replacing non-root ops. | // TODO: Remove once we support replacing non-root ops. | ||||
target.addLegalOp<gpu::YieldOp, gpu::GPUModuleOp, gpu::ModuleEndOp>(); | target.addLegalOp<gpu::YieldOp, gpu::GPUModuleOp, gpu::ModuleEndOp>(); | ||||
if (failed(applyPartialConversion(m, target, std::move(llvmPatterns)))) | if (failed(applyPartialConversion(m, target, std::move(llvmPatterns)))) | ||||
signalPassFailure(); | signalPassFailure(); | ||||
} | } | ||||
}; | }; | ||||
Show All 24 Lines | void mlir::populateGpuToROCDLConversionPatterns( | ||||
patterns.insert<OpToFuncCallLowering<FloorFOp>>(converter, "__ocml_floor_f32", | patterns.insert<OpToFuncCallLowering<FloorFOp>>(converter, "__ocml_floor_f32", | ||||
"__ocml_floor_f64"); | "__ocml_floor_f64"); | ||||
patterns.insert<OpToFuncCallLowering<LogOp>>(converter, "__ocml_log_f32", | patterns.insert<OpToFuncCallLowering<LogOp>>(converter, "__ocml_log_f32", | ||||
"__ocml_log_f64"); | "__ocml_log_f64"); | ||||
patterns.insert<OpToFuncCallLowering<Log10Op>>(converter, "__ocml_log10_f32", | patterns.insert<OpToFuncCallLowering<Log10Op>>(converter, "__ocml_log10_f32", | ||||
"__ocml_log10_f64"); | "__ocml_log10_f64"); | ||||
patterns.insert<OpToFuncCallLowering<Log2Op>>(converter, "__ocml_log2_f32", | patterns.insert<OpToFuncCallLowering<Log2Op>>(converter, "__ocml_log2_f32", | ||||
"__ocml_log2_f64"); | "__ocml_log2_f64"); | ||||
patterns.insert<OpToFuncCallLowering<SinOp>>(converter, "__ocml_sin_f32", | |||||
"__ocml_sin_f64"); | |||||
patterns.insert<OpToFuncCallLowering<TanhOp>>(converter, "__ocml_tanh_f32", | patterns.insert<OpToFuncCallLowering<TanhOp>>(converter, "__ocml_tanh_f32", | ||||
"__ocml_tanh_f64"); | "__ocml_tanh_f64"); | ||||
} | } | ||||
Can you keep these sorted? herhut: Can you keep these sorted? | |||||
std::unique_ptr<OperationPass<gpu::GPUModuleOp>> | std::unique_ptr<OperationPass<gpu::GPUModuleOp>> | ||||
mlir::createLowerGpuOpsToROCDLOpsPass(unsigned indexBitwidth) { | mlir::createLowerGpuOpsToROCDLOpsPass(unsigned indexBitwidth) { | ||||
return std::make_unique<LowerGpuOpsToROCDLOpsPass>(indexBitwidth); | return std::make_unique<LowerGpuOpsToROCDLOpsPass>(indexBitwidth); | ||||
} | } |
clang-tidy: error: no member named 'TanhOp' in namespace 'mlir::LLVM' [clang-diagnostic-error]
not useful
clang-tidy: error: expected unqualified-id [clang-diagnostic-error]
not useful