X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fauxiliary%2Fgallivm%2Flp_bld_const.h;h=a4c3bf0977ab7bca4107927401ab1474690a39fa;hb=45b8f620a545bcdb8a4942bafd505c9418f6d9f2;hp=7ee8fff1407db33472416a78f203558a046bd39c;hpb=b0636f78aa63aed2a68e86e7770c2a91c80bbb80;p=mesa.git diff --git a/src/gallium/auxiliary/gallivm/lp_bld_const.h b/src/gallium/auxiliary/gallivm/lp_bld_const.h index 7ee8fff1407..a4c3bf0977a 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_const.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_const.h @@ -39,6 +39,7 @@ #include "pipe/p_compiler.h" #include "gallivm/lp_bld.h" +#include "gallivm/lp_bld_init.h" @@ -73,46 +74,95 @@ lp_const_eps(struct lp_type type); LLVMValueRef -lp_build_undef(struct lp_type type); +lp_build_undef(struct gallivm_state *gallivm, struct lp_type type); LLVMValueRef -lp_build_zero(struct lp_type type); +lp_build_zero(struct gallivm_state *gallivm, struct lp_type type); LLVMValueRef -lp_build_one(struct lp_type type); +lp_build_one(struct gallivm_state *gallivm, struct lp_type type); LLVMValueRef -lp_build_const_elem(struct lp_type type, +lp_build_const_elem(struct gallivm_state *gallivm, struct lp_type type, double val); LLVMValueRef -lp_build_const_vec(struct lp_type type, double val); +lp_build_const_vec(struct gallivm_state *gallivm, struct lp_type type, + double val); LLVMValueRef -lp_build_const_int_vec(struct lp_type type, long long val); +lp_build_const_int_vec(struct gallivm_state *gallivm, + struct lp_type type, long long val); LLVMValueRef -lp_build_const_aos(struct lp_type type, +lp_build_const_aos(struct gallivm_state *gallivm, struct lp_type type, double r, double g, double b, double a, const unsigned char *swizzle); LLVMValueRef -lp_build_const_mask_aos(struct lp_type type, - const boolean cond[4]); +lp_build_const_mask_aos(struct gallivm_state *gallivm, + struct lp_type type, + unsigned mask, + unsigned channels); -static INLINE LLVMValueRef -lp_build_const_int32(int i) +LLVMValueRef +lp_build_const_mask_aos_swizzled(struct gallivm_state *gallivm, + struct lp_type type, + unsigned mask, + unsigned channels, + const unsigned char *swizzle); + + +static inline LLVMValueRef +lp_build_const_int32(struct gallivm_state *gallivm, int i) +{ + return LLVMConstInt(LLVMInt32TypeInContext(gallivm->context), i, 0); +} + + +static inline LLVMValueRef +lp_build_const_float(struct gallivm_state *gallivm, float x) +{ + return LLVMConstReal(LLVMFloatTypeInContext(gallivm->context), x); +} + + +/** Return constant-valued pointer to int */ +static inline LLVMValueRef +lp_build_const_int_pointer(struct gallivm_state *gallivm, const void *ptr) { - return LLVMConstInt(LLVMInt32Type(), i, 0); + LLVMTypeRef int_type; + LLVMValueRef v; + + /* int type large enough to hold a pointer */ + int_type = LLVMIntTypeInContext(gallivm->context, 8 * sizeof(void *)); + v = LLVMConstInt(int_type, (uintptr_t) ptr, 0); + v = LLVMBuildIntToPtr(gallivm->builder, v, + LLVMPointerType(int_type, 0), + "cast int to ptr"); + return v; } +LLVMValueRef +lp_build_const_string(struct gallivm_state *gallivm, + const char *str); + + +LLVMValueRef +lp_build_const_func_pointer(struct gallivm_state *gallivm, + const void *ptr, + LLVMTypeRef ret_type, + LLVMTypeRef *arg_types, + unsigned num_args, + const char *name); + #endif /* !LP_BLD_CONST_H */