71 lines
2.3 KiB
C++
71 lines
2.3 KiB
C++
/*
|
|
* Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
|
*
|
|
* openGauss is licensed under Mulan PSL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
|
*
|
|
* http://license.coscl.org.cn/MulanPSL2
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PSL v2 for more details.
|
|
* ---------------------------------------------------------------------------------------
|
|
*
|
|
* foreignscancodegen.h
|
|
*
|
|
*
|
|
*
|
|
* IDENTIFICATION
|
|
* src/include/codegen/foreignscancodegen.h
|
|
*
|
|
* ---------------------------------------------------------------------------------------
|
|
*/
|
|
#ifndef LLVM_FOREIGN_SCAN_H
|
|
#define LLVM_FOREIGN_SCAN_H
|
|
|
|
#include "codegen/gscodegen.h"
|
|
#include "optimizer/clauses.h"
|
|
#include "nodes/execnodes.h"
|
|
|
|
namespace dorado {
|
|
|
|
/*
|
|
* LlvmForeignScan class implements specific optimization by using LLVM.
|
|
* Just now, pushed down predicate is optimized by using LLVM.
|
|
*/
|
|
class ForeignScanCodeGen : public BaseObject {
|
|
public:
|
|
static bool ScanCodeGen(Expr* expr, PlanState* parent, void** jittedFunc);
|
|
|
|
/*
|
|
* Brief : Check whether operator is legal or not.
|
|
* Description : Just now, the follwing operator is legal.
|
|
* "=", "!=", ">", ">=", "<", "<=".
|
|
* These operator must act on the following data types.
|
|
* int2, int4, int8, float4, float8.
|
|
* Input : expr, the node to be checked.
|
|
* Output : None.
|
|
* Return Value : None.
|
|
* Notes : None.
|
|
*/
|
|
static bool IsJittableExpr(Expr* expr);
|
|
|
|
/*
|
|
* Brief : Build LLVM value by using node.
|
|
* Description :
|
|
* Input : node, the node to be used to create IR.
|
|
* llvm_args, the argument of IR functionto to be created.
|
|
* builder, a LlvmBuilder object.
|
|
* fname, function name.
|
|
* Output : None.
|
|
* Return Value : Retrun llvm::Value.
|
|
* Notes : None.
|
|
*/
|
|
static llvm::Value* buildConstValue(
|
|
Expr* node, llvm::Value* llvm_args[], GsCodeGen::LlvmBuilder& builder, StringInfo fname);
|
|
};
|
|
} // namespace dorado
|
|
#endif
|