@@ -2067,6 +2067,7 @@ void ConvertCIRToLLVMPass::runOnOperation() {
20672067 CIRToLLVMComplexAddOpLowering,
20682068 CIRToLLVMComplexCreateOpLowering,
20692069 CIRToLLVMComplexImagOpLowering,
2070+ CIRToLLVMComplexImagPtrOpLowering,
20702071 CIRToLLVMComplexRealOpLowering,
20712072 CIRToLLVMComplexRealPtrOpLowering,
20722073 CIRToLLVMComplexSubOpLowering,
@@ -2593,6 +2594,23 @@ mlir::LogicalResult CIRToLLVMSetBitfieldOpLowering::matchAndRewrite(
25932594 return mlir::success ();
25942595}
25952596
2597+ mlir::LogicalResult CIRToLLVMComplexImagPtrOpLowering::matchAndRewrite (
2598+ cir::ComplexImagPtrOp op, OpAdaptor adaptor,
2599+ mlir::ConversionPatternRewriter &rewriter) const {
2600+ cir::PointerType operandTy = op.getOperand ().getType ();
2601+ mlir::Type resultLLVMTy = getTypeConverter ()->convertType (op.getType ());
2602+ mlir::Type elementLLVMTy =
2603+ getTypeConverter ()->convertType (operandTy.getPointee ());
2604+
2605+ mlir::LLVM::GEPArg gepIndices[2 ] = {{0 }, {1 }};
2606+ mlir::LLVM::GEPNoWrapFlags inboundsNuw =
2607+ mlir::LLVM::GEPNoWrapFlags::inbounds | mlir::LLVM::GEPNoWrapFlags::nuw;
2608+ rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
2609+ op, resultLLVMTy, elementLLVMTy, adaptor.getOperand (), gepIndices,
2610+ inboundsNuw);
2611+ return mlir::success ();
2612+ }
2613+
25962614mlir::LogicalResult CIRToLLVMComplexRealPtrOpLowering::matchAndRewrite (
25972615 cir::ComplexRealPtrOp op, OpAdaptor adaptor,
25982616 mlir::ConversionPatternRewriter &rewriter) const {
0 commit comments