summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_bld_arit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_bld_arit.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_bld_arit.c107
1 files changed, 1 insertions, 106 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_bld_arit.c b/src/gallium/drivers/llvmpipe/lp_bld_arit.c
index 36b266a45a..5dc1b7c968 100644
--- a/src/gallium/drivers/llvmpipe/lp_bld_arit.c
+++ b/src/gallium/drivers/llvmpipe/lp_bld_arit.c
@@ -45,117 +45,12 @@
*/
-#include "pipe/p_state.h"
+#include "util/u_debug.h"
#include "lp_bld_type.h"
#include "lp_bld_arit.h"
-LLVMValueRef
-lp_build_undef(union lp_type type)
-{
- LLVMTypeRef vec_type = lp_build_vec_type(type);
- return LLVMGetUndef(vec_type);
-}
-
-
-LLVMValueRef
-lp_build_zero(union lp_type type)
-{
- LLVMTypeRef vec_type = lp_build_vec_type(type);
- return LLVMConstNull(vec_type);
-}
-
-
-LLVMValueRef
-lp_build_one(union lp_type type)
-{
- LLVMTypeRef elem_type;
- LLVMValueRef elems[LP_MAX_VECTOR_LENGTH];
- unsigned i;
-
- assert(type.length <= LP_MAX_VECTOR_LENGTH);
-
- elem_type = lp_build_elem_type(type);
-
- if(type.floating)
- elems[0] = LLVMConstReal(elem_type, 1.0);
- else if(type.fixed)
- elems[0] = LLVMConstInt(elem_type, 1LL << (type.width/2), 0);
- else if(!type.norm)
- elems[0] = LLVMConstInt(elem_type, 1, 0);
- else {
- /* special case' -- 1.0 for normalized types is more easily attained if
- * we start with a vector consisting of all bits set */
- LLVMTypeRef vec_type = LLVMVectorType(elem_type, type.length);
- LLVMValueRef vec = LLVMConstAllOnes(vec_type);
-
- if(type.sign)
- vec = LLVMConstLShr(vec, LLVMConstInt(LLVMInt32Type(), 1, 0));
-
- return vec;
- }
-
- for(i = 1; i < type.length; ++i)
- elems[i] = elems[0];
-
- return LLVMConstVector(elems, type.length);
-}
-
-
-LLVMValueRef
-lp_build_const_aos(union lp_type type,
- double r, double g, double b, double a,
- const unsigned char *swizzle)
-{
- const unsigned char default_swizzle[4] = {0, 1, 2, 3};
- LLVMTypeRef elem_type;
- LLVMValueRef elems[LP_MAX_VECTOR_LENGTH];
- unsigned i;
-
- assert(type.length % 4 == 0);
- assert(type.length <= LP_MAX_VECTOR_LENGTH);
-
- elem_type = lp_build_elem_type(type);
-
- if(swizzle == NULL)
- swizzle = default_swizzle;
-
- if(type.floating) {
- elems[swizzle[0]] = LLVMConstReal(elem_type, r);
- elems[swizzle[1]] = LLVMConstReal(elem_type, g);
- elems[swizzle[2]] = LLVMConstReal(elem_type, b);
- elems[swizzle[3]] = LLVMConstReal(elem_type, a);
- }
- else {
- unsigned shift;
- long long llscale;
- double dscale;
-
- if(type.fixed)
- shift = type.width/2;
- else if(type.norm)
- shift = type.sign ? type.width - 1 : type.width;
- else
- shift = 0;
-
- llscale = (long long)1 << shift;
- dscale = (double)llscale;
- assert((long long)dscale == llscale);
-
- elems[swizzle[0]] = LLVMConstInt(elem_type, r*dscale + 0.5, 0);
- elems[swizzle[1]] = LLVMConstInt(elem_type, g*dscale + 0.5, 0);
- elems[swizzle[2]] = LLVMConstInt(elem_type, b*dscale + 0.5, 0);
- elems[swizzle[3]] = LLVMConstInt(elem_type, a*dscale + 0.5, 0);
- }
-
- for(i = 4; i < type.length; ++i)
- elems[i] = elems[i % 4];
-
- return LLVMConstVector(elems, type.length);
-}
-
-
static LLVMValueRef
lp_build_intrinsic_binary(LLVMBuilderRef builder,
const char *name,