1 //===-- LowLevelIntrinsics.cpp --------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/ 10 // 11 //===----------------------------------------------------------------------===// 12 // 13 // Low level intrinsic functions. 14 // 15 // These include LLVM intrinsic calls and standard C library calls. 16 // Target-specific calls, such as OS functions, should be factored in other 17 // file(s). 18 // 19 //===----------------------------------------------------------------------===// 20 21 #include "flang/Optimizer/Builder/LowLevelIntrinsics.h" 22 #include "flang/Optimizer/Builder/FIRBuilder.h" 23 24 mlir::FuncOp fir::factory::getLlvmStackSave(fir::FirOpBuilder &builder) { 25 auto ptrTy = builder.getRefType(builder.getIntegerType(8)); 26 auto funcTy = 27 mlir::FunctionType::get(builder.getContext(), llvm::None, {ptrTy}); 28 return builder.addNamedFunction(builder.getUnknownLoc(), "llvm.stacksave", 29 funcTy); 30 } 31 32 mlir::FuncOp fir::factory::getLlvmStackRestore(fir::FirOpBuilder &builder) { 33 auto ptrTy = builder.getRefType(builder.getIntegerType(8)); 34 auto funcTy = 35 mlir::FunctionType::get(builder.getContext(), {ptrTy}, llvm::None); 36 return builder.addNamedFunction(builder.getUnknownLoc(), "llvm.stackrestore", 37 funcTy); 38 } 39