mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 01:07:04 +08:00
[mlir][Vector] Add lowering to LLVM for vector.bitcast
Add the conversion pattern for vector.bitcast to lower it to the LLVM Dialect. Reviewed By: ThomasRaoux, aartbik Differential Revision: https://reviews.llvm.org/D95579
This commit is contained in:
@@ -280,6 +280,26 @@ static TransferWriteOpAdaptor getTransferOpAdapter(TransferWriteOp xferOp,
|
||||
|
||||
namespace {
|
||||
|
||||
/// Conversion pattern for a vector.bitcast.
|
||||
class VectorBitCastOpConversion
|
||||
: public ConvertOpToLLVMPattern<vector::BitCastOp> {
|
||||
public:
|
||||
using ConvertOpToLLVMPattern<vector::BitCastOp>::ConvertOpToLLVMPattern;
|
||||
|
||||
LogicalResult
|
||||
matchAndRewrite(vector::BitCastOp bitCastOp, ArrayRef<Value> operands,
|
||||
ConversionPatternRewriter &rewriter) const override {
|
||||
// Only 1-D vectors can be lowered to LLVM.
|
||||
VectorType resultTy = bitCastOp.getType();
|
||||
if (resultTy.getRank() != 1)
|
||||
return failure();
|
||||
Type newResultTy = typeConverter->convertType(resultTy);
|
||||
rewriter.replaceOpWithNewOp<LLVM::BitcastOp>(bitCastOp, newResultTy,
|
||||
operands[0]);
|
||||
return success();
|
||||
}
|
||||
};
|
||||
|
||||
/// Conversion pattern for a vector.matrix_multiply.
|
||||
/// This is lowered directly to the proper llvm.intr.matrix.multiply.
|
||||
class VectorMatmulOpConversion
|
||||
@@ -1492,7 +1512,8 @@ void mlir::populateVectorToLLVMConversionPatterns(
|
||||
VectorTransferConversion<TransferWriteOp>>(
|
||||
converter, enableIndexOptimizations);
|
||||
patterns
|
||||
.insert<VectorShuffleOpConversion,
|
||||
.insert<VectorBitCastOpConversion,
|
||||
VectorShuffleOpConversion,
|
||||
VectorExtractElementOpConversion,
|
||||
VectorExtractOpConversion,
|
||||
VectorFMAOp1DConversion,
|
||||
|
||||
Reference in New Issue
Block a user