nir: Switch to using 1-bit Booleans for almost everything

This is a squash of a few distinct changes:

    glsl,spirv: Generate 1-bit Booleans

    Revert "Use 32-bit opcodes in the NIR producers and optimizations"

    Revert "nir/builder: Generate 32-bit bool opcodes transparently"

    nir/builder: Generate 1-bit Booleans in nir_build_imm_bool

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Jason Ekstrand
2018-10-19 11:14:47 -05:00
committed by Jason Ekstrand
parent 11dc130779
commit 44227453ec
13 changed files with 96 additions and 111 deletions

View File

@@ -212,9 +212,9 @@ nir_imm_bool(nir_builder *build, bool x)
nir_const_value v;
memset(&v, 0, sizeof(v));
v.u32[0] = x ? NIR_TRUE : NIR_FALSE;
v.b[0] = x;
return nir_build_imm(build, 1, 32, v);
return nir_build_imm(build, 1, 1, v);
}
static inline nir_ssa_def *
@@ -976,13 +976,13 @@ nir_load_param(nir_builder *build, uint32_t param_idx)
static inline nir_ssa_def *
nir_f2b(nir_builder *build, nir_ssa_def *f)
{
return nir_f2b32(build, f);
return nir_f2b1(build, f);
}
static inline nir_ssa_def *
nir_i2b(nir_builder *build, nir_ssa_def *i)
{
return nir_i2b32(build, i);
return nir_i2b1(build, i);
}
static inline nir_ssa_def *