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