r600/sfn: Use static_cast when type is already known
authorGert Wollny <gert.wollny@collabora.com>
Thu, 27 Feb 2020 07:12:16 +0000 (08:12 +0100)
committerGert Wollny <gert.wollny@collabora.com>
Mon, 2 Mar 2020 19:00:23 +0000 (20:00 +0100)
In all these cases the type was tested before based, so don't use
dynamic_casts.

Closes #2566

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Tested-by: Mauro Rossi <issor.oruam@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3974>

src/gallium/drivers/r600/sfn/sfn_instruction_cf.cpp
src/gallium/drivers/r600/sfn/sfn_instruction_export.cpp
src/gallium/drivers/r600/sfn/sfn_instruction_fetch.cpp
src/gallium/drivers/r600/sfn/sfn_instruction_misc.cpp
src/gallium/drivers/r600/sfn/sfn_ir_to_assembly.cpp
src/gallium/drivers/r600/sfn/sfn_shader_base.cpp
src/gallium/drivers/r600/sfn/sfn_value_gpr.cpp
src/gallium/drivers/r600/sfn/sfn_valuepool.cpp

index 0c10e162bee43fc9bfa0fc0916d791038da6f879..dc2b37a0df308ec51de3edd1ac339b45cf3cd505 100644 (file)
@@ -56,7 +56,7 @@ void IfInstruction::do_evalue_liveness(LiverangeEvaluator& eval) const
 bool IfInstruction::is_equal_to(const Instruction& lhs) const
 {
    assert(lhs.type() == cond_if);
-   const IfInstruction& l = dynamic_cast<const IfInstruction&>(lhs);
+   const IfInstruction& l = static_cast<const IfInstruction&>(lhs);
    return *l.m_pred == *m_pred;
 }
 
