@@ -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