Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4358 Serge 1
/**************************************************************************
2
 *
3
 * Copyright 2009 VMware, Inc.
4
 * All Rights Reserved.
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a
7
 * copy of this software and associated documentation files (the
8
 * "Software"), to deal in the Software without restriction, including
9
 * without limitation the rights to use, copy, modify, merge, publish,
10
 * distribute, sub license, and/or sell copies of the Software, and to
11
 * permit persons to whom the Software is furnished to do so, subject to
12
 * the following conditions:
13
 *
14
 * The above copyright notice and this permission notice (including the
15
 * next paragraph) shall be included in all copies or substantial portions
16
 * of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21
 * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
 *
26
 **************************************************************************/
27
 
28
/**
29
 * @file
30
 * Helper functions for calling intrinsics.
31
 *
32
 * @author Jose Fonseca 
33
 */
34
 
35
 
36
#ifndef LP_BLD_INTR_H
37
#define LP_BLD_INTR_H
38
 
39
 
40
#include "gallivm/lp_bld.h"
41
#include "gallivm/lp_bld_init.h"
42
 
43
 
44
/**
45
 * Max number of arguments in an intrinsic.
46
 */
47
#define LP_MAX_FUNC_ARGS 32
48
 
49
 
50
LLVMValueRef
51
lp_declare_intrinsic(LLVMModuleRef module,
52
                     const char *name,
53
                     LLVMTypeRef ret_type,
54
                     LLVMTypeRef *arg_types,
55
                     unsigned num_args);
56
 
57
LLVMValueRef
58
lp_build_intrinsic(LLVMBuilderRef builder,
59
                   const char *name,
60
                   LLVMTypeRef ret_type,
61
                   LLVMValueRef *args,
62
                   unsigned num_args);
63
 
64
 
65
LLVMValueRef
66
lp_build_intrinsic_unary(LLVMBuilderRef builder,
67
                         const char *name,
68
                         LLVMTypeRef ret_type,
69
                         LLVMValueRef a);
70
 
71
 
72
LLVMValueRef
73
lp_build_intrinsic_binary(LLVMBuilderRef builder,
74
                          const char *name,
75
                          LLVMTypeRef ret_type,
76
                          LLVMValueRef a,
77
                          LLVMValueRef b);
78
 
79
 
80
LLVMValueRef
81
lp_build_intrinsic_binary_anylength(struct gallivm_state *gallivm,
82
                                    const char *name,
83
                                    struct lp_type src_type,
84
                                    unsigned intr_size,
85
                                    LLVMValueRef a,
86
                                    LLVMValueRef b);
87
 
88
 
89
LLVMValueRef
90
lp_build_intrinsic_map(struct gallivm_state *gallivm,
91
                       const char *name,
92
                       LLVMTypeRef ret_type,
93
                       LLVMValueRef *args,
94
                       unsigned num_args);
95
 
96
 
97
LLVMValueRef
98
lp_build_intrinsic_map_unary(struct gallivm_state *gallivm,
99
                             const char *name,
100
                             LLVMTypeRef ret_type,
101
                             LLVMValueRef a);
102
 
103
 
104
LLVMValueRef
105
lp_build_intrinsic_map_binary(struct gallivm_state *gallivm,
106
                              const char *name,
107
                              LLVMTypeRef ret_type,
108
                              LLVMValueRef a,
109
                              LLVMValueRef b);
110
 
111
 
112
#endif /* !LP_BLD_INTR_H */