Commit 581751bb authored by Alyssa Rosenzweig's avatar Alyssa Rosenzweig
Browse files

Revert "pan/bi: Fix load_const of 1-bit booleans"

This reverts commit 29d319c7

.

Now that we use nir_lower_bool_to_bitsize, we don't see 1-bit booleans
anymore, so the issue this fixed doesn't apply. Actually, that issue was
(in part) why I started looking into boolean handling in the first
place.

Signed-off-by: Alyssa Rosenzweig's avatarAlyssa Rosenzweig <alyssa@collabora.com>
parent c0f34fa1
Pipeline #484800 waiting for manual action with stages
in 17 minutes and 21 seconds
......@@ -1455,9 +1455,7 @@ bi_emit_load_const(bi_builder *b, nir_load_const_instr *instr)
uint32_t acc = 0;
for (unsigned i = 0; i < instr->def.num_components; ++i) {
uint32_t v = nir_const_value_as_uint(instr->value[i], instr->def.bit_size);
v = bi_extend_constant(v, instr->def.bit_size);
unsigned v = nir_const_value_as_uint(instr->value[i], instr->def.bit_size);
acc |= (v << (i * instr->def.bit_size));
}
......
......@@ -761,19 +761,6 @@ bi_temp_reg(bi_context *ctx)
return bi_get_index(ctx->reg_alloc++, true, 0);
}
/* NIR booleans are 1-bit (0/1). For now, backend IR booleans are N-bit
* (0/~0) where N depends on the context. This requires us to sign-extend
* when converting constants from NIR to the backend IR.
*/
static inline uint32_t
bi_extend_constant(uint32_t constant, unsigned bit_size)
{
if (bit_size == 1 && constant != 0)
return ~0;
else
return constant;
}
/* Inline constants automatically, will be lowered out by bi_lower_fau where a
* constant is not allowed. load_const_to_scalar gaurantees that this makes
* sense */
......@@ -781,13 +768,11 @@ bi_extend_constant(uint32_t constant, unsigned bit_size)
static inline bi_index
bi_src_index(nir_src *src)
{
if (nir_src_is_const(*src) && nir_src_bit_size(*src) <= 32) {
uint32_t v = nir_src_as_uint(*src);
return bi_imm_u32(bi_extend_constant(v, nir_src_bit_size(*src)));
} else if (src->is_ssa) {
if (nir_src_is_const(*src) && nir_src_bit_size(*src) <= 32)
return bi_imm_u32(nir_src_as_uint(*src));
else if (src->is_ssa)
return bi_get_index(src->ssa->index, false, 0);
} else {
else {
assert(!src->reg.indirect);
return bi_get_index(src->reg.reg->index, true, 0);
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment