gallivm/llvmpipe: rename some constant building functions
This commit is contained in:
parent
c86a499769
commit
185be3a87a
|
@ -361,12 +361,12 @@ lp_build_mul_u8n(LLVMBuilderRef builder,
|
|||
LLVMValueRef c8;
|
||||
LLVMValueRef ab;
|
||||
|
||||
c8 = lp_build_int_const_scalar(i16_type, 8);
|
||||
c8 = lp_build_const_int_vec(i16_type, 8);
|
||||
|
||||
#if 0
|
||||
|
||||
/* a*b/255 ~= (a*(b + 1)) >> 256 */
|
||||
b = LLVMBuildAdd(builder, b, lp_build_int_const_scalar(i16_type, 1), "");
|
||||
b = LLVMBuildAdd(builder, b, lp_build_const_int_vec(i16_type, 1), "");
|
||||
ab = LLVMBuildMul(builder, a, b, "");
|
||||
|
||||
#else
|
||||
|
@ -374,7 +374,7 @@ lp_build_mul_u8n(LLVMBuilderRef builder,
|
|||
/* ab/255 ~= (ab + (ab >> 8) + 0x80) >> 8 */
|
||||
ab = LLVMBuildMul(builder, a, b, "");
|
||||
ab = LLVMBuildAdd(builder, ab, LLVMBuildLShr(builder, ab, c8, ""), "");
|
||||
ab = LLVMBuildAdd(builder, ab, lp_build_int_const_scalar(i16_type, 0x80), "");
|
||||
ab = LLVMBuildAdd(builder, ab, lp_build_const_int_vec(i16_type, 0x80), "");
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -429,7 +429,7 @@ lp_build_mul(struct lp_build_context *bld,
|
|||
}
|
||||
|
||||
if(type.fixed)
|
||||
shift = lp_build_int_const_scalar(type, type.width/2);
|
||||
shift = lp_build_const_int_vec(type, type.width/2);
|
||||
else
|
||||
shift = NULL;
|
||||
|
||||
|
@ -491,7 +491,7 @@ lp_build_mul_imm(struct lp_build_context *bld,
|
|||
* for Inf and NaN.
|
||||
*/
|
||||
unsigned mantissa = lp_mantissa(bld->type);
|
||||
factor = lp_build_int_const_scalar(bld->type, (unsigned long long)shift << mantissa);
|
||||
factor = lp_build_const_int_vec(bld->type, (unsigned long long)shift << mantissa);
|
||||
a = LLVMBuildBitCast(bld->builder, a, lp_build_int_vec_type(bld->type), "");
|
||||
a = LLVMBuildAdd(bld->builder, a, factor, "");
|
||||
a = LLVMBuildBitCast(bld->builder, a, lp_build_vec_type(bld->type), "");
|
||||
|
@ -499,12 +499,12 @@ lp_build_mul_imm(struct lp_build_context *bld,
|
|||
#endif
|
||||
}
|
||||
else {
|
||||
factor = lp_build_const_scalar(bld->type, shift);
|
||||
factor = lp_build_const_vec(bld->type, shift);
|
||||
return LLVMBuildShl(bld->builder, a, factor, "");
|
||||
}
|
||||
}
|
||||
|
||||
factor = lp_build_const_scalar(bld->type, (double)b);
|
||||
factor = lp_build_const_vec(bld->type, (double)b);
|
||||
return lp_build_mul(bld, a, factor);
|
||||
}
|
||||
|
||||
|
@ -567,7 +567,7 @@ lp_build_lerp(struct lp_build_context *bld,
|
|||
* but it will be wrong for other uses. Basically we need a more
|
||||
* powerful lp_type, capable of further distinguishing the values
|
||||
* interpretation from the value storage. */
|
||||
res = LLVMBuildAnd(bld->builder, res, lp_build_int_const_scalar(bld->type, (1 << bld->type.width/2) - 1), "");
|
||||
res = LLVMBuildAnd(bld->builder, res, lp_build_const_int_vec(bld->type, (1 << bld->type.width/2) - 1), "");
|
||||
|
||||
return res;
|
||||
}
|
||||
|
@ -689,7 +689,7 @@ lp_build_abs(struct lp_build_context *bld,
|
|||
/* vector of floats */
|
||||
LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
|
||||
unsigned long long absMask = ~(1ULL << (type.width - 1));
|
||||
LLVMValueRef mask = lp_build_int_const_scalar(type, ((unsigned long long) absMask));
|
||||
LLVMValueRef mask = lp_build_const_int_vec(type, ((unsigned long long) absMask));
|
||||
a = LLVMBuildBitCast(bld->builder, a, int_vec_type, "");
|
||||
a = LLVMBuildAnd(bld->builder, a, mask, "");
|
||||
a = LLVMBuildBitCast(bld->builder, a, vec_type, "");
|
||||
|
@ -751,7 +751,7 @@ lp_build_sgn(struct lp_build_context *bld,
|
|||
/* vector */
|
||||
int_type = lp_build_int_vec_type(type);
|
||||
vec_type = lp_build_vec_type(type);
|
||||
mask = lp_build_int_const_scalar(type, maskBit);
|
||||
mask = lp_build_const_int_vec(type, maskBit);
|
||||
}
|
||||
|
||||
/* Take the sign bit and add it to 1 constant */
|
||||
|
@ -763,7 +763,7 @@ lp_build_sgn(struct lp_build_context *bld,
|
|||
}
|
||||
else
|
||||
{
|
||||
LLVMValueRef minus_one = lp_build_const_scalar(type, -1.0);
|
||||
LLVMValueRef minus_one = lp_build_const_vec(type, -1.0);
|
||||
cond = lp_build_cmp(bld, PIPE_FUNC_GREATER, a, bld->zero);
|
||||
res = lp_build_select(bld, cond, bld->one, minus_one);
|
||||
}
|
||||
|
@ -789,8 +789,8 @@ lp_build_set_sign(struct lp_build_context *bld,
|
|||
const struct lp_type type = bld->type;
|
||||
LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
LLVMValueRef shift = lp_build_int_const_scalar(type, type.width - 1);
|
||||
LLVMValueRef mask = lp_build_int_const_scalar(type,
|
||||
LLVMValueRef shift = lp_build_const_int_vec(type, type.width - 1);
|
||||
LLVMValueRef mask = lp_build_const_int_vec(type,
|
||||
~((unsigned long long) 1 << (type.width - 1)));
|
||||
LLVMValueRef val, res;
|
||||
|
||||
|
@ -1034,7 +1034,7 @@ lp_build_iround(struct lp_build_context *bld,
|
|||
}
|
||||
else {
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
LLVMValueRef mask = lp_build_int_const_scalar(type, (unsigned long long)1 << (type.width - 1));
|
||||
LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1));
|
||||
LLVMValueRef sign;
|
||||
LLVMValueRef half;
|
||||
|
||||
|
@ -1043,7 +1043,7 @@ lp_build_iround(struct lp_build_context *bld,
|
|||
sign = LLVMBuildAnd(bld->builder, sign, mask, "");
|
||||
|
||||
/* sign * 0.5 */
|
||||
half = lp_build_const_scalar(type, 0.5);
|
||||
half = lp_build_const_vec(type, 0.5);
|
||||
half = LLVMBuildBitCast(bld->builder, half, int_vec_type, "");
|
||||
half = LLVMBuildOr(bld->builder, sign, half, "");
|
||||
half = LLVMBuildBitCast(bld->builder, half, vec_type, "");
|
||||
|
@ -1086,18 +1086,18 @@ lp_build_ifloor(struct lp_build_context *bld,
|
|||
/* Take the sign bit and add it to 1 constant */
|
||||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
unsigned mantissa = lp_mantissa(type);
|
||||
LLVMValueRef mask = lp_build_int_const_scalar(type, (unsigned long long)1 << (type.width - 1));
|
||||
LLVMValueRef mask = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1));
|
||||
LLVMValueRef sign;
|
||||
LLVMValueRef offset;
|
||||
|
||||
/* sign = a < 0 ? ~0 : 0 */
|
||||
sign = LLVMBuildBitCast(bld->builder, a, int_vec_type, "");
|
||||
sign = LLVMBuildAnd(bld->builder, sign, mask, "");
|
||||
sign = LLVMBuildAShr(bld->builder, sign, lp_build_int_const_scalar(type, type.width - 1), "");
|
||||
sign = LLVMBuildAShr(bld->builder, sign, lp_build_const_int_vec(type, type.width - 1), "");
|
||||
lp_build_name(sign, "floor.sign");
|
||||
|
||||
/* offset = -0.99999(9)f */
|
||||
offset = lp_build_const_scalar(type, -(double)(((unsigned long long)1 << mantissa) - 1)/((unsigned long long)1 << mantissa));
|
||||
offset = lp_build_const_vec(type, -(double)(((unsigned long long)1 << mantissa) - 1)/((unsigned long long)1 << mantissa));
|
||||
offset = LLVMConstBitCast(offset, int_vec_type);
|
||||
|
||||
/* offset = a < 0 ? -0.99999(9)f : 0.0f */
|
||||
|
@ -1268,7 +1268,7 @@ lp_build_exp(struct lp_build_context *bld,
|
|||
LLVMValueRef x)
|
||||
{
|
||||
/* log2(e) = 1/log(2) */
|
||||
LLVMValueRef log2e = lp_build_const_scalar(bld->type, 1.4426950408889634);
|
||||
LLVMValueRef log2e = lp_build_const_vec(bld->type, 1.4426950408889634);
|
||||
|
||||
return lp_build_mul(bld, log2e, lp_build_exp2(bld, x));
|
||||
}
|
||||
|
@ -1282,7 +1282,7 @@ lp_build_log(struct lp_build_context *bld,
|
|||
LLVMValueRef x)
|
||||
{
|
||||
/* log(2) */
|
||||
LLVMValueRef log2 = lp_build_const_scalar(bld->type, 0.69314718055994529);
|
||||
LLVMValueRef log2 = lp_build_const_vec(bld->type, 0.69314718055994529);
|
||||
|
||||
return lp_build_mul(bld, log2, lp_build_exp2(bld, x));
|
||||
}
|
||||
|
@ -1318,7 +1318,7 @@ lp_build_polynomial(struct lp_build_context *bld,
|
|||
if (type.length == 1)
|
||||
coeff = LLVMConstReal(float_type, coeffs[i]);
|
||||
else
|
||||
coeff = lp_build_const_scalar(type, coeffs[i]);
|
||||
coeff = lp_build_const_vec(type, coeffs[i]);
|
||||
|
||||
if(res)
|
||||
res = lp_build_add(bld, coeff, lp_build_mul(bld, x, res));
|
||||
|
@ -1375,11 +1375,11 @@ lp_build_exp2_approx(struct lp_build_context *bld,
|
|||
|
||||
assert(type.floating && type.width == 32);
|
||||
|
||||
x = lp_build_min(bld, x, lp_build_const_scalar(type, 129.0));
|
||||
x = lp_build_max(bld, x, lp_build_const_scalar(type, -126.99999));
|
||||
x = lp_build_min(bld, x, lp_build_const_vec(type, 129.0));
|
||||
x = lp_build_max(bld, x, lp_build_const_vec(type, -126.99999));
|
||||
|
||||
/* ipart = int(x - 0.5) */
|
||||
ipart = LLVMBuildSub(bld->builder, x, lp_build_const_scalar(type, 0.5f), "");
|
||||
ipart = LLVMBuildSub(bld->builder, x, lp_build_const_vec(type, 0.5f), "");
|
||||
ipart = LLVMBuildFPToSI(bld->builder, ipart, int_vec_type, "");
|
||||
|
||||
/* fpart = x - ipart */
|
||||
|
@ -1389,8 +1389,8 @@ lp_build_exp2_approx(struct lp_build_context *bld,
|
|||
|
||||
if(p_exp2_int_part || p_exp2) {
|
||||
/* expipart = (float) (1 << ipart) */
|
||||
expipart = LLVMBuildAdd(bld->builder, ipart, lp_build_int_const_scalar(type, 127), "");
|
||||
expipart = LLVMBuildShl(bld->builder, expipart, lp_build_int_const_scalar(type, 23), "");
|
||||
expipart = LLVMBuildAdd(bld->builder, ipart, lp_build_const_int_vec(type, 127), "");
|
||||
expipart = LLVMBuildShl(bld->builder, expipart, lp_build_const_int_vec(type, 23), "");
|
||||
expipart = LLVMBuildBitCast(bld->builder, expipart, vec_type, "");
|
||||
}
|
||||
|
||||
|
@ -1456,8 +1456,8 @@ lp_build_log2_approx(struct lp_build_context *bld,
|
|||
LLVMTypeRef vec_type = lp_build_vec_type(type);
|
||||
LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
|
||||
|
||||
LLVMValueRef expmask = lp_build_int_const_scalar(type, 0x7f800000);
|
||||
LLVMValueRef mantmask = lp_build_int_const_scalar(type, 0x007fffff);
|
||||
LLVMValueRef expmask = lp_build_const_int_vec(type, 0x7f800000);
|
||||
LLVMValueRef mantmask = lp_build_const_int_vec(type, 0x007fffff);
|
||||
LLVMValueRef one = LLVMConstBitCast(bld->one, int_vec_type);
|
||||
|
||||
LLVMValueRef i = NULL;
|
||||
|
@ -1482,8 +1482,8 @@ lp_build_log2_approx(struct lp_build_context *bld,
|
|||
}
|
||||
|
||||
if(p_floor_log2 || p_log2) {
|
||||
logexp = LLVMBuildLShr(bld->builder, exp, lp_build_int_const_scalar(type, 23), "");
|
||||
logexp = LLVMBuildSub(bld->builder, logexp, lp_build_int_const_scalar(type, 127), "");
|
||||
logexp = LLVMBuildLShr(bld->builder, exp, lp_build_const_int_vec(type, 23), "");
|
||||
logexp = LLVMBuildSub(bld->builder, logexp, lp_build_const_int_vec(type, 127), "");
|
||||
logexp = LLVMBuildSIToFP(bld->builder, logexp, vec_type, "");
|
||||
}
|
||||
|
||||
|
|
|
@ -263,7 +263,7 @@ lp_build_one(struct lp_type type)
|
|||
if(type.sign)
|
||||
/* TODO: Unfortunately this caused "Tried to create a shift operation
|
||||
* on a non-integer type!" */
|
||||
vec = LLVMConstLShr(vec, lp_build_int_const_scalar(type, 1));
|
||||
vec = LLVMConstLShr(vec, lp_build_const_int_vec(type, 1));
|
||||
#endif
|
||||
|
||||
return vec;
|
||||
|
@ -283,8 +283,8 @@ lp_build_one(struct lp_type type)
|
|||
* Build constant-valued vector from a scalar value.
|
||||
*/
|
||||
LLVMValueRef
|
||||
lp_build_const_scalar(struct lp_type type,
|
||||
double val)
|
||||
lp_build_const_vec(struct lp_type type,
|
||||
double val)
|
||||
{
|
||||
LLVMTypeRef elem_type = lp_build_elem_type(type);
|
||||
LLVMValueRef elems[LP_MAX_VECTOR_LENGTH];
|
||||
|
@ -309,7 +309,7 @@ lp_build_const_scalar(struct lp_type type,
|
|||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_int_const_scalar(struct lp_type type,
|
||||
lp_build_const_int_vec(struct lp_type type,
|
||||
long long val)
|
||||
{
|
||||
LLVMTypeRef elem_type = lp_build_int_elem_type(type);
|
||||
|
|
|
@ -85,13 +85,11 @@ lp_build_one(struct lp_type type);
|
|||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_const_scalar(struct lp_type type,
|
||||
double val);
|
||||
lp_build_const_vec(struct lp_type type, double val);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
lp_build_int_const_scalar(struct lp_type type,
|
||||
long long val);
|
||||
lp_build_const_int_vec(struct lp_type type, long long val);
|
||||
|
||||
|
||||
LLVMValueRef
|
||||
|
|
|
@ -114,13 +114,13 @@ lp_build_clamped_float_to_unsigned_norm(LLVMBuilderRef builder,
|
|||
scale = (double)mask/ubound;
|
||||
bias = (double)((unsigned long long)1 << (mantissa - n));
|
||||
|
||||
res = LLVMBuildMul(builder, src, lp_build_const_scalar(src_type, scale), "");
|
||||
res = LLVMBuildAdd(builder, res, lp_build_const_scalar(src_type, bias), "");
|
||||
res = LLVMBuildMul(builder, src, lp_build_const_vec(src_type, scale), "");
|
||||
res = LLVMBuildAdd(builder, res, lp_build_const_vec(src_type, bias), "");
|
||||
res = LLVMBuildBitCast(builder, res, int_vec_type, "");
|
||||
|
||||
if(dst_width > n) {
|
||||
int shift = dst_width - n;
|
||||
res = LLVMBuildShl(builder, res, lp_build_int_const_scalar(src_type, shift), "");
|
||||
res = LLVMBuildShl(builder, res, lp_build_const_int_vec(src_type, shift), "");
|
||||
|
||||
/* TODO: Fill in the empty lower bits for additional precision? */
|
||||
/* YES: this fixes progs/trivial/tri-z-eq.c.
|
||||
|
@ -130,21 +130,21 @@ lp_build_clamped_float_to_unsigned_norm(LLVMBuilderRef builder,
|
|||
#if 0
|
||||
{
|
||||
LLVMValueRef msb;
|
||||
msb = LLVMBuildLShr(builder, res, lp_build_int_const_scalar(src_type, dst_width - 1), "");
|
||||
msb = LLVMBuildShl(builder, msb, lp_build_int_const_scalar(src_type, shift), "");
|
||||
msb = LLVMBuildSub(builder, msb, lp_build_int_const_scalar(src_type, 1), "");
|
||||
msb = LLVMBuildLShr(builder, res, lp_build_const_int_vec(src_type, dst_width - 1), "");
|
||||
msb = LLVMBuildShl(builder, msb, lp_build_const_int_vec(src_type, shift), "");
|
||||
msb = LLVMBuildSub(builder, msb, lp_build_const_int_vec(src_type, 1), "");
|
||||
res = LLVMBuildOr(builder, res, msb, "");
|
||||
}
|
||||
#elif 0
|
||||
while(shift > 0) {
|
||||
res = LLVMBuildOr(builder, res, LLVMBuildLShr(builder, res, lp_build_int_const_scalar(src_type, n), ""), "");
|
||||
res = LLVMBuildOr(builder, res, LLVMBuildLShr(builder, res, lp_build_const_int_vec(src_type, n), ""), "");
|
||||
shift -= n;
|
||||
n *= 2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
res = LLVMBuildAnd(builder, res, lp_build_int_const_scalar(src_type, mask), "");
|
||||
res = LLVMBuildAnd(builder, res, lp_build_const_int_vec(src_type, mask), "");
|
||||
|
||||
return res;
|
||||
}
|
||||
|
@ -183,10 +183,10 @@ lp_build_unsigned_norm_to_float(LLVMBuilderRef builder,
|
|||
|
||||
if(src_width > mantissa) {
|
||||
int shift = src_width - mantissa;
|
||||
res = LLVMBuildLShr(builder, res, lp_build_int_const_scalar(dst_type, shift), "");
|
||||
res = LLVMBuildLShr(builder, res, lp_build_const_int_vec(dst_type, shift), "");
|
||||
}
|
||||
|
||||
bias_ = lp_build_const_scalar(dst_type, bias);
|
||||
bias_ = lp_build_const_vec(dst_type, bias);
|
||||
|
||||
res = LLVMBuildOr(builder,
|
||||
res,
|
||||
|
@ -195,7 +195,7 @@ lp_build_unsigned_norm_to_float(LLVMBuilderRef builder,
|
|||
res = LLVMBuildBitCast(builder, res, vec_type, "");
|
||||
|
||||
res = LLVMBuildSub(builder, res, bias_, "");
|
||||
res = LLVMBuildMul(builder, res, lp_build_const_scalar(dst_type, scale), "");
|
||||
res = LLVMBuildMul(builder, res, lp_build_const_vec(dst_type, scale), "");
|
||||
|
||||
return res;
|
||||
}
|
||||
|
@ -251,7 +251,7 @@ lp_build_conv(LLVMBuilderRef builder,
|
|||
if(dst_min == 0.0)
|
||||
thres = bld.zero;
|
||||
else
|
||||
thres = lp_build_const_scalar(src_type, dst_min);
|
||||
thres = lp_build_const_vec(src_type, dst_min);
|
||||
for(i = 0; i < num_tmps; ++i)
|
||||
tmp[i] = lp_build_max(&bld, tmp[i], thres);
|
||||
}
|
||||
|
@ -260,7 +260,7 @@ lp_build_conv(LLVMBuilderRef builder,
|
|||
if(dst_max == 1.0)
|
||||
thres = bld.one;
|
||||
else
|
||||
thres = lp_build_const_scalar(src_type, dst_max);
|
||||
thres = lp_build_const_vec(src_type, dst_max);
|
||||
for(i = 0; i < num_tmps; ++i)
|
||||
tmp[i] = lp_build_min(&bld, tmp[i], thres);
|
||||
}
|
||||
|
@ -288,7 +288,7 @@ lp_build_conv(LLVMBuilderRef builder,
|
|||
LLVMTypeRef tmp_vec_type;
|
||||
|
||||
if (dst_scale != 1.0) {
|
||||
LLVMValueRef scale = lp_build_const_scalar(tmp_type, dst_scale);
|
||||
LLVMValueRef scale = lp_build_const_vec(tmp_type, dst_scale);
|
||||
for(i = 0; i < num_tmps; ++i)
|
||||
tmp[i] = LLVMBuildMul(builder, tmp[i], scale, "");
|
||||
}
|
||||
|
@ -315,7 +315,7 @@ lp_build_conv(LLVMBuilderRef builder,
|
|||
|
||||
/* FIXME: compensate different offsets too */
|
||||
if(src_shift > dst_shift) {
|
||||
LLVMValueRef shift = lp_build_int_const_scalar(tmp_type, src_shift - dst_shift);
|
||||
LLVMValueRef shift = lp_build_const_int_vec(tmp_type, src_shift - dst_shift);
|
||||
for(i = 0; i < num_tmps; ++i)
|
||||
if(src_type.sign)
|
||||
tmp[i] = LLVMBuildAShr(builder, tmp[i], shift, "");
|
||||
|
@ -388,7 +388,7 @@ lp_build_conv(LLVMBuilderRef builder,
|
|||
}
|
||||
|
||||
if (src_scale != 1.0) {
|
||||
LLVMValueRef scale = lp_build_const_scalar(tmp_type, 1.0/src_scale);
|
||||
LLVMValueRef scale = lp_build_const_vec(tmp_type, 1.0/src_scale);
|
||||
for(i = 0; i < num_tmps; ++i)
|
||||
tmp[i] = LLVMBuildMul(builder, tmp[i], scale, "");
|
||||
}
|
||||
|
@ -400,7 +400,7 @@ lp_build_conv(LLVMBuilderRef builder,
|
|||
|
||||
/* FIXME: compensate different offsets too */
|
||||
if(src_shift < dst_shift) {
|
||||
LLVMValueRef shift = lp_build_int_const_scalar(tmp_type, dst_shift - src_shift);
|
||||
LLVMValueRef shift = lp_build_const_int_vec(tmp_type, dst_shift - src_shift);
|
||||
for(i = 0; i < num_tmps; ++i)
|
||||
tmp[i] = LLVMBuildShl(builder, tmp[i], shift, "");
|
||||
}
|
||||
|
|
|
@ -185,11 +185,11 @@ lp_build_depth_test(LLVMBuilderRef builder,
|
|||
if(padding_left || padding_right) {
|
||||
const unsigned long long mask_left = ((unsigned long long)1 << (format_desc->block.bits - padding_left)) - 1;
|
||||
const unsigned long long mask_right = ((unsigned long long)1 << (padding_right)) - 1;
|
||||
z_bitmask = lp_build_int_const_scalar(type, mask_left ^ mask_right);
|
||||
z_bitmask = lp_build_const_int_vec(type, mask_left ^ mask_right);
|
||||
}
|
||||
|
||||
if(padding_left)
|
||||
src = LLVMBuildLShr(builder, src, lp_build_int_const_scalar(type, padding_left), "");
|
||||
src = LLVMBuildLShr(builder, src, lp_build_const_int_vec(type, padding_left), "");
|
||||
if(padding_right)
|
||||
src = LLVMBuildAnd(builder, src, z_bitmask, "");
|
||||
if(padding_left || padding_right)
|
||||
|
|
|
@ -114,10 +114,10 @@ lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
|
|||
case UTIL_FORMAT_TYPE_UNSIGNED:
|
||||
if(type.floating) {
|
||||
if(start)
|
||||
input = LLVMBuildLShr(builder, input, lp_build_int_const_scalar(type, start), "");
|
||||
input = LLVMBuildLShr(builder, input, lp_build_const_int_vec(type, start), "");
|
||||
if(stop < format_desc->block.bits) {
|
||||
unsigned mask = ((unsigned long long)1 << width) - 1;
|
||||
input = LLVMBuildAnd(builder, input, lp_build_int_const_scalar(type, mask), "");
|
||||
input = LLVMBuildAnd(builder, input, lp_build_const_int_vec(type, mask), "");
|
||||
}
|
||||
|
||||
if(format_desc->channel[chan].normalized)
|
||||
|
|
|
@ -289,17 +289,17 @@ pos_update(struct lp_build_interp_soa_context *bld, int quad_index)
|
|||
/* top-right or bottom-right quad in block */
|
||||
/* build x += xstep */
|
||||
x = lp_build_add(&bld->base, x,
|
||||
lp_build_const_scalar(bld->base.type, xstep));
|
||||
lp_build_const_vec(bld->base.type, xstep));
|
||||
}
|
||||
|
||||
if (quad_index == 2) {
|
||||
/* bottom-left quad in block */
|
||||
/* build y += ystep */
|
||||
y = lp_build_add(&bld->base, y,
|
||||
lp_build_const_scalar(bld->base.type, ystep));
|
||||
lp_build_const_vec(bld->base.type, ystep));
|
||||
/* build x -= xstep */
|
||||
x = lp_build_sub(&bld->base, x,
|
||||
lp_build_const_scalar(bld->base.type, xstep));
|
||||
lp_build_const_vec(bld->base.type, xstep));
|
||||
}
|
||||
|
||||
lp_build_name(x, "pos.x");
|
||||
|
|
|
@ -193,7 +193,7 @@ lp_build_compare(LLVMBuilderRef builder,
|
|||
if(table[func].gt &&
|
||||
((type.width == 8 && type.sign) ||
|
||||
(type.width != 8 && !type.sign))) {
|
||||
LLVMValueRef msb = lp_build_int_const_scalar(type, (unsigned long long)1 << (type.width - 1));
|
||||
LLVMValueRef msb = lp_build_const_int_vec(type, (unsigned long long)1 << (type.width - 1));
|
||||
a = LLVMBuildXor(builder, a, msb, "");
|
||||
b = LLVMBuildXor(builder, b, msb, "");
|
||||
}
|
||||
|
|
|
@ -164,7 +164,7 @@ lp_build_unpack2(LLVMBuilderRef builder,
|
|||
|
||||
if(dst_type.sign && src_type.sign) {
|
||||
/* Replicate the sign bit in the most significant bits */
|
||||
msb = LLVMBuildAShr(builder, src, lp_build_int_const_scalar(src_type, src_type.width - 1), "");
|
||||
msb = LLVMBuildAShr(builder, src, lp_build_const_int_vec(src_type, src_type.width - 1), "");
|
||||
}
|
||||
else
|
||||
/* Most significant bits always zero */
|
||||
|
@ -361,7 +361,7 @@ lp_build_packs2(LLVMBuilderRef builder,
|
|||
if(clamp) {
|
||||
struct lp_build_context bld;
|
||||
unsigned dst_bits = dst_type.sign ? dst_type.width - 1 : dst_type.width;
|
||||
LLVMValueRef dst_max = lp_build_int_const_scalar(src_type, ((unsigned long long)1 << dst_bits) - 1);
|
||||
LLVMValueRef dst_max = lp_build_const_int_vec(src_type, ((unsigned long long)1 << dst_bits) - 1);
|
||||
lp_build_context_init(&bld, builder, src_type);
|
||||
lo = lp_build_min(&bld, lo, dst_max);
|
||||
hi = lp_build_min(&bld, hi, dst_max);
|
||||
|
|
|
@ -173,7 +173,7 @@ lp_build_sample_offset(struct lp_build_context *bld,
|
|||
LLVMValueRef x_stride;
|
||||
LLVMValueRef offset;
|
||||
|
||||
x_stride = lp_build_const_scalar(bld->type, format_desc->block.bits/8);
|
||||
x_stride = lp_build_const_vec(bld->type, format_desc->block.bits/8);
|
||||
|
||||
if(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) {
|
||||
LLVMValueRef x_lo, x_hi;
|
||||
|
@ -195,9 +195,9 @@ lp_build_sample_offset(struct lp_build_context *bld,
|
|||
y_hi = LLVMBuildLShr(bld->builder, y, bld->one, "");
|
||||
|
||||
x_stride_lo = x_stride;
|
||||
y_stride_lo = lp_build_const_scalar(bld->type, 2*format_desc->block.bits/8);
|
||||
y_stride_lo = lp_build_const_vec(bld->type, 2*format_desc->block.bits/8);
|
||||
|
||||
x_stride_hi = lp_build_const_scalar(bld->type, 4*format_desc->block.bits/8);
|
||||
x_stride_hi = lp_build_const_vec(bld->type, 4*format_desc->block.bits/8);
|
||||
y_stride_hi = LLVMBuildShl(bld->builder, y_stride, bld->one, "");
|
||||
|
||||
x_offset_lo = lp_build_mul(bld, x_lo, x_stride_lo);
|
||||
|
|
|
@ -292,7 +292,7 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
|
|||
int chan;
|
||||
for (chan = 0; chan < 4; chan++) {
|
||||
LLVMValueRef border_chan =
|
||||
lp_build_const_scalar(bld->texel_type,
|
||||
lp_build_const_vec(bld->texel_type,
|
||||
bld->static_state->border_color[chan]);
|
||||
texel[chan] = lp_build_select(&bld->texel_bld, use_border,
|
||||
border_chan, texel[chan]);
|
||||
|
@ -457,8 +457,8 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld,
|
|||
struct lp_build_context *coord_bld = &bld->coord_bld;
|
||||
struct lp_build_context *int_coord_bld = &bld->int_coord_bld;
|
||||
struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld;
|
||||
LLVMValueRef two = lp_build_const_scalar(coord_bld->type, 2.0);
|
||||
LLVMValueRef half = lp_build_const_scalar(coord_bld->type, 0.5);
|
||||
LLVMValueRef two = lp_build_const_vec(coord_bld->type, 2.0);
|
||||
LLVMValueRef half = lp_build_const_vec(coord_bld->type, 0.5);
|
||||
LLVMValueRef length_f = lp_build_int_to_float(coord_bld, length);
|
||||
LLVMValueRef length_minus_one = lp_build_sub(uint_coord_bld, length, uint_coord_bld->one);
|
||||
LLVMValueRef length_f_minus_one = lp_build_sub(coord_bld, length_f, coord_bld->one);
|
||||
|
@ -512,7 +512,7 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld,
|
|||
else {
|
||||
LLVMValueRef min, max;
|
||||
/* clamp to [0.5, length - 0.5] */
|
||||
min = lp_build_const_scalar(coord_bld->type, 0.5F);
|
||||
min = lp_build_const_vec(coord_bld->type, 0.5F);
|
||||
max = lp_build_sub(coord_bld, length_f, min);
|
||||
coord = lp_build_clamp(coord_bld, coord, min, max);
|
||||
}
|
||||
|
@ -533,7 +533,7 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld,
|
|||
if (bld->static_state->normalized_coords) {
|
||||
/* min = -1.0 / (2 * length) = -0.5 / length */
|
||||
min = lp_build_mul(coord_bld,
|
||||
lp_build_const_scalar(coord_bld->type, -0.5F),
|
||||
lp_build_const_vec(coord_bld->type, -0.5F),
|
||||
lp_build_rcp(coord_bld, length_f));
|
||||
/* max = 1.0 - min */
|
||||
max = lp_build_sub(coord_bld, coord_bld->one, min);
|
||||
|
@ -545,7 +545,7 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld,
|
|||
}
|
||||
else {
|
||||
/* clamp to [-0.5, length + 0.5] */
|
||||
min = lp_build_const_scalar(coord_bld->type, -0.5F);
|
||||
min = lp_build_const_vec(coord_bld->type, -0.5F);
|
||||
max = lp_build_sub(coord_bld, length_f, min);
|
||||
coord = lp_build_clamp(coord_bld, coord, min, max);
|
||||
coord = lp_build_sub(coord_bld, coord, half);
|
||||
|
@ -620,7 +620,7 @@ lp_build_sample_wrap_linear(struct lp_build_sample_context *bld,
|
|||
LLVMValueRef min, max;
|
||||
/* min = -1.0 / (2 * length) = -0.5 / length */
|
||||
min = lp_build_mul(coord_bld,
|
||||
lp_build_const_scalar(coord_bld->type, -0.5F),
|
||||
lp_build_const_vec(coord_bld->type, -0.5F),
|
||||
lp_build_rcp(coord_bld, length_f));
|
||||
/* max = 1.0 - min */
|
||||
max = lp_build_sub(coord_bld, coord_bld->one, min);
|
||||
|
@ -665,7 +665,7 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld,
|
|||
struct lp_build_context *coord_bld = &bld->coord_bld;
|
||||
struct lp_build_context *int_coord_bld = &bld->int_coord_bld;
|
||||
struct lp_build_context *uint_coord_bld = &bld->uint_coord_bld;
|
||||
LLVMValueRef two = lp_build_const_scalar(coord_bld->type, 2.0);
|
||||
LLVMValueRef two = lp_build_const_vec(coord_bld->type, 2.0);
|
||||
LLVMValueRef length_f = lp_build_int_to_float(coord_bld, length);
|
||||
LLVMValueRef length_minus_one = lp_build_sub(uint_coord_bld, length, uint_coord_bld->one);
|
||||
LLVMValueRef length_f_minus_one = lp_build_sub(coord_bld, length_f, coord_bld->one);
|
||||
|
@ -708,7 +708,7 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld,
|
|||
}
|
||||
else {
|
||||
/* clamp to [0.5, length - 0.5] */
|
||||
min = lp_build_const_scalar(coord_bld->type, 0.5F);
|
||||
min = lp_build_const_vec(coord_bld->type, 0.5F);
|
||||
max = lp_build_sub(coord_bld, length_f, min);
|
||||
}
|
||||
/* coord = clamp(coord, min, max) */
|
||||
|
@ -724,7 +724,7 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld,
|
|||
if (bld->static_state->normalized_coords) {
|
||||
/* min = -1.0 / (2 * length) = -0.5 / length */
|
||||
min = lp_build_mul(coord_bld,
|
||||
lp_build_const_scalar(coord_bld->type, -0.5F),
|
||||
lp_build_const_vec(coord_bld->type, -0.5F),
|
||||
lp_build_rcp(coord_bld, length_f));
|
||||
/* max = length - min */
|
||||
max = lp_build_sub(coord_bld, length_f, min);
|
||||
|
@ -733,7 +733,7 @@ lp_build_sample_wrap_nearest(struct lp_build_sample_context *bld,
|
|||
}
|
||||
else {
|
||||
/* clamp to [-0.5, length + 0.5] */
|
||||
min = lp_build_const_scalar(coord_bld->type, -0.5F);
|
||||
min = lp_build_const_vec(coord_bld->type, -0.5F);
|
||||
max = lp_build_sub(coord_bld, length_f, min);
|
||||
}
|
||||
/* coord = clamp(coord, min, max) */
|
||||
|
@ -1226,7 +1226,7 @@ static LLVMValueRef
|
|||
lp_build_cube_ima(struct lp_build_context *coord_bld, LLVMValueRef coord)
|
||||
{
|
||||
/* ima = -0.5 / abs(coord); */
|
||||
LLVMValueRef negHalf = lp_build_const_scalar(coord_bld->type, -0.5);
|
||||
LLVMValueRef negHalf = lp_build_const_vec(coord_bld->type, -0.5);
|
||||
LLVMValueRef absCoord = lp_build_abs(coord_bld, coord);
|
||||
LLVMValueRef ima = lp_build_mul(coord_bld, negHalf,
|
||||
lp_build_rcp(coord_bld, absCoord));
|
||||
|
@ -1246,7 +1246,7 @@ lp_build_cube_coord(struct lp_build_context *coord_bld,
|
|||
LLVMValueRef coord, LLVMValueRef ima)
|
||||
{
|
||||
/* return negate(coord) * ima * sign + 0.5; */
|
||||
LLVMValueRef half = lp_build_const_scalar(coord_bld->type, 0.5);
|
||||
LLVMValueRef half = lp_build_const_vec(coord_bld->type, 0.5);
|
||||
LLVMValueRef res;
|
||||
|
||||
assert(negate_coord == +1 || negate_coord == -1);
|
||||
|
@ -1708,7 +1708,7 @@ lp_build_rgba8_to_f32_soa(LLVMBuilderRef builder,
|
|||
LLVMValueRef packed,
|
||||
LLVMValueRef *rgba)
|
||||
{
|
||||
LLVMValueRef mask = lp_build_int_const_scalar(dst_type, 0xff);
|
||||
LLVMValueRef mask = lp_build_const_int_vec(dst_type, 0xff);
|
||||
unsigned chan;
|
||||
|
||||
/* Decode the input vector components */
|
||||
|
@ -1720,7 +1720,7 @@ lp_build_rgba8_to_f32_soa(LLVMBuilderRef builder,
|
|||
input = packed;
|
||||
|
||||
if(start)
|
||||
input = LLVMBuildLShr(builder, input, lp_build_int_const_scalar(dst_type, start), "");
|
||||
input = LLVMBuildLShr(builder, input, lp_build_const_int_vec(dst_type, start), "");
|
||||
|
||||
if(stop < 32)
|
||||
input = LLVMBuildAnd(builder, input, mask, "");
|
||||
|
@ -1782,17 +1782,17 @@ lp_build_sample_2d_linear_aos(struct lp_build_sample_context *bld,
|
|||
t = LLVMBuildFPToSI(builder, t, i32_vec_type, "");
|
||||
|
||||
/* subtract 0.5 (add -128) */
|
||||
i32_c128 = lp_build_int_const_scalar(i32.type, -128);
|
||||
i32_c128 = lp_build_const_int_vec(i32.type, -128);
|
||||
s = LLVMBuildAdd(builder, s, i32_c128, "");
|
||||
t = LLVMBuildAdd(builder, t, i32_c128, "");
|
||||
|
||||
/* compute floor (shift right 8) */
|
||||
i32_c8 = lp_build_int_const_scalar(i32.type, 8);
|
||||
i32_c8 = lp_build_const_int_vec(i32.type, 8);
|
||||
s_ipart = LLVMBuildAShr(builder, s, i32_c8, "");
|
||||
t_ipart = LLVMBuildAShr(builder, t, i32_c8, "");
|
||||
|
||||
/* compute fractional part (AND with 0xff) */
|
||||
i32_c255 = lp_build_int_const_scalar(i32.type, 255);
|
||||
i32_c255 = lp_build_const_int_vec(i32.type, 255);
|
||||
s_fpart = LLVMBuildAnd(builder, s, i32_c255, "");
|
||||
t_fpart = LLVMBuildAnd(builder, t, i32_c255, "");
|
||||
|
||||
|
@ -1959,7 +1959,7 @@ lp_build_sample_compare(struct lp_build_sample_context *bld,
|
|||
}
|
||||
|
||||
assert(res);
|
||||
res = lp_build_mul(texel_bld, res, lp_build_const_scalar(texel_bld->type, 0.25));
|
||||
res = lp_build_mul(texel_bld, res, lp_build_const_vec(texel_bld->type, 0.25));
|
||||
|
||||
/* XXX returning result for default GL_DEPTH_TEXTURE_MODE = GL_LUMINANCE */
|
||||
for(chan = 0; chan < 3; ++chan)
|
||||
|
|
|
@ -144,9 +144,9 @@ lp_build_broadcast_aos(struct lp_build_context *bld,
|
|||
#endif
|
||||
|
||||
if(shift > 0)
|
||||
tmp = LLVMBuildLShr(bld->builder, a, lp_build_int_const_scalar(type4, shift*type.width), "");
|
||||
tmp = LLVMBuildLShr(bld->builder, a, lp_build_const_int_vec(type4, shift*type.width), "");
|
||||
if(shift < 0)
|
||||
tmp = LLVMBuildShl(bld->builder, a, lp_build_int_const_scalar(type4, -shift*type.width), "");
|
||||
tmp = LLVMBuildShl(bld->builder, a, lp_build_const_int_vec(type4, -shift*type.width), "");
|
||||
|
||||
assert(tmp);
|
||||
if(tmp)
|
||||
|
|
|
@ -475,7 +475,7 @@ emit_store(
|
|||
break;
|
||||
|
||||
case TGSI_SAT_MINUS_PLUS_ONE:
|
||||
value = lp_build_max(&bld->base, value, lp_build_const_scalar(bld->base.type, -1.0));
|
||||
value = lp_build_max(&bld->base, value, lp_build_const_vec(bld->base.type, -1.0));
|
||||
value = lp_build_min(&bld->base, value, bld->base.one);
|
||||
break;
|
||||
|
||||
|
@ -996,7 +996,7 @@ emit_instruction(
|
|||
src0 = emit_fetch( bld, inst, 0, chan_index );
|
||||
src1 = emit_fetch( bld, inst, 1, chan_index );
|
||||
src2 = emit_fetch( bld, inst, 2, chan_index );
|
||||
tmp1 = lp_build_const_scalar(bld->base.type, 0.5);
|
||||
tmp1 = lp_build_const_vec(bld->base.type, 0.5);
|
||||
tmp0 = lp_build_cmp( &bld->base, PIPE_FUNC_GREATER, src2, tmp1);
|
||||
dst0[chan_index] = lp_build_select( &bld->base, tmp0, src0, src1 );
|
||||
}
|
||||
|
@ -1713,7 +1713,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
|
|||
assert(num_immediates < LP_MAX_IMMEDIATES);
|
||||
for( i = 0; i < size; ++i )
|
||||
bld.immediates[num_immediates][i] =
|
||||
lp_build_const_scalar(type, parse.FullToken.FullImmediate.u[i].Float);
|
||||
lp_build_const_vec(type, parse.FullToken.FullImmediate.u[i].Float);
|
||||
for( i = size; i < 4; ++i )
|
||||
bld.immediates[num_immediates][i] = bld.base.undef;
|
||||
num_immediates++;
|
||||
|
|
|
@ -252,7 +252,7 @@ generate_tri_edge_mask(LLVMBuilderRef builder,
|
|||
LLVMConstInt(LLVMInt32Type(), INT_MIN, 0),
|
||||
"");
|
||||
|
||||
in_out_mask = lp_build_int_const_scalar(i32_type, ~0);
|
||||
in_out_mask = lp_build_const_int_vec(i32_type, ~0);
|
||||
|
||||
|
||||
lp_build_flow_scope_declare(flow, &in_out_mask);
|
||||
|
@ -367,7 +367,7 @@ build_int32_vec_const(int value)
|
|||
i32_type.norm = FALSE; /* values are not normalized */
|
||||
i32_type.width = 32; /* 32-bit int values */
|
||||
i32_type.length = 4; /* 4 elements per vector */
|
||||
return lp_build_int_const_scalar(i32_type, value);
|
||||
return lp_build_const_int_vec(i32_type, value);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue