lp_bld_swizzle.h revision 1dd7bb17c7331f9ecd0bc830b61ada235a56fe6d
11dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca/************************************************************************** 21dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 31dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * Copyright 2009 VMware, Inc. 41dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * All Rights Reserved. 51dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 61dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * Permission is hereby granted, free of charge, to any person obtaining a 71dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * copy of this software and associated documentation files (the 81dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * "Software"), to deal in the Software without restriction, including 91dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * without limitation the rights to use, copy, modify, merge, publish, 101dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * distribute, sub license, and/or sell copies of the Software, and to 111dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * permit persons to whom the Software is furnished to do so, subject to 121dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * the following conditions: 131dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 141dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * The above copyright notice and this permission notice (including the 151dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * next paragraph) shall be included in all copies or substantial portions 161dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * of the Software. 171dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 181dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 191dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 201dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 211dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR 221dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 231dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 241dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 251dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 261dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca **************************************************************************/ 271dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 281dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca/** 291dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * @file 301dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * Helper functions for constant building. 311dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 321dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * @author Jose Fonseca <jfonseca@vmware.com> 331dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca */ 341dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 351dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 361dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca#ifndef LP_BLD_SWIZZLE_H 371dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca#define LP_BLD_SWIZZLE_H 381dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 391dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 401dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca#include <llvm-c/Core.h> 411dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 421dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 431dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonsecaunion lp_type type; 441dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonsecastruct lp_build_context; 451dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 461dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 471dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca/** 481dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * Broadcast one channel of a vector composed of arrays of XYZW structures into 491dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * all four channel. 501dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca */ 511dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé FonsecaLLVMValueRef 521dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonsecalp_build_broadcast_aos(struct lp_build_context *bld, 531dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca LLVMValueRef a, 541dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca unsigned channel); 551dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 561dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 571dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé FonsecaLLVMValueRef 581dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonsecalp_build_select_aos(struct lp_build_context *bld, 591dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca LLVMValueRef a, 601dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca LLVMValueRef b, 611dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca boolean cond[4]); 621dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 631dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 641dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca/** 651dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * Swizzle a vector consisting of an array of XYZW structs. 661dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 671dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * @param swizzle is the in [0,4[ range. 681dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca */ 691dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé FonsecaLLVMValueRef 701dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonsecalp_build_swizzle1_aos(struct lp_build_context *bld, 711dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca LLVMValueRef a, 721dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca unsigned char swizzle[4]); 731dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 741dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 751dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca/** 761dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * Swizzle two vector consisting of an array of XYZW structs. 771dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * 781dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca * @param swizzle is the in [0,8[ range. Values in [4,8[ range refer to b. 791dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca */ 801dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé FonsecaLLVMValueRef 811dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonsecalp_build_swizzle2_aos(struct lp_build_context *bld, 821dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca LLVMValueRef a, 831dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca LLVMValueRef b, 841dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca unsigned char swizzle[4]); 851dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 861dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca 871dd7bb17c7331f9ecd0bc830b61ada235a56fe6dJosé Fonseca#endif /* !LP_BLD_SWIZZLE_H */ 88