Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5564 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 packing/unpacking conversions.
31
 *
32
 * @author Jose Fonseca 
33
 */
34
 
35
 
36
#ifndef LP_BLD_PACK_H
37
#define LP_BLD_PACK_H
38
 
39
 
40
#include "pipe/p_compiler.h"
41
 
42
#include "gallivm/lp_bld.h"
43
 
44
 
45
struct lp_type;
46
 
47
LLVMValueRef
48
lp_build_interleave2_half(struct gallivm_state *gallivm,
49
                     struct lp_type type,
50
                     LLVMValueRef a,
51
                     LLVMValueRef b,
52
                     unsigned lo_hi);
53
 
54
LLVMValueRef
55
lp_build_interleave2(struct gallivm_state *gallivm,
56
                     struct lp_type type,
57
                     LLVMValueRef a,
58
                     LLVMValueRef b,
59
                     unsigned lo_hi);
60
 
61
 
62
void
63
lp_build_unpack2(struct gallivm_state *gallivm,
64
                 struct lp_type src_type,
65
                 struct lp_type dst_type,
66
                 LLVMValueRef src,
67
                 LLVMValueRef *dst_lo,
68
                 LLVMValueRef *dst_hi);
69
 
70
 
71
void
72
lp_build_unpack(struct gallivm_state *gallivm,
73
                struct lp_type src_type,
74
                struct lp_type dst_type,
75
                LLVMValueRef src,
76
                LLVMValueRef *dst, unsigned num_dsts);
77
 
78
LLVMValueRef
79
lp_build_extract_range(struct gallivm_state *gallivm,
80
                       LLVMValueRef src,
81
                       unsigned start,
82
                       unsigned size);
83
 
84
LLVMValueRef
85
lp_build_concat(struct gallivm_state *gallivm,
86
                LLVMValueRef src[],
87
                struct lp_type src_type,
88
                unsigned num_vectors);
89
 
90
int
91
lp_build_concat_n(struct gallivm_state *gallivm,
92
                  struct lp_type src_type,
93
                  LLVMValueRef *src,
94
                  unsigned num_srcs,
95
                  LLVMValueRef *dst,
96
                  unsigned num_dsts);
97
 
98
 
99
LLVMValueRef
100
lp_build_packs2(struct gallivm_state *gallivm,
101
                struct lp_type src_type,
102
                struct lp_type dst_type,
103
                LLVMValueRef lo,
104
                LLVMValueRef hi);
105
 
106
 
107
LLVMValueRef
108
lp_build_pack2(struct gallivm_state *gallivm,
109
               struct lp_type src_type,
110
               struct lp_type dst_type,
111
               LLVMValueRef lo,
112
               LLVMValueRef hi);
113
 
114
 
115
LLVMValueRef
116
lp_build_pack(struct gallivm_state *gallivm,
117
              struct lp_type src_type,
118
              struct lp_type dst_type,
119
              boolean clamped,
120
              const LLVMValueRef *src, unsigned num_srcs);
121
 
122
 
123
void
124
lp_build_resize(struct gallivm_state *gallivm,
125
                struct lp_type src_type,
126
                struct lp_type dst_type,
127
                const LLVMValueRef *src, unsigned num_srcs,
128
                LLVMValueRef *dst, unsigned num_dsts);
129
 
130
 
131
LLVMValueRef
132
lp_build_pad_vector(struct gallivm_state *gallivm,
133
                    LLVMValueRef src,
134
                    unsigned dst_length);
135
 
136
#endif /* !LP_BLD_PACK_H */