Browse Source

shader: Fix BFE s32 undefined check

Our unit tests were hitting this exception.
nce_cpp
ameerj 5 years ago
parent
commit
90ff800962
  1. 2
      src/shader_recompiler/ir_opt/constant_propagation_pass.cpp

2
src/shader_recompiler/ir_opt/constant_propagation_pass.cpp

@ -565,7 +565,7 @@ void ConstantPropagation(IR::Block& block, IR::Inst& inst) {
const size_t back_shift{static_cast<size_t>(shift) + static_cast<size_t>(count)}; const size_t back_shift{static_cast<size_t>(shift) + static_cast<size_t>(count)};
const size_t left_shift{32 - back_shift}; const size_t left_shift{32 - back_shift};
const size_t right_shift{static_cast<size_t>(32 - count)}; const size_t right_shift{static_cast<size_t>(32 - count)};
if (back_shift >= 32 || left_shift >= 32 || right_shift >= 32) {
if (back_shift > 32 || left_shift >= 32 || right_shift >= 32) {
throw LogicError("Undefined result in {}({}, {}, {})", IR::Opcode::BitFieldSExtract, throw LogicError("Undefined result in {}({}, {}, {})", IR::Opcode::BitFieldSExtract,
base, shift, count); base, shift, count);
} }

Loading…
Cancel
Save