@@ -2051,6 +2051,7 @@ void ConvertCIRToLLVMPass::runOnOperation() {
20512051 CIRToLLVMComplexAddOpLowering,
20522052 CIRToLLVMComplexCreateOpLowering,
20532053 CIRToLLVMComplexImagOpLowering,
2054+ CIRToLLVMComplexImagPtrOpLowering,
20542055 CIRToLLVMComplexRealOpLowering,
20552056 CIRToLLVMComplexRealPtrOpLowering,
20562057 CIRToLLVMConstantOpLowering,
@@ -2527,6 +2528,23 @@ mlir::LogicalResult CIRToLLVMSetBitfieldOpLowering::matchAndRewrite(
25272528 return mlir::success ();
25282529}
25292530
2531+ mlir::LogicalResult CIRToLLVMComplexImagPtrOpLowering::matchAndRewrite (
2532+ cir::ComplexImagPtrOp op, OpAdaptor adaptor,
2533+ mlir::ConversionPatternRewriter &rewriter) const {
2534+ cir::PointerType operandTy = op.getOperand ().getType ();
2535+ mlir::Type resultLLVMTy = getTypeConverter ()->convertType (op.getType ());
2536+ mlir::Type elementLLVMTy =
2537+ getTypeConverter ()->convertType (operandTy.getPointee ());
2538+
2539+ mlir::LLVM::GEPArg gepIndices[2 ] = {{0 }, {1 }};
2540+ mlir::LLVM::GEPNoWrapFlags inboundsNuw =
2541+ mlir::LLVM::GEPNoWrapFlags::inbounds | mlir::LLVM::GEPNoWrapFlags::nuw;
2542+ rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
2543+ op, resultLLVMTy, elementLLVMTy, adaptor.getOperand (), gepIndices,
2544+ inboundsNuw);
2545+ return mlir::success ();
2546+ }
2547+
25302548mlir::LogicalResult CIRToLLVMComplexRealPtrOpLowering::matchAndRewrite (
25312549 cir::ComplexRealPtrOp op, OpAdaptor adaptor,
25322550 mlir::ConversionPatternRewriter &rewriter) const {
0 commit comments