diff options
author | Jason Ekstrand <[email protected]> | 2019-06-25 20:33:46 -0500 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2019-07-10 00:20:59 +0000 |
commit | 3acddc733f1b71c3b02c4f881f3b4326bd06c764 (patch) | |
tree | d78bda02471cd4db3df4dde8befbc6b8472e8704 /src/compiler/nir/nir.c | |
parent | ce5581e23e54be91e4c1ad6a6c5990eca6677ceb (diff) |
nir: Refactor nir_src_as_* constant functions
Now that we have the nir_const_value_as_* helpers, every one of these
functions is effectively the same except for the suffix they use so we
can easily define them with a repeated macro. This also means that
they're inline and the fact that the nir_src is being passed by-value
should no longer really hurt anything.
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler/nir/nir.c')
-rw-r--r-- | src/compiler/nir/nir.c | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index e0fcc17526c..c7413aa64b0 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -1239,98 +1239,6 @@ nir_const_value_as_float(nir_const_value value, unsigned bit_size) } } -int64_t -nir_src_comp_as_int(nir_src src, unsigned comp) -{ - assert(nir_src_is_const(src)); - nir_load_const_instr *load = nir_instr_as_load_const(src.ssa->parent_instr); - - assert(comp < load->def.num_components); - switch (load->def.bit_size) { - /* int1_t uses 0/-1 convention */ - case 1: return -(int)load->value[comp].b; - case 8: return load->value[comp].i8; - case 16: return load->value[comp].i16; - case 32: return load->value[comp].i32; - case 64: return load->value[comp].i64; - default: - unreachable("Invalid bit size"); - } -} - -uint64_t -nir_src_comp_as_uint(nir_src src, unsigned comp) -{ - assert(nir_src_is_const(src)); - nir_load_const_instr *load = nir_instr_as_load_const(src.ssa->parent_instr); - - assert(comp < load->def.num_components); - switch (load->def.bit_size) { - case 1: return load->value[comp].b; - case 8: return load->value[comp].u8; - case 16: return load->value[comp].u16; - case 32: return load->value[comp].u32; - case 64: return load->value[comp].u64; - default: - unreachable("Invalid bit size"); - } -} - -bool -nir_src_comp_as_bool(nir_src src, unsigned comp) -{ - int64_t i = nir_src_comp_as_int(src, comp); - - /* Booleans of any size use 0/-1 convention */ - assert(i == 0 || i == -1); - - return i; -} - -double -nir_src_comp_as_float(nir_src src, unsigned comp) -{ - assert(nir_src_is_const(src)); - nir_load_const_instr *load = nir_instr_as_load_const(src.ssa->parent_instr); - - assert(comp < load->def.num_components); - switch (load->def.bit_size) { - case 16: return _mesa_half_to_float(load->value[comp].u16); - case 32: return load->value[comp].f32; - case 64: return load->value[comp].f64; - default: - unreachable("Invalid bit size"); - } -} - -int64_t -nir_src_as_int(nir_src src) -{ - assert(nir_src_num_components(src) == 1); - return nir_src_comp_as_int(src, 0); -} - -uint64_t -nir_src_as_uint(nir_src src) -{ - assert(nir_src_num_components(src) == 1); - return nir_src_comp_as_uint(src, 0); -} - -bool -nir_src_as_bool(nir_src src) -{ - assert(nir_src_num_components(src) == 1); - return nir_src_comp_as_bool(src, 0); -} - -double -nir_src_as_float(nir_src src) -{ - assert(nir_src_num_components(src) == 1); - return nir_src_comp_as_float(src, 0); -} - nir_const_value * nir_src_as_const_value(nir_src src) { |