Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc99c213

Browse files
authored
[mlir][Flang][NFC] Replace use ofvector.insertelement/extractelement (#143272)
This PR is part of the last step to remove `vector.extractelement` and`vector.insertelement` ops (RFC:https://discourse.llvm.org/t/rfc-psa-remove-vector-extractelement-and-vector-insertelement-ops-in-favor-of-vector-extract-and-vector-insert-ops).It replaces `vector.insertelement` and `vector.extractelement` with`vector.insert` and `vector.extract` in Flang. It looks like no littests are impacted?
1 parent921c6db commitc99c213

File tree

4 files changed

+14
-4
lines changed

4 files changed

+14
-4
lines changed

‎flang/include/flang/Optimizer/Support/InitFIR.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include"mlir/Dialect/Affine/Passes.h"
2424
#include"mlir/Dialect/Complex/IR/Complex.h"
2525
#include"mlir/Dialect/Func/Extensions/InlinerExtension.h"
26+
#include"mlir/Dialect/Index/IR/IndexDialect.h"
2627
#include"mlir/Dialect/LLVMIR/NVVMDialect.h"
2728
#include"mlir/Dialect/OpenACC/Transforms/Passes.h"
2829
#include"mlir/Dialect/SCF/Transforms/Passes.h"
@@ -41,7 +42,8 @@ namespace fir::support {
4142
mlir::cf::ControlFlowDialect, mlir::func::FuncDialect, \
4243
mlir::vector::VectorDialect, mlir::math::MathDialect, \
4344
mlir::complex::ComplexDialect, mlir::DLTIDialect, cuf::CUFDialect, \
44-
mlir::NVVM::NVVMDialect, mlir::gpu::GPUDialect
45+
mlir::NVVM::NVVMDialect, mlir::gpu::GPUDialect, \
46+
mlir::index::IndexDialect
4547

4648
#defineFLANG_CODEGEN_DIALECT_LIST FIRCodeGenDialect, mlir::LLVM::LLVMDialect
4749

‎flang/lib/Optimizer/Builder/PPCIntrinsicCall.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include"flang/Evaluate/common.h"
1818
#include"flang/Optimizer/Builder/FIRBuilder.h"
1919
#include"flang/Optimizer/Builder/MutableBox.h"
20+
#include"mlir/Dialect/Index/IR/IndexOps.h"
2021
#include"mlir/Dialect/Vector/IR/VectorOps.h"
2122

2223
namespacefir {
@@ -1685,7 +1686,9 @@ PPCIntrinsicLibrary::genVecExtract(mlir::Type resultType,
16851686
if (!isNativeVecElemOrderOnLE())
16861687
uremOp =convertVectorElementOrder(builder, loc, vecTyInfo, uremOp);
16871688

1688-
return builder.create<mlir::vector::ExtractElementOp>(loc, varg0, uremOp);
1689+
mlir::Value index = builder.createOrFold<mlir::index::CastUOp>(
1690+
loc, builder.getIndexType(), uremOp);
1691+
return builder.create<mlir::vector::ExtractOp>(loc, varg0, index);
16891692
}
16901693

16911694
// VEC_INSERT
@@ -1706,8 +1709,10 @@ PPCIntrinsicLibrary::genVecInsert(mlir::Type resultType,
17061709
if (!isNativeVecElemOrderOnLE())
17071710
uremOp =convertVectorElementOrder(builder, loc, vecTyInfo, uremOp);
17081711

1709-
auto res{builder.create<mlir::vector::InsertElementOp>(loc, argBases[0],
1710-
varg1, uremOp)};
1712+
mlir::Value index = builder.createOrFold<mlir::index::CastUOp>(
1713+
loc, builder.getIndexType(), uremOp);
1714+
mlir::Value res =
1715+
builder.create<mlir::vector::InsertOp>(loc, argBases[0], varg1, index);
17111716
return builder.create<fir::ConvertOp>(loc, vecTyInfo.toFirVectorType(), res);
17121717
}
17131718

‎flang/lib/Optimizer/CodeGen/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ add_flang_library(FIRCodeGen
3737
MLIRComplexToROCDLLibraryCalls
3838
MLIRComplexToStandard
3939
MLIRGPUDialect
40+
MLIRIndexToLLVM
4041
MLIRMathToFuncs
4142
MLIRMathToLLVM
4243
MLIRMathToLibm

‎flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
#include"mlir/Conversion/ComplexToStandard/ComplexToStandard.h"
3838
#include"mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
3939
#include"mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
40+
#include"mlir/Conversion/IndexToLLVM/IndexToLLVM.h"
4041
#include"mlir/Conversion/LLVMCommon/Pattern.h"
4142
#include"mlir/Conversion/MathToFuncs/MathToFuncs.h"
4243
#include"mlir/Conversion/MathToLLVM/MathToLLVM.h"
@@ -4224,6 +4225,7 @@ class FIRToLLVMLowering
42244225
if (!isAMDGCN)
42254226
mlir::populateMathToLibmConversionPatterns(pattern);
42264227
mlir::populateComplexToLLVMConversionPatterns(typeConverter, pattern);
4228+
mlir::index::populateIndexToLLVMConversionPatterns(typeConverter, pattern);
42274229
mlir::populateVectorToLLVMConversionPatterns(typeConverter, pattern);
42284230

42294231
// Flang specific overloads for OpenMP operations, to allow for special

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp