llvmpipe: Make lp_type a regular union.
Union not worth the hassle of violating C99 or adding a name to the structure.
This commit is contained in:
@@ -45,7 +45,7 @@
|
||||
void
|
||||
lp_build_alpha_test(LLVMBuilderRef builder,
|
||||
const struct pipe_alpha_state *state,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
struct lp_build_mask_context *mask,
|
||||
LLVMValueRef alpha,
|
||||
LLVMValueRef ref)
|
||||
|
||||
@@ -38,14 +38,14 @@
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
struct pipe_alpha_state;
|
||||
union lp_type;
|
||||
struct lp_type;
|
||||
struct lp_build_mask_context;
|
||||
|
||||
|
||||
void
|
||||
lp_build_alpha_test(LLVMBuilderRef builder,
|
||||
const struct pipe_alpha_state *state,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
struct lp_build_mask_context *mask,
|
||||
LLVMValueRef alpha,
|
||||
LLVMValueRef ref);
|
||||
|
||||
@@ -65,7 +65,7 @@ lp_build_min_simple(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
const char *intrinsic = NULL;
|
||||
LLVMValueRef cond;
|
||||
|
||||
@@ -113,7 +113,7 @@ lp_build_max_simple(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
const char *intrinsic = NULL;
|
||||
LLVMValueRef cond;
|
||||
|
||||
@@ -159,7 +159,7 @@ LLVMValueRef
|
||||
lp_build_comp(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
if(a == bld->one)
|
||||
return bld->zero;
|
||||
@@ -188,7 +188,7 @@ lp_build_add(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMValueRef res;
|
||||
|
||||
if(a == bld->zero)
|
||||
@@ -241,7 +241,7 @@ lp_build_sub(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMValueRef res;
|
||||
|
||||
if(b == bld->zero)
|
||||
@@ -405,7 +405,7 @@ lp_build_mul(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
if(a == bld->zero)
|
||||
return bld->zero;
|
||||
@@ -477,7 +477,7 @@ lp_build_div(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
if(a == bld->zero)
|
||||
return bld->zero;
|
||||
@@ -590,7 +590,7 @@ LLVMValueRef
|
||||
lp_build_abs(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
|
||||
if(!type.sign)
|
||||
@@ -627,7 +627,7 @@ LLVMValueRef
|
||||
lp_build_sgn(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
LLVMValueRef cond;
|
||||
LLVMValueRef res;
|
||||
@@ -678,7 +678,7 @@ lp_build_round_sse41(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
enum lp_build_round_sse41_mode mode)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
const char *intrinsic;
|
||||
|
||||
@@ -706,7 +706,7 @@ LLVMValueRef
|
||||
lp_build_round(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
assert(type.floating);
|
||||
|
||||
@@ -724,7 +724,7 @@ LLVMValueRef
|
||||
lp_build_floor(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
assert(type.floating);
|
||||
|
||||
@@ -742,7 +742,7 @@ LLVMValueRef
|
||||
lp_build_ceil(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
assert(type.floating);
|
||||
|
||||
@@ -760,7 +760,7 @@ LLVMValueRef
|
||||
lp_build_trunc(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
assert(type.floating);
|
||||
|
||||
@@ -782,7 +782,7 @@ LLVMValueRef
|
||||
lp_build_int(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
|
||||
|
||||
assert(type.floating);
|
||||
@@ -805,7 +805,7 @@ LLVMValueRef
|
||||
lp_build_sqrt(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
char intrinsic[32];
|
||||
|
||||
@@ -823,7 +823,7 @@ LLVMValueRef
|
||||
lp_build_rcp(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
if(a == bld->zero)
|
||||
return bld->undef;
|
||||
@@ -854,7 +854,7 @@ LLVMValueRef
|
||||
lp_build_rsqrt(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
|
||||
assert(type.floating);
|
||||
|
||||
@@ -875,7 +875,7 @@ LLVMValueRef
|
||||
lp_build_cos(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
char intrinsic[32];
|
||||
|
||||
@@ -895,7 +895,7 @@ LLVMValueRef
|
||||
lp_build_sin(struct lp_build_context *bld,
|
||||
LLVMValueRef a)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
char intrinsic[32];
|
||||
|
||||
@@ -966,7 +966,7 @@ lp_build_polynomial(struct lp_build_context *bld,
|
||||
const double *coeffs,
|
||||
unsigned num_coeffs)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMValueRef res = NULL;
|
||||
unsigned i;
|
||||
|
||||
@@ -1014,7 +1014,7 @@ lp_build_exp2_approx(struct lp_build_context *bld,
|
||||
LLVMValueRef *p_frac_part,
|
||||
LLVMValueRef *p_exp2)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
|
||||
LLVMValueRef ipart = NULL;
|
||||
@@ -1107,7 +1107,7 @@ lp_build_log2_approx(struct lp_build_context *bld,
|
||||
LLVMValueRef *p_floor_log2,
|
||||
LLVMValueRef *p_log2)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
|
||||
union lp_type type;
|
||||
struct lp_type type;
|
||||
struct lp_build_context;
|
||||
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
|
||||
struct pipe_blend_state;
|
||||
union lp_type;
|
||||
struct lp_type;
|
||||
struct lp_build_context;
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ lp_build_blend_func(struct lp_build_context *bld,
|
||||
LLVMValueRef
|
||||
lp_build_blend_aos(LLVMBuilderRef builder,
|
||||
const struct pipe_blend_state *blend,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef src,
|
||||
LLVMValueRef dst,
|
||||
LLVMValueRef const_,
|
||||
@@ -84,7 +84,7 @@ lp_build_blend_aos(LLVMBuilderRef builder,
|
||||
void
|
||||
lp_build_blend_soa(LLVMBuilderRef builder,
|
||||
const struct pipe_blend_state *blend,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef src[4],
|
||||
LLVMValueRef dst[4],
|
||||
LLVMValueRef const_[4],
|
||||
|
||||
@@ -303,7 +303,7 @@ lp_build_blend_func(struct lp_build_context *bld,
|
||||
LLVMValueRef
|
||||
lp_build_blend_aos(LLVMBuilderRef builder,
|
||||
const struct pipe_blend_state *blend,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef src,
|
||||
LLVMValueRef dst,
|
||||
LLVMValueRef const_,
|
||||
|
||||
@@ -199,7 +199,7 @@ lp_build_blend_soa_factor(struct lp_build_blend_soa_context *bld,
|
||||
void
|
||||
lp_build_blend_soa(LLVMBuilderRef builder,
|
||||
const struct pipe_blend_state *blend,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef src[4],
|
||||
LLVMValueRef dst[4],
|
||||
LLVMValueRef con[4],
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
|
||||
unsigned
|
||||
lp_mantissa(union lp_type type)
|
||||
lp_mantissa(struct lp_type type)
|
||||
{
|
||||
assert(type.floating);
|
||||
|
||||
@@ -72,7 +72,7 @@ lp_mantissa(union lp_type type)
|
||||
* Same as lp_const_scale(), but in terms of shifts.
|
||||
*/
|
||||
unsigned
|
||||
lp_const_shift(union lp_type type)
|
||||
lp_const_shift(struct lp_type type)
|
||||
{
|
||||
if(type.floating)
|
||||
return 0;
|
||||
@@ -86,7 +86,7 @@ lp_const_shift(union lp_type type)
|
||||
|
||||
|
||||
unsigned
|
||||
lp_const_offset(union lp_type type)
|
||||
lp_const_offset(struct lp_type type)
|
||||
{
|
||||
if(type.floating || type.fixed)
|
||||
return 0;
|
||||
@@ -104,7 +104,7 @@ lp_const_offset(union lp_type type)
|
||||
* else for the fixed points types and normalized integers.
|
||||
*/
|
||||
double
|
||||
lp_const_scale(union lp_type type)
|
||||
lp_const_scale(struct lp_type type)
|
||||
{
|
||||
unsigned long long llscale;
|
||||
double dscale;
|
||||
@@ -122,7 +122,7 @@ lp_const_scale(union lp_type type)
|
||||
* Minimum value representable by the type.
|
||||
*/
|
||||
double
|
||||
lp_const_min(union lp_type type)
|
||||
lp_const_min(struct lp_type type)
|
||||
{
|
||||
unsigned bits;
|
||||
|
||||
@@ -158,7 +158,7 @@ lp_const_min(union lp_type type)
|
||||
* Maximum value representable by the type.
|
||||
*/
|
||||
double
|
||||
lp_const_max(union lp_type type)
|
||||
lp_const_max(struct lp_type type)
|
||||
{
|
||||
unsigned bits;
|
||||
|
||||
@@ -190,7 +190,7 @@ lp_const_max(union lp_type type)
|
||||
|
||||
|
||||
double
|
||||
lp_const_eps(union lp_type type)
|
||||
lp_const_eps(struct lp_type type)
|
||||
{
|
||||
if (type.floating) {
|
||||
switch(type.width) {
|
||||
@@ -211,7 +211,7 @@ lp_const_eps(union lp_type type)
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_undef(union lp_type type)
|
||||
lp_build_undef(struct lp_type type)
|
||||
{
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
return LLVMGetUndef(vec_type);
|
||||
@@ -219,7 +219,7 @@ lp_build_undef(union lp_type type)
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_zero(union lp_type type)
|
||||
lp_build_zero(struct lp_type type)
|
||||
{
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
return LLVMConstNull(vec_type);
|
||||
@@ -227,7 +227,7 @@ lp_build_zero(union lp_type type)
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_one(union lp_type type)
|
||||
lp_build_one(struct lp_type type)
|
||||
{
|
||||
LLVMTypeRef elem_type;
|
||||
LLVMValueRef elems[LP_MAX_VECTOR_LENGTH];
|
||||
@@ -269,7 +269,7 @@ lp_build_one(union lp_type type)
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_const_scalar(union lp_type type,
|
||||
lp_build_const_scalar(struct lp_type type,
|
||||
double val)
|
||||
{
|
||||
LLVMTypeRef elem_type = lp_build_elem_type(type);
|
||||
@@ -295,7 +295,7 @@ lp_build_const_scalar(union lp_type type,
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_int_const_scalar(union lp_type type,
|
||||
lp_build_int_const_scalar(struct lp_type type,
|
||||
long long val)
|
||||
{
|
||||
LLVMTypeRef elem_type = lp_build_int_elem_type(type);
|
||||
@@ -312,7 +312,7 @@ lp_build_int_const_scalar(union lp_type type,
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_const_aos(union lp_type type,
|
||||
lp_build_const_aos(struct lp_type type,
|
||||
double r, double g, double b, double a,
|
||||
const unsigned char *swizzle)
|
||||
{
|
||||
@@ -352,8 +352,8 @@ lp_build_const_aos(union lp_type type,
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_const_mask_aos(union lp_type type,
|
||||
boolean cond[4])
|
||||
lp_build_const_mask_aos(struct lp_type type,
|
||||
const boolean cond[4])
|
||||
{
|
||||
LLVMTypeRef elem_type = LLVMIntType(type.width);
|
||||
LLVMValueRef masks[LP_MAX_VECTOR_LENGTH];
|
||||
|
||||
@@ -42,67 +42,67 @@
|
||||
#include <pipe/p_compiler.h>
|
||||
|
||||
|
||||
union lp_type type;
|
||||
struct lp_type type;
|
||||
|
||||
|
||||
unsigned
|
||||
lp_mantissa(union lp_type type);
|
||||
lp_mantissa(struct lp_type type);
|
||||
|
||||
|
||||
unsigned
|
||||
lp_const_shift(union lp_type type);
|
||||
lp_const_shift(struct lp_type type);
|
||||
|
||||
|
||||
unsigned
|
||||
lp_const_offset(union lp_type type);
|
||||
lp_const_offset(struct lp_type type);
|
||||
|
||||
|
||||
double
|
||||
lp_const_scale(union lp_type type);
|
||||
lp_const_scale(struct lp_type type);
|
||||
|
||||
double
|
||||
lp_const_min(union lp_type type);
|
||||
lp_const_min(struct lp_type type);
|
||||
|
||||
|
||||
double
|
||||
lp_const_max(union lp_type type);
|
||||
lp_const_max(struct lp_type type);
|
||||
|
||||
|
||||
double
|
||||
lp_const_eps(union lp_type type);
|
||||
lp_const_eps(struct lp_type type);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_undef(union lp_type type);
|
||||
lp_build_undef(struct lp_type type);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_zero(union lp_type type);
|
||||
lp_build_zero(struct lp_type type);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_one(union lp_type type);
|
||||
lp_build_one(struct lp_type type);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_const_scalar(union lp_type type,
|
||||
lp_build_const_scalar(struct lp_type type,
|
||||
double val);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_int_const_scalar(union lp_type type,
|
||||
lp_build_int_const_scalar(struct lp_type type,
|
||||
long long val);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_const_aos(union lp_type type,
|
||||
lp_build_const_aos(struct lp_type type,
|
||||
double r, double g, double b, double a,
|
||||
const unsigned char *swizzle);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_const_mask_aos(union lp_type type,
|
||||
boolean cond[4]);
|
||||
lp_build_const_mask_aos(struct lp_type type,
|
||||
const boolean cond[4]);
|
||||
|
||||
|
||||
#endif /* !LP_BLD_CONST_H */
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
*/
|
||||
LLVMValueRef
|
||||
lp_build_clamped_float_to_unsigned_norm(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
struct lp_type src_type,
|
||||
unsigned dst_width,
|
||||
LLVMValueRef src)
|
||||
{
|
||||
@@ -152,7 +152,7 @@ lp_build_clamped_float_to_unsigned_norm(LLVMBuilderRef builder,
|
||||
LLVMValueRef
|
||||
lp_build_unsigned_norm_to_float(LLVMBuilderRef builder,
|
||||
unsigned src_width,
|
||||
union lp_type dst_type,
|
||||
struct lp_type dst_type,
|
||||
LLVMValueRef src)
|
||||
{
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(dst_type);
|
||||
@@ -248,8 +248,8 @@ lp_build_const_pack_shuffle(unsigned n)
|
||||
*/
|
||||
static void
|
||||
lp_build_expand(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
LLVMValueRef src,
|
||||
LLVMValueRef *dst, unsigned num_dsts)
|
||||
{
|
||||
@@ -266,7 +266,7 @@ lp_build_expand(LLVMBuilderRef builder,
|
||||
dst[0] = src;
|
||||
|
||||
while(src_type.width < dst_type.width) {
|
||||
union lp_type new_type = src_type;
|
||||
struct lp_type new_type = src_type;
|
||||
LLVMTypeRef new_vec_type;
|
||||
|
||||
new_type.width *= 2;
|
||||
@@ -314,8 +314,8 @@ lp_build_expand(LLVMBuilderRef builder,
|
||||
*/
|
||||
static LLVMValueRef
|
||||
lp_build_pack2(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
boolean clamped,
|
||||
LLVMValueRef lo,
|
||||
LLVMValueRef hi)
|
||||
@@ -392,8 +392,8 @@ lp_build_pack2(LLVMBuilderRef builder,
|
||||
*/
|
||||
static LLVMValueRef
|
||||
lp_build_pack(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
boolean clamped,
|
||||
const LLVMValueRef *src, unsigned num_srcs)
|
||||
{
|
||||
@@ -410,7 +410,7 @@ lp_build_pack(LLVMBuilderRef builder,
|
||||
tmp[i] = src[i];
|
||||
|
||||
while(src_type.width > dst_type.width) {
|
||||
union lp_type new_type = src_type;
|
||||
struct lp_type new_type = src_type;
|
||||
|
||||
new_type.width /= 2;
|
||||
new_type.length *= 2;
|
||||
@@ -442,12 +442,12 @@ lp_build_pack(LLVMBuilderRef builder,
|
||||
*/
|
||||
void
|
||||
lp_build_conv(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
const LLVMValueRef *src, unsigned num_srcs,
|
||||
LLVMValueRef *dst, unsigned num_dsts)
|
||||
{
|
||||
union lp_type tmp_type;
|
||||
struct lp_type tmp_type;
|
||||
LLVMValueRef tmp[LP_MAX_VECTOR_LENGTH];
|
||||
unsigned num_tmps;
|
||||
unsigned i;
|
||||
@@ -470,7 +470,7 @@ lp_build_conv(LLVMBuilderRef builder,
|
||||
* Clamp if necessary
|
||||
*/
|
||||
|
||||
if(src_type.value != dst_type.value) {
|
||||
if(memcmp(&src_type, &dst_type, sizeof src_type) != 0) {
|
||||
struct lp_build_context bld;
|
||||
double src_min = lp_const_min(src_type);
|
||||
double dst_min = lp_const_min(dst_type);
|
||||
@@ -656,8 +656,8 @@ lp_build_conv(LLVMBuilderRef builder,
|
||||
*/
|
||||
void
|
||||
lp_build_conv_mask(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
const LLVMValueRef *src, unsigned num_srcs,
|
||||
LLVMValueRef *dst, unsigned num_dsts)
|
||||
{
|
||||
|
||||
@@ -40,33 +40,33 @@
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
|
||||
union lp_type type;
|
||||
struct lp_type type;
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_clamped_float_to_unsigned_norm(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
struct lp_type src_type,
|
||||
unsigned dst_width,
|
||||
LLVMValueRef src);
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_unsigned_norm_to_float(LLVMBuilderRef builder,
|
||||
unsigned src_width,
|
||||
union lp_type dst_type,
|
||||
struct lp_type dst_type,
|
||||
LLVMValueRef src);
|
||||
|
||||
|
||||
void
|
||||
lp_build_conv(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
const LLVMValueRef *srcs, unsigned num_srcs,
|
||||
LLVMValueRef *dsts, unsigned num_dsts);
|
||||
|
||||
void
|
||||
lp_build_conv_mask(LLVMBuilderRef builder,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
const LLVMValueRef *src, unsigned num_srcs,
|
||||
LLVMValueRef *dst, unsigned num_dsts);
|
||||
|
||||
|
||||
@@ -71,11 +71,11 @@
|
||||
/**
|
||||
* Return a type appropriate for depth/stencil testing.
|
||||
*/
|
||||
union lp_type
|
||||
struct lp_type
|
||||
lp_depth_type(const struct util_format_description *format_desc,
|
||||
unsigned length)
|
||||
{
|
||||
union lp_type type;
|
||||
struct lp_type type;
|
||||
unsigned swizzle;
|
||||
|
||||
assert(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS);
|
||||
@@ -85,7 +85,7 @@ lp_depth_type(const struct util_format_description *format_desc,
|
||||
swizzle = format_desc->swizzle[0];
|
||||
assert(swizzle < 4);
|
||||
|
||||
type.value = 0;
|
||||
memset(&type, 0, sizeof type);
|
||||
type.width = format_desc->block.bits;
|
||||
|
||||
if(format_desc->channel[swizzle].type == UTIL_FORMAT_TYPE_FLOAT) {
|
||||
@@ -114,7 +114,7 @@ lp_depth_type(const struct util_format_description *format_desc,
|
||||
void
|
||||
lp_build_depth_test(LLVMBuilderRef builder,
|
||||
const struct pipe_depth_state *state,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
const struct util_format_description *format_desc,
|
||||
struct lp_build_mask_context *mask,
|
||||
LLVMValueRef src,
|
||||
|
||||
@@ -41,11 +41,11 @@
|
||||
|
||||
struct pipe_depth_state;
|
||||
struct util_format_description;
|
||||
union lp_type;
|
||||
struct lp_type;
|
||||
struct lp_build_mask_context;
|
||||
|
||||
|
||||
union lp_type
|
||||
struct lp_type
|
||||
lp_depth_type(const struct util_format_description *format_desc,
|
||||
unsigned length);
|
||||
|
||||
@@ -53,7 +53,7 @@ lp_depth_type(const struct util_format_description *format_desc,
|
||||
void
|
||||
lp_build_depth_test(LLVMBuilderRef builder,
|
||||
const struct pipe_depth_state *state,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
const struct util_format_description *format_desc,
|
||||
struct lp_build_mask_context *mask,
|
||||
LLVMValueRef src,
|
||||
|
||||
@@ -405,7 +405,7 @@ lp_build_mask_check(struct lp_build_mask_context *mask)
|
||||
void
|
||||
lp_build_mask_begin(struct lp_build_mask_context *mask,
|
||||
struct lp_build_flow_context *flow,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef value)
|
||||
{
|
||||
memset(mask, 0, sizeof *mask);
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
|
||||
union lp_type;
|
||||
struct lp_type;
|
||||
|
||||
|
||||
struct lp_build_flow_context;
|
||||
@@ -84,7 +84,7 @@ struct lp_build_mask_context
|
||||
void
|
||||
lp_build_mask_begin(struct lp_build_mask_context *mask,
|
||||
struct lp_build_flow_context *flow,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef value);
|
||||
|
||||
/**
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#include "pipe/p_format.h"
|
||||
|
||||
struct util_format_description;
|
||||
union lp_type;
|
||||
struct lp_type;
|
||||
|
||||
|
||||
/**
|
||||
@@ -103,7 +103,7 @@ lp_build_gather(LLVMBuilderRef builder,
|
||||
void
|
||||
lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
|
||||
const struct util_format_description *format_desc,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef packed,
|
||||
LLVMValueRef *rgba);
|
||||
|
||||
@@ -111,7 +111,7 @@ lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
|
||||
void
|
||||
lp_build_load_rgba_soa(LLVMBuilderRef builder,
|
||||
const struct util_format_description *format_desc,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef base_ptr,
|
||||
LLVMValueRef offsets,
|
||||
LLVMValueRef *rgba);
|
||||
|
||||
@@ -84,7 +84,7 @@ lp_build_gather(LLVMBuilderRef builder,
|
||||
|
||||
|
||||
static LLVMValueRef
|
||||
lp_build_format_swizzle(union lp_type type,
|
||||
lp_build_format_swizzle(struct lp_type type,
|
||||
const LLVMValueRef *inputs,
|
||||
enum util_format_swizzle swizzle)
|
||||
{
|
||||
@@ -110,7 +110,7 @@ lp_build_format_swizzle(union lp_type type,
|
||||
void
|
||||
lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
|
||||
const struct util_format_description *format_desc,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef packed,
|
||||
LLVMValueRef *rgba)
|
||||
{
|
||||
@@ -188,7 +188,7 @@ lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
|
||||
void
|
||||
lp_build_load_rgba_soa(LLVMBuilderRef builder,
|
||||
const struct util_format_description *format_desc,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef base_ptr,
|
||||
LLVMValueRef offsets,
|
||||
LLVMValueRef *rgba)
|
||||
|
||||
@@ -292,7 +292,7 @@ void
|
||||
lp_build_interp_soa_init(struct lp_build_interp_soa_context *bld,
|
||||
const struct tgsi_token *tokens,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef a0_ptr,
|
||||
LLVMValueRef dadx_ptr,
|
||||
LLVMValueRef dady_ptr,
|
||||
|
||||
@@ -83,7 +83,7 @@ void
|
||||
lp_build_interp_soa_init(struct lp_build_interp_soa_context *bld,
|
||||
const struct tgsi_token *tokens,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef a0_ptr,
|
||||
LLVMValueRef dadx_ptr,
|
||||
LLVMValueRef dady_ptr,
|
||||
|
||||
@@ -45,7 +45,7 @@ lp_build_cmp(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
|
||||
LLVMValueRef zeros = LLVMConstNull(int_vec_type);
|
||||
@@ -301,7 +301,7 @@ lp_build_select(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
LLVMValueRef b)
|
||||
{
|
||||
union lp_type type = bld->type;
|
||||
struct lp_type type = bld->type;
|
||||
LLVMValueRef res;
|
||||
|
||||
if(a == b)
|
||||
@@ -339,7 +339,7 @@ lp_build_select_aos(struct lp_build_context *bld,
|
||||
LLVMValueRef b,
|
||||
const boolean cond[4])
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
const unsigned n = type.length;
|
||||
unsigned i, j;
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
#include "pipe/p_defines.h" /* For PIPE_FUNC_xxx */
|
||||
|
||||
|
||||
union lp_type type;
|
||||
struct lp_type type;
|
||||
struct lp_build_context;
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
struct pipe_texture;
|
||||
struct pipe_sampler_state;
|
||||
union lp_type;
|
||||
struct lp_type;
|
||||
|
||||
|
||||
/**
|
||||
@@ -123,7 +123,7 @@ void
|
||||
lp_build_sample_soa(LLVMBuilderRef builder,
|
||||
const struct lp_sampler_static_state *static_state,
|
||||
struct lp_sampler_dynamic_state *dynamic_state,
|
||||
union lp_type fp_type,
|
||||
struct lp_type fp_type,
|
||||
unsigned unit,
|
||||
unsigned num_coords,
|
||||
const LLVMValueRef *coords,
|
||||
|
||||
@@ -97,15 +97,15 @@ struct lp_build_sample_context
|
||||
const struct util_format_description *format_desc;
|
||||
|
||||
/** Incoming coordinates type and build context */
|
||||
union lp_type coord_type;
|
||||
struct lp_type coord_type;
|
||||
struct lp_build_context coord_bld;
|
||||
|
||||
/** Integer coordinates */
|
||||
union lp_type int_coord_type;
|
||||
struct lp_type int_coord_type;
|
||||
struct lp_build_context int_coord_bld;
|
||||
|
||||
/** Output texels type and build context */
|
||||
union lp_type texel_type;
|
||||
struct lp_type texel_type;
|
||||
struct lp_build_context texel_bld;
|
||||
};
|
||||
|
||||
@@ -337,7 +337,7 @@ void
|
||||
lp_build_sample_soa(LLVMBuilderRef builder,
|
||||
const struct lp_sampler_static_state *static_state,
|
||||
struct lp_sampler_dynamic_state *dynamic_state,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
unsigned unit,
|
||||
unsigned num_coords,
|
||||
const LLVMValueRef *coords,
|
||||
|
||||
@@ -64,7 +64,7 @@ LLVMValueRef
|
||||
lp_build_broadcast_scalar(struct lp_build_context *bld,
|
||||
LLVMValueRef scalar)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
LLVMValueRef res;
|
||||
unsigned i;
|
||||
|
||||
@@ -83,7 +83,7 @@ lp_build_broadcast_aos(struct lp_build_context *bld,
|
||||
LLVMValueRef a,
|
||||
unsigned channel)
|
||||
{
|
||||
const union lp_type type = bld->type;
|
||||
const struct lp_type type = bld->type;
|
||||
const unsigned n = type.length;
|
||||
unsigned i, j;
|
||||
|
||||
@@ -115,7 +115,7 @@ lp_build_broadcast_aos(struct lp_build_context *bld,
|
||||
* YY00 YY00 .... YY00
|
||||
* YYYY YYYY .... YYYY <= output
|
||||
*/
|
||||
union lp_type type4 = type;
|
||||
struct lp_type type4 = type;
|
||||
const char shifts[4][2] = {
|
||||
{ 1, 2},
|
||||
{-1, 2},
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
|
||||
union lp_type type;
|
||||
struct lp_type type;
|
||||
struct lp_build_context;
|
||||
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
|
||||
struct tgsi_token;
|
||||
union lp_type;
|
||||
struct lp_type;
|
||||
struct lp_build_context;
|
||||
struct lp_build_mask_context;
|
||||
|
||||
@@ -60,7 +60,7 @@ struct lp_build_sampler_soa
|
||||
void
|
||||
(*emit_fetch_texel)( struct lp_build_sampler_soa *sampler,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
unsigned unit,
|
||||
unsigned num_coords,
|
||||
const LLVMValueRef *coords,
|
||||
@@ -72,7 +72,7 @@ struct lp_build_sampler_soa
|
||||
void
|
||||
lp_build_tgsi_soa(LLVMBuilderRef builder,
|
||||
const struct tgsi_token *tokens,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
struct lp_build_mask_context *mask,
|
||||
LLVMValueRef consts_ptr,
|
||||
const LLVMValueRef *pos,
|
||||
|
||||
@@ -1415,7 +1415,7 @@ emit_instruction(
|
||||
void
|
||||
lp_build_tgsi_soa(LLVMBuilderRef builder,
|
||||
const struct tgsi_token *tokens,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
struct lp_build_mask_context *mask,
|
||||
LLVMValueRef consts_ptr,
|
||||
const LLVMValueRef *pos,
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_elem_type(union lp_type type)
|
||||
lp_build_elem_type(struct lp_type type)
|
||||
{
|
||||
if (type.floating) {
|
||||
switch(type.width) {
|
||||
@@ -55,7 +55,7 @@ lp_build_elem_type(union lp_type type)
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_vec_type(union lp_type type)
|
||||
lp_build_vec_type(struct lp_type type)
|
||||
{
|
||||
LLVMTypeRef elem_type = lp_build_elem_type(type);
|
||||
return LLVMVectorType(elem_type, type.length);
|
||||
@@ -69,7 +69,7 @@ lp_build_vec_type(union lp_type type)
|
||||
* type and check for identity.
|
||||
*/
|
||||
boolean
|
||||
lp_check_elem_type(union lp_type type, LLVMTypeRef elem_type)
|
||||
lp_check_elem_type(struct lp_type type, LLVMTypeRef elem_type)
|
||||
{
|
||||
LLVMTypeKind elem_kind;
|
||||
|
||||
@@ -107,7 +107,7 @@ lp_check_elem_type(union lp_type type, LLVMTypeRef elem_type)
|
||||
|
||||
|
||||
boolean
|
||||
lp_check_vec_type(union lp_type type, LLVMTypeRef vec_type)
|
||||
lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type)
|
||||
{
|
||||
LLVMTypeRef elem_type;
|
||||
|
||||
@@ -128,7 +128,7 @@ lp_check_vec_type(union lp_type type, LLVMTypeRef vec_type)
|
||||
|
||||
|
||||
boolean
|
||||
lp_check_value(union lp_type type, LLVMValueRef val)
|
||||
lp_check_value(struct lp_type type, LLVMValueRef val)
|
||||
{
|
||||
LLVMTypeRef vec_type;
|
||||
|
||||
@@ -143,25 +143,26 @@ lp_check_value(union lp_type type, LLVMValueRef val)
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_int_elem_type(union lp_type type)
|
||||
lp_build_int_elem_type(struct lp_type type)
|
||||
{
|
||||
return LLVMIntType(type.width);
|
||||
}
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_int_vec_type(union lp_type type)
|
||||
lp_build_int_vec_type(struct lp_type type)
|
||||
{
|
||||
LLVMTypeRef elem_type = lp_build_int_elem_type(type);
|
||||
return LLVMVectorType(elem_type, type.length);
|
||||
}
|
||||
|
||||
|
||||
union lp_type
|
||||
lp_int_type(union lp_type type)
|
||||
struct lp_type
|
||||
lp_int_type(struct lp_type type)
|
||||
{
|
||||
union lp_type int_type;
|
||||
int_type.value = 0;
|
||||
struct lp_type int_type;
|
||||
|
||||
memset(&int_type, 0, sizeof int_type);
|
||||
int_type.width = type.width;
|
||||
int_type.length = type.length;
|
||||
return int_type;
|
||||
@@ -171,7 +172,7 @@ lp_int_type(union lp_type type)
|
||||
void
|
||||
lp_build_context_init(struct lp_build_context *bld,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type)
|
||||
struct lp_type type)
|
||||
{
|
||||
bld->builder = builder;
|
||||
bld->type = type;
|
||||
|
||||
@@ -56,58 +56,55 @@
|
||||
* on the types used for intermediate computations, such as signed vs unsigned,
|
||||
* normalized values, or fixed point.
|
||||
*/
|
||||
union lp_type {
|
||||
struct {
|
||||
/**
|
||||
* Floating-point. Cannot be used with fixed. Integer numbers are
|
||||
* represented by this zero.
|
||||
*/
|
||||
unsigned floating:1;
|
||||
struct lp_type {
|
||||
/**
|
||||
* Floating-point. Cannot be used with fixed. Integer numbers are
|
||||
* represented by this zero.
|
||||
*/
|
||||
unsigned floating:1;
|
||||
|
||||
/**
|
||||
* Fixed-point. Cannot be used with floating. Integer numbers are
|
||||
* represented by this zero.
|
||||
*/
|
||||
unsigned fixed:1;
|
||||
|
||||
/**
|
||||
* Whether it can represent negative values or not.
|
||||
*
|
||||
* If this is not set for floating point, it means that all values are
|
||||
* assumed to be positive.
|
||||
*/
|
||||
unsigned sign:1;
|
||||
/**
|
||||
* Fixed-point. Cannot be used with floating. Integer numbers are
|
||||
* represented by this zero.
|
||||
*/
|
||||
unsigned fixed:1;
|
||||
|
||||
/**
|
||||
* Whether values are normalized to fit [0, 1] interval, or [-1, 1]
|
||||
* interval for signed types.
|
||||
*
|
||||
* For integer types it means the representable integer range should be
|
||||
* interpreted as the interval above.
|
||||
*
|
||||
* For floating and fixed point formats it means the values should be
|
||||
* clamped to the interval above.
|
||||
*/
|
||||
unsigned norm:1;
|
||||
/**
|
||||
* Whether it can represent negative values or not.
|
||||
*
|
||||
* If this is not set for floating point, it means that all values are
|
||||
* assumed to be positive.
|
||||
*/
|
||||
unsigned sign:1;
|
||||
|
||||
/**
|
||||
* Element width.
|
||||
*
|
||||
* For fixed point values, the fixed point is assumed to be at half the
|
||||
* width.
|
||||
*/
|
||||
unsigned width:14;
|
||||
/**
|
||||
* Whether values are normalized to fit [0, 1] interval, or [-1, 1]
|
||||
* interval for signed types.
|
||||
*
|
||||
* For integer types it means the representable integer range should be
|
||||
* interpreted as the interval above.
|
||||
*
|
||||
* For floating and fixed point formats it means the values should be
|
||||
* clamped to the interval above.
|
||||
*/
|
||||
unsigned norm:1;
|
||||
|
||||
/**
|
||||
* Vector length.
|
||||
*
|
||||
* width*length should be a power of two greater or equal to eight.
|
||||
*
|
||||
* @sa LP_MAX_VECTOR_LENGTH
|
||||
*/
|
||||
unsigned length:14;
|
||||
};
|
||||
uint32_t value;
|
||||
/**
|
||||
* Element width.
|
||||
*
|
||||
* For fixed point values, the fixed point is assumed to be at half the
|
||||
* width.
|
||||
*/
|
||||
unsigned width:14;
|
||||
|
||||
/**
|
||||
* Vector length.
|
||||
*
|
||||
* width*length should be a power of two greater or equal to eight.
|
||||
*
|
||||
* @sa LP_MAX_VECTOR_LENGTH
|
||||
*/
|
||||
unsigned length:14;
|
||||
};
|
||||
|
||||
|
||||
@@ -124,7 +121,7 @@ struct lp_build_context
|
||||
* This not only describes the input/output LLVM types, but also whether
|
||||
* to normalize/clamp the results.
|
||||
*/
|
||||
union lp_type type;
|
||||
struct lp_type type;
|
||||
|
||||
/** Same as lp_build_undef(type) */
|
||||
LLVMValueRef undef;
|
||||
@@ -138,41 +135,41 @@ struct lp_build_context
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_elem_type(union lp_type type);
|
||||
lp_build_elem_type(struct lp_type type);
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_vec_type(union lp_type type);
|
||||
lp_build_vec_type(struct lp_type type);
|
||||
|
||||
|
||||
boolean
|
||||
lp_check_elem_type(union lp_type type, LLVMTypeRef elem_type);
|
||||
lp_check_elem_type(struct lp_type type, LLVMTypeRef elem_type);
|
||||
|
||||
|
||||
boolean
|
||||
lp_check_vec_type(union lp_type type, LLVMTypeRef vec_type);
|
||||
lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type);
|
||||
|
||||
|
||||
boolean
|
||||
lp_check_value(union lp_type type, LLVMValueRef val);
|
||||
lp_check_value(struct lp_type type, LLVMValueRef val);
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_int_elem_type(union lp_type type);
|
||||
lp_build_int_elem_type(struct lp_type type);
|
||||
|
||||
|
||||
LLVMTypeRef
|
||||
lp_build_int_vec_type(union lp_type type);
|
||||
lp_build_int_vec_type(struct lp_type type);
|
||||
|
||||
|
||||
union lp_type
|
||||
lp_int_type(union lp_type type);
|
||||
struct lp_type
|
||||
lp_int_type(struct lp_type type);
|
||||
|
||||
|
||||
void
|
||||
lp_build_context_init(struct lp_build_context *bld,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type);
|
||||
struct lp_type type);
|
||||
|
||||
|
||||
#endif /* !LP_BLD_TYPE_H */
|
||||
|
||||
@@ -133,13 +133,13 @@ generate_pos0(LLVMBuilderRef builder,
|
||||
static void
|
||||
generate_depth(LLVMBuilderRef builder,
|
||||
const struct lp_fragment_shader_variant_key *key,
|
||||
union lp_type src_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_build_mask_context *mask,
|
||||
LLVMValueRef src,
|
||||
LLVMValueRef dst_ptr)
|
||||
{
|
||||
const struct util_format_description *format_desc;
|
||||
union lp_type dst_type;
|
||||
struct lp_type dst_type;
|
||||
|
||||
if(!key->depth.enabled)
|
||||
return;
|
||||
@@ -181,7 +181,7 @@ generate_fs(struct llvmpipe_context *lp,
|
||||
struct lp_fragment_shader *shader,
|
||||
const struct lp_fragment_shader_variant_key *key,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef context_ptr,
|
||||
unsigned i,
|
||||
const struct lp_build_interp_soa_context *interp,
|
||||
@@ -299,7 +299,7 @@ generate_fs(struct llvmpipe_context *lp,
|
||||
static void
|
||||
generate_blend(const struct pipe_blend_state *blend,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
LLVMValueRef context_ptr,
|
||||
LLVMValueRef mask,
|
||||
LLVMValueRef *src,
|
||||
@@ -364,8 +364,8 @@ generate_fragment(struct llvmpipe_context *lp,
|
||||
{
|
||||
struct llvmpipe_screen *screen = llvmpipe_screen(lp->pipe.screen);
|
||||
struct lp_fragment_shader_variant *variant;
|
||||
union lp_type fs_type;
|
||||
union lp_type blend_type;
|
||||
struct lp_type fs_type;
|
||||
struct lp_type blend_type;
|
||||
LLVMTypeRef fs_elem_type;
|
||||
LLVMTypeRef fs_vec_type;
|
||||
LLVMTypeRef fs_int_vec_type;
|
||||
@@ -431,7 +431,7 @@ generate_fragment(struct llvmpipe_context *lp,
|
||||
/* TODO: actually pick these based on the fs and color buffer
|
||||
* characteristics. */
|
||||
|
||||
fs_type.value = 0;
|
||||
memset(&fs_type, 0, sizeof fs_type);
|
||||
fs_type.floating = TRUE; /* floating point values */
|
||||
fs_type.sign = TRUE; /* values are signed */
|
||||
fs_type.norm = FALSE; /* values are not limited to [0,1] or [-1,1] */
|
||||
@@ -439,7 +439,7 @@ generate_fragment(struct llvmpipe_context *lp,
|
||||
fs_type.length = 4; /* 4 element per vector */
|
||||
num_fs = 4;
|
||||
|
||||
blend_type.value = 0;
|
||||
memset(&blend_type, 0, sizeof blend_type);
|
||||
blend_type.floating = FALSE; /* values are integers */
|
||||
blend_type.sign = FALSE; /* values are unsigned */
|
||||
blend_type.norm = TRUE; /* values are in [0,1] or [-1,1] */
|
||||
|
||||
@@ -86,43 +86,43 @@ random_float(void);
|
||||
|
||||
|
||||
void
|
||||
dump_type(FILE *fp, union lp_type type);
|
||||
dump_type(FILE *fp, struct lp_type type);
|
||||
|
||||
|
||||
double
|
||||
read_elem(union lp_type type, const void *src, unsigned index);
|
||||
read_elem(struct lp_type type, const void *src, unsigned index);
|
||||
|
||||
|
||||
void
|
||||
write_elem(union lp_type type, void *dst, unsigned index, double src);
|
||||
write_elem(struct lp_type type, void *dst, unsigned index, double src);
|
||||
|
||||
|
||||
void
|
||||
random_elem(union lp_type type, void *dst, unsigned index);
|
||||
random_elem(struct lp_type type, void *dst, unsigned index);
|
||||
|
||||
|
||||
void
|
||||
read_vec(union lp_type type, const void *src, double *dst);
|
||||
read_vec(struct lp_type type, const void *src, double *dst);
|
||||
|
||||
|
||||
void
|
||||
write_vec(union lp_type type, void *dst, const double *src);
|
||||
write_vec(struct lp_type type, void *dst, const double *src);
|
||||
|
||||
|
||||
void
|
||||
random_vec(union lp_type type, void *dst);
|
||||
random_vec(struct lp_type type, void *dst);
|
||||
|
||||
|
||||
boolean
|
||||
compare_vec_with_eps(union lp_type type, const void *res, const void *ref, double eps);
|
||||
compare_vec_with_eps(struct lp_type type, const void *res, const void *ref, double eps);
|
||||
|
||||
|
||||
boolean
|
||||
compare_vec(union lp_type type, const void *res, const void *ref);
|
||||
compare_vec(struct lp_type type, const void *res, const void *ref);
|
||||
|
||||
|
||||
void
|
||||
dump_vec(FILE *fp, union lp_type type, const void *src);
|
||||
dump_vec(FILE *fp, struct lp_type type, const void *src);
|
||||
|
||||
|
||||
#endif /* !LP_TEST_H */
|
||||
|
||||
@@ -80,7 +80,7 @@ static void
|
||||
write_tsv_row(FILE *fp,
|
||||
const struct pipe_blend_state *blend,
|
||||
enum vector_mode mode,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
double cycles,
|
||||
boolean success)
|
||||
{
|
||||
@@ -125,7 +125,7 @@ static void
|
||||
dump_blend_type(FILE *fp,
|
||||
const struct pipe_blend_state *blend,
|
||||
enum vector_mode mode,
|
||||
union lp_type type)
|
||||
struct lp_type type)
|
||||
{
|
||||
fprintf(fp, "%s", mode ? "soa" : "aos");
|
||||
|
||||
@@ -153,7 +153,7 @@ static LLVMValueRef
|
||||
add_blend_test(LLVMModuleRef module,
|
||||
const struct pipe_blend_state *blend,
|
||||
enum vector_mode mode,
|
||||
union lp_type type)
|
||||
struct lp_type type)
|
||||
{
|
||||
LLVMTypeRef ret_type;
|
||||
LLVMTypeRef vec_type;
|
||||
@@ -467,7 +467,7 @@ test_one(unsigned verbose,
|
||||
FILE *fp,
|
||||
const struct pipe_blend_state *blend,
|
||||
enum vector_mode mode,
|
||||
union lp_type type)
|
||||
struct lp_type type)
|
||||
{
|
||||
LLVMModuleRef module = NULL;
|
||||
LLVMValueRef func = NULL;
|
||||
@@ -765,10 +765,10 @@ blend_funcs[] = {
|
||||
};
|
||||
|
||||
|
||||
const union lp_type blend_types[] = {
|
||||
const struct lp_type blend_types[] = {
|
||||
/* float, fixed, sign, norm, width, len */
|
||||
{{ TRUE, FALSE, FALSE, TRUE, 32, 4 }}, /* f32 x 4 */
|
||||
{{ FALSE, FALSE, FALSE, TRUE, 8, 16 }}, /* u8n x 16 */
|
||||
{ TRUE, FALSE, FALSE, TRUE, 32, 4 }, /* f32 x 4 */
|
||||
{ FALSE, FALSE, FALSE, TRUE, 8, 16 }, /* u8n x 16 */
|
||||
};
|
||||
|
||||
|
||||
@@ -788,7 +788,7 @@ test_all(unsigned verbose, FILE *fp)
|
||||
const unsigned *alpha_dst_factor;
|
||||
struct pipe_blend_state blend;
|
||||
enum vector_mode mode;
|
||||
const union lp_type *type;
|
||||
const struct lp_type *type;
|
||||
bool success = TRUE;
|
||||
|
||||
for(rgb_func = blend_funcs; rgb_func < &blend_funcs[num_funcs]; ++rgb_func) {
|
||||
@@ -841,7 +841,7 @@ test_some(unsigned verbose, FILE *fp, unsigned long n)
|
||||
const unsigned *alpha_dst_factor;
|
||||
struct pipe_blend_state blend;
|
||||
enum vector_mode mode;
|
||||
const union lp_type *type;
|
||||
const struct lp_type *type;
|
||||
unsigned long i;
|
||||
bool success = TRUE;
|
||||
|
||||
|
||||
@@ -59,8 +59,8 @@ write_tsv_header(FILE *fp)
|
||||
|
||||
static void
|
||||
write_tsv_row(FILE *fp,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type,
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type,
|
||||
double cycles,
|
||||
boolean success)
|
||||
{
|
||||
@@ -80,8 +80,8 @@ write_tsv_row(FILE *fp,
|
||||
|
||||
static void
|
||||
dump_conv_types(FILE *fp,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type)
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type)
|
||||
{
|
||||
fprintf(fp, "src_type=");
|
||||
dump_type(fp, src_type);
|
||||
@@ -96,8 +96,8 @@ dump_conv_types(FILE *fp,
|
||||
|
||||
static LLVMValueRef
|
||||
add_conv_test(LLVMModuleRef module,
|
||||
union lp_type src_type, unsigned num_srcs,
|
||||
union lp_type dst_type, unsigned num_dsts)
|
||||
struct lp_type src_type, unsigned num_srcs,
|
||||
struct lp_type dst_type, unsigned num_dsts)
|
||||
{
|
||||
LLVMTypeRef args[2];
|
||||
LLVMValueRef func;
|
||||
@@ -145,8 +145,8 @@ add_conv_test(LLVMModuleRef module,
|
||||
static boolean
|
||||
test_one(unsigned verbose,
|
||||
FILE *fp,
|
||||
union lp_type src_type,
|
||||
union lp_type dst_type)
|
||||
struct lp_type src_type,
|
||||
struct lp_type dst_type)
|
||||
{
|
||||
LLVMModuleRef module = NULL;
|
||||
LLVMValueRef func = NULL;
|
||||
@@ -343,35 +343,35 @@ test_one(unsigned verbose,
|
||||
}
|
||||
|
||||
|
||||
const union lp_type conv_types[] = {
|
||||
const struct lp_type conv_types[] = {
|
||||
/* float, fixed, sign, norm, width, len */
|
||||
|
||||
{{ TRUE, FALSE, TRUE, TRUE, 32, 4 }},
|
||||
{{ TRUE, FALSE, TRUE, FALSE, 32, 4 }},
|
||||
{{ TRUE, FALSE, FALSE, TRUE, 32, 4 }},
|
||||
{{ TRUE, FALSE, FALSE, FALSE, 32, 4 }},
|
||||
{ TRUE, FALSE, TRUE, TRUE, 32, 4 },
|
||||
{ TRUE, FALSE, TRUE, FALSE, 32, 4 },
|
||||
{ TRUE, FALSE, FALSE, TRUE, 32, 4 },
|
||||
{ TRUE, FALSE, FALSE, FALSE, 32, 4 },
|
||||
|
||||
/* TODO: test fixed formats too */
|
||||
|
||||
{{ FALSE, FALSE, TRUE, TRUE, 16, 8 }},
|
||||
{{ FALSE, FALSE, TRUE, FALSE, 16, 8 }},
|
||||
{{ FALSE, FALSE, FALSE, TRUE, 16, 8 }},
|
||||
{{ FALSE, FALSE, FALSE, FALSE, 16, 8 }},
|
||||
{ FALSE, FALSE, TRUE, TRUE, 16, 8 },
|
||||
{ FALSE, FALSE, TRUE, FALSE, 16, 8 },
|
||||
{ FALSE, FALSE, FALSE, TRUE, 16, 8 },
|
||||
{ FALSE, FALSE, FALSE, FALSE, 16, 8 },
|
||||
|
||||
{{ FALSE, FALSE, TRUE, TRUE, 32, 4 }},
|
||||
{{ FALSE, FALSE, TRUE, FALSE, 32, 4 }},
|
||||
{{ FALSE, FALSE, FALSE, TRUE, 32, 4 }},
|
||||
{{ FALSE, FALSE, FALSE, FALSE, 32, 4 }},
|
||||
{ FALSE, FALSE, TRUE, TRUE, 32, 4 },
|
||||
{ FALSE, FALSE, TRUE, FALSE, 32, 4 },
|
||||
{ FALSE, FALSE, FALSE, TRUE, 32, 4 },
|
||||
{ FALSE, FALSE, FALSE, FALSE, 32, 4 },
|
||||
|
||||
{{ FALSE, FALSE, TRUE, TRUE, 16, 8 }},
|
||||
{{ FALSE, FALSE, TRUE, FALSE, 16, 8 }},
|
||||
{{ FALSE, FALSE, FALSE, TRUE, 16, 8 }},
|
||||
{{ FALSE, FALSE, FALSE, FALSE, 16, 8 }},
|
||||
{ FALSE, FALSE, TRUE, TRUE, 16, 8 },
|
||||
{ FALSE, FALSE, TRUE, FALSE, 16, 8 },
|
||||
{ FALSE, FALSE, FALSE, TRUE, 16, 8 },
|
||||
{ FALSE, FALSE, FALSE, FALSE, 16, 8 },
|
||||
|
||||
{{ FALSE, FALSE, TRUE, TRUE, 8, 16 }},
|
||||
{{ FALSE, FALSE, TRUE, FALSE, 8, 16 }},
|
||||
{{ FALSE, FALSE, FALSE, TRUE, 8, 16 }},
|
||||
{{ FALSE, FALSE, FALSE, FALSE, 8, 16 }},
|
||||
{ FALSE, FALSE, TRUE, TRUE, 8, 16 },
|
||||
{ FALSE, FALSE, TRUE, FALSE, 8, 16 },
|
||||
{ FALSE, FALSE, FALSE, TRUE, 8, 16 },
|
||||
{ FALSE, FALSE, FALSE, FALSE, 8, 16 },
|
||||
};
|
||||
|
||||
|
||||
@@ -381,8 +381,8 @@ const unsigned num_types = sizeof(conv_types)/sizeof(conv_types[0]);
|
||||
boolean
|
||||
test_all(unsigned verbose, FILE *fp)
|
||||
{
|
||||
const union lp_type *src_type;
|
||||
const union lp_type *dst_type;
|
||||
const struct lp_type *src_type;
|
||||
const struct lp_type *dst_type;
|
||||
bool success = TRUE;
|
||||
|
||||
for(src_type = conv_types; src_type < &conv_types[num_types]; ++src_type) {
|
||||
@@ -407,8 +407,8 @@ test_all(unsigned verbose, FILE *fp)
|
||||
boolean
|
||||
test_some(unsigned verbose, FILE *fp, unsigned long n)
|
||||
{
|
||||
const union lp_type *src_type;
|
||||
const union lp_type *dst_type;
|
||||
const struct lp_type *src_type;
|
||||
const struct lp_type *dst_type;
|
||||
unsigned long i;
|
||||
bool success = TRUE;
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
void
|
||||
dump_type(FILE *fp,
|
||||
union lp_type type)
|
||||
struct lp_type type)
|
||||
{
|
||||
fprintf(fp, "%s%s%u%sx%u",
|
||||
type.sign ? (type.floating || type.fixed ? "" : "s") : "u",
|
||||
@@ -52,7 +52,7 @@ dump_type(FILE *fp,
|
||||
|
||||
|
||||
double
|
||||
read_elem(union lp_type type, const void *src, unsigned index)
|
||||
read_elem(struct lp_type type, const void *src, unsigned index)
|
||||
{
|
||||
double scale = lp_const_scale(type);
|
||||
double value;
|
||||
@@ -115,7 +115,7 @@ read_elem(union lp_type type, const void *src, unsigned index)
|
||||
|
||||
|
||||
void
|
||||
write_elem(union lp_type type, void *dst, unsigned index, double value)
|
||||
write_elem(struct lp_type type, void *dst, unsigned index, double value)
|
||||
{
|
||||
assert(index < type.length);
|
||||
if(!type.sign && value < 0.0)
|
||||
@@ -184,7 +184,7 @@ write_elem(union lp_type type, void *dst, unsigned index, double value)
|
||||
|
||||
|
||||
void
|
||||
random_elem(union lp_type type, void *dst, unsigned index)
|
||||
random_elem(struct lp_type type, void *dst, unsigned index)
|
||||
{
|
||||
double value;
|
||||
assert(index < type.length);
|
||||
@@ -209,7 +209,7 @@ random_elem(union lp_type type, void *dst, unsigned index)
|
||||
|
||||
|
||||
void
|
||||
read_vec(union lp_type type, const void *src, double *dst)
|
||||
read_vec(struct lp_type type, const void *src, double *dst)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < type.length; ++i)
|
||||
@@ -218,7 +218,7 @@ read_vec(union lp_type type, const void *src, double *dst)
|
||||
|
||||
|
||||
void
|
||||
write_vec(union lp_type type, void *dst, const double *src)
|
||||
write_vec(struct lp_type type, void *dst, const double *src)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < type.length; ++i)
|
||||
@@ -234,7 +234,7 @@ random_float(void)
|
||||
|
||||
|
||||
void
|
||||
random_vec(union lp_type type, void *dst)
|
||||
random_vec(struct lp_type type, void *dst)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < type.length; ++i)
|
||||
@@ -243,7 +243,7 @@ random_vec(union lp_type type, void *dst)
|
||||
|
||||
|
||||
boolean
|
||||
compare_vec_with_eps(union lp_type type, const void *res, const void *ref, double eps)
|
||||
compare_vec_with_eps(struct lp_type type, const void *res, const void *ref, double eps)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < type.length; ++i) {
|
||||
@@ -259,7 +259,7 @@ compare_vec_with_eps(union lp_type type, const void *res, const void *ref, doubl
|
||||
|
||||
|
||||
boolean
|
||||
compare_vec(union lp_type type, const void *res, const void *ref)
|
||||
compare_vec(struct lp_type type, const void *res, const void *ref)
|
||||
{
|
||||
double eps = lp_const_eps(type);
|
||||
return compare_vec_with_eps(type, res, ref, eps);
|
||||
@@ -267,7 +267,7 @@ compare_vec(union lp_type type, const void *res, const void *ref)
|
||||
|
||||
|
||||
void
|
||||
dump_vec(FILE *fp, union lp_type type, const void *src)
|
||||
dump_vec(FILE *fp, struct lp_type type, const void *src)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 0; i < type.length; ++i) {
|
||||
|
||||
@@ -1654,7 +1654,7 @@ lp_c_sampler_soa_destroy(struct lp_build_sampler_soa *sampler)
|
||||
static void
|
||||
lp_c_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *_sampler,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
unsigned unit,
|
||||
unsigned num_coords,
|
||||
const LLVMValueRef *coords,
|
||||
|
||||
@@ -149,7 +149,7 @@ lp_llvm_sampler_soa_destroy(struct lp_build_sampler_soa *sampler)
|
||||
static void
|
||||
lp_llvm_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *base,
|
||||
LLVMBuilderRef builder,
|
||||
union lp_type type,
|
||||
struct lp_type type,
|
||||
unsigned unit,
|
||||
unsigned num_coords,
|
||||
const LLVMValueRef *coords,
|
||||
|
||||
Reference in New Issue
Block a user