index b109846489f43e9dfc7334d8a73dbcb9848cece8..a841eccdcbbf292d4e1f3271de5b1092415c2134 100644 (file)
@@ -128,7 +128,7 @@ bool WriteScratchInstruction::is_equal_to(const Instruction& lhs) const
 {
    if (lhs.type() != Instruction::mem_wr_scratch)
       return false;
-   const auto& other = dynamic_cast<const WriteScratchInstruction&>(lhs);
+   const auto& other = static_cast<const WriteScratchInstruction&>(lhs);
 
    if (m_address) {
       if (!other.m_address)
index 0fc4f26358de3a1e018ea4fb35cad1952c752ff7..09fd80776c6ace51b1f4134fb1d0a5cf149867dd 100644 (file)
@@ -215,7 +215,7 @@ FetchInstruction::FetchInstruction(GPRVector dst, PValue src, int scratch_size):
    m_dest_swizzle({0,1,2,3})
 {
    if (src->type() == Value::literal) {
-      const auto& lv = dynamic_cast<const LiteralValue&>(*src);
+      const auto& lv = static_cast<const LiteralValue&>(*src);
       m_array_base = lv.value();
       m_indexed = false;
       m_src.reset(new GPRValue(0,0));
index 0eac46abb2fe48740869fceca8eabe6ddce1256d..1c1a98c403469c4d6438fe1e4b0c3dfbfc16435b 100644 (file)
@@ -56,7 +56,7 @@ WaitAck::WaitAck(int nack):
 
 bool WaitAck::is_equal_to(const Instruction& lhs) const
 {
-   const auto& l = dynamic_cast<const WaitAck&>(lhs);
+   const auto& l = static_cast<const WaitAck&>(lhs);
    return m_nack == l.m_nack;
 }
 
index db75b908f5f945129cbea6c01caf9081d170b7e8..56a134c3e724f326753bfcedfa2044a45fc4cf84 100644 (file)
@@ -697,7 +697,7 @@ bool AssemblyFromShaderLegacyImpl::emit_vtx(const FetchInstruction& fetch_instr)
 
    if (addr) {
       if (addr->type() == Value::literal) {
-         const auto& boffs = dynamic_cast<const LiteralValue&>(*addr);
+         const auto& boffs = static_cast<const LiteralValue&>(*addr);
          buffer_offset = boffs.value();
       } else {
          index_mode = bim_zero;
@@ -895,7 +895,7 @@ bool AssemblyFromShaderLegacyImpl::emit_gds(const GDSInstr& instr)
          m_bc->index_loaded[1] = true;
       }
    } else {
-      const LiteralValue& addr_reg = dynamic_cast<const LiteralValue&>(*addr);
+      const LiteralValue& addr_reg = static_cast<const LiteralValue&>(*addr);
       uav_idx = addr_reg.value() >> 2;
    }
 
@@ -972,7 +972,7 @@ bool AssemblyFromShaderLegacyImpl::emit_rat(const RatInstruction& instr)
 
          }
       } else {
-         const LiteralValue& addr_reg = dynamic_cast<const LiteralValue&>(*addr);
+         const LiteralValue& addr_reg = static_cast<const LiteralValue&>(*addr);
          rat_idx = addr_reg.value();
       }
    }
index 0e2d1a8135063e30945875795146c46d4415a012..25db8db8b162830741e1fd17a597f70fa383831a 100644 (file)
@@ -517,7 +517,7 @@ bool ShaderFromNirProcessor::emit_store_scratch(nir_intrinsic_instr* instr)
 
    WriteScratchInstruction *ir = nullptr;
    if (address->type() == Value::literal) {
-      const auto& lv = dynamic_cast<const LiteralValue&>(*address);
+      const auto& lv = static_cast<const LiteralValue&>(*address);
       ir = new WriteScratchInstruction(lv.value(), value, align, align_offset, writemask);
    } else {
       address = from_nir_with_fetch_constant(instr->src[1], 0);
index 4eb5bfb18c48e0ca87f4b3923f7f826e52622c91..7dbf28711805877adbc3d1dc3879254c0a9be58d 100644 (file)
@@ -284,7 +284,7 @@ void GPRArray::do_print(std::ostream& os) const
 
 bool GPRArray::is_equal_to(const Value& other) const
 {
-   const GPRArray& o = dynamic_cast<const GPRArray&>(other);
+   const GPRArray& o = static_cast<const GPRArray&>(other);
    return o.sel() == sel() &&
          o.m_values.size() == m_values.size() &&
          o.m_component_mask == m_component_mask;
index 3c7d9d36c6958df611f8607c13deca8122724fba..3ff386d5a0fc5f99e8888a980e423840d4319251 100644 (file)
@@ -68,7 +68,7 @@ PValue ValuePool::from_nir(const nir_src& v, unsigned component, unsigned swizzl
          auto reg = lookup_register(idx, swizzled, false);
          if (reg) {
             if (reg->type() == Value::gpr_vector) {
-               auto& array = dynamic_cast<GPRArray&>(*reg);
+               auto& array = static_cast<GPRArray&>(*reg);
                reg = array.get_indirect(v.reg.base_offset,
                                         v.reg.indirect ?
                                            from_nir(*v.reg.indirect, 0, 0) : nullptr,
@@ -216,7 +216,7 @@ PValue ValuePool::from_nir(const nir_dest& v, unsigned component)
 
    if (retval->type() == Value::gpr_vector) {
       assert(!v.is_ssa);
-      auto& array = dynamic_cast<GPRArray&>(*retval);
+      auto& array = static_cast<GPRArray&>(*retval);
       retval = array.get_indirect(v.reg.base_offset,
                                   v.reg.indirect ?
                                   from_nir(*v.reg.indirect, 0, 0) : nullptr,
@@ -234,7 +234,7 @@ ValueMap ValuePool::get_temp_registers() const
       if (v.second->type() == Value::gpr)
          result.insert(v.second);
       else if (v.second->type() == Value::gpr_vector) {
-         auto& array = dynamic_cast<GPRArray&>(*v.second);
+         auto& array = static_cast<GPRArray&>(*v.second);
          array.collect_registers(result);
       }
    }