diff options
| author | 2021-03-14 03:41:05 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:23 -0400 | |
| commit | 71f96fa6366dc6dd306a953bca1b958fb32bc55a (patch) | |
| tree | 12e13f9502e4b9510446c967a831e5d4bacb729e /src/shader_recompiler/ir_opt/verification_pass.cpp | |
| parent | spirv: Add SignedZeroInfNanPreserve logic (diff) | |
| download | yuzu-71f96fa6366dc6dd306a953bca1b958fb32bc55a.tar.gz yuzu-71f96fa6366dc6dd306a953bca1b958fb32bc55a.tar.xz yuzu-71f96fa6366dc6dd306a953bca1b958fb32bc55a.zip | |
shader: Implement CAL inlining function calls
Diffstat (limited to 'src/shader_recompiler/ir_opt/verification_pass.cpp')
| -rw-r--r-- | src/shader_recompiler/ir_opt/verification_pass.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/shader_recompiler/ir_opt/verification_pass.cpp b/src/shader_recompiler/ir_opt/verification_pass.cpp index 32b56eb57..4080b37cc 100644 --- a/src/shader_recompiler/ir_opt/verification_pass.cpp +++ b/src/shader_recompiler/ir_opt/verification_pass.cpp | |||
| @@ -11,8 +11,8 @@ | |||
| 11 | 11 | ||
| 12 | namespace Shader::Optimization { | 12 | namespace Shader::Optimization { |
| 13 | 13 | ||
| 14 | static void ValidateTypes(const IR::Function& function) { | 14 | static void ValidateTypes(const IR::Program& program) { |
| 15 | for (const auto& block : function.blocks) { | 15 | for (const auto& block : program.blocks) { |
| 16 | for (const IR::Inst& inst : *block) { | 16 | for (const IR::Inst& inst : *block) { |
| 17 | if (inst.Opcode() == IR::Opcode::Phi) { | 17 | if (inst.Opcode() == IR::Opcode::Phi) { |
| 18 | // Skip validation on phi nodes | 18 | // Skip validation on phi nodes |
| @@ -30,9 +30,9 @@ static void ValidateTypes(const IR::Function& function) { | |||
| 30 | } | 30 | } |
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | static void ValidateUses(const IR::Function& function) { | 33 | static void ValidateUses(const IR::Program& program) { |
| 34 | std::map<IR::Inst*, int> actual_uses; | 34 | std::map<IR::Inst*, int> actual_uses; |
| 35 | for (const auto& block : function.blocks) { | 35 | for (const auto& block : program.blocks) { |
| 36 | for (const IR::Inst& inst : *block) { | 36 | for (const IR::Inst& inst : *block) { |
| 37 | const size_t num_args{inst.NumArgs()}; | 37 | const size_t num_args{inst.NumArgs()}; |
| 38 | for (size_t i = 0; i < num_args; ++i) { | 38 | for (size_t i = 0; i < num_args; ++i) { |
| @@ -45,14 +45,14 @@ static void ValidateUses(const IR::Function& function) { | |||
| 45 | } | 45 | } |
| 46 | for (const auto [inst, uses] : actual_uses) { | 46 | for (const auto [inst, uses] : actual_uses) { |
| 47 | if (inst->UseCount() != uses) { | 47 | if (inst->UseCount() != uses) { |
| 48 | throw LogicError("Invalid uses in block:" /*, IR::DumpFunction(function)*/); | 48 | throw LogicError("Invalid uses in block: {}", IR::DumpProgram(program)); |
| 49 | } | 49 | } |
| 50 | } | 50 | } |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | void VerificationPass(const IR::Function& function) { | 53 | void VerificationPass(const IR::Program& program) { |
| 54 | ValidateTypes(function); | 54 | ValidateTypes(program); |
| 55 | ValidateUses(function); | 55 | ValidateUses(program); |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | } // namespace Shader::Optimization | 58 | } // namespace Shader::Optimization |