lp_bld_pack.h revision 0d71ba46e613230c84165106c1fcc9027dec4cd3
1f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/**************************************************************************
2f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch *
3f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * Copyright 2009 VMware, Inc.
4f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * All Rights Reserved.
5f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch *
6f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * Permission is hereby granted, free of charge, to any person obtaining a
7f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * copy of this software and associated documentation files (the
8f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * "Software"), to deal in the Software without restriction, including
9f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * without limitation the rights to use, copy, modify, merge, publish,
10f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * distribute, sub license, and/or sell copies of the Software, and to
11f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * permit persons to whom the Software is furnished to do so, subject to
12f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * the following conditions:
13f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch *
14f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * The above copyright notice and this permission notice (including the
15f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * next paragraph) shall be included in all copies or substantial portions
16f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * of the Software.
17f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch *
18f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
22f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch *
26f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch **************************************************************************/
27f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
28f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/**
29f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * @file
30f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * Helper functions for packing/unpacking conversions.
31f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch *
32f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * @author Jose Fonseca <jfonseca@vmware.com>
33f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch */
34f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
35f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
36f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef LP_BLD_PACK_H
37f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define LP_BLD_PACK_H
38f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
39f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
40f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "gallivm/lp_bld.h"
41f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
42f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
43f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochstruct lp_type;
44f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
45f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
46f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen MurdochLLVMValueRef
47f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochlp_build_interleave2(LLVMBuilderRef builder,
48f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                     struct lp_type type,
49f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                     LLVMValueRef a,
50f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                     LLVMValueRef b,
51f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                     unsigned lo_hi);
52f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
53f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
54f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid
55f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochlp_build_unpack2(LLVMBuilderRef builder,
56f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                 struct lp_type src_type,
57f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                 struct lp_type dst_type,
58f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                 LLVMValueRef src,
59f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                 LLVMValueRef *dst_lo,
60f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                 LLVMValueRef *dst_hi);
61f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
62f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
63f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid
64f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochlp_build_unpack(LLVMBuilderRef builder,
65f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                struct lp_type src_type,
66f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                struct lp_type dst_type,
67f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                LLVMValueRef src,
68f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                LLVMValueRef *dst, unsigned num_dsts);
69f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
70f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
71f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen MurdochLLVMValueRef
72f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochlp_build_packs2(LLVMBuilderRef builder,
73f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                struct lp_type src_type,
74f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                struct lp_type dst_type,
75f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                LLVMValueRef lo,
76f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch                LLVMValueRef hi);
77f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
78f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
79f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen MurdochLLVMValueRef
80f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochlp_build_pack2(LLVMBuilderRef builder,
81f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch               struct lp_type src_type,
82f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch               struct lp_type dst_type,
83f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch               LLVMValueRef lo,
84f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch               LLVMValueRef hi);
85f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
86f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
87f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen MurdochLLVMValueRef
88f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochlp_build_pack(LLVMBuilderRef builder,
89f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch              struct lp_type src_type,
90f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch              struct lp_type dst_type,
91f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch              boolean clamped,
92f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch              const LLVMValueRef *src, unsigned num_srcs);
93f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
94f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
95f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif /* !LP_BLD_PACK_H */
96f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch