Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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 <jfonseca@vmware.com>
  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 */
  137.