citra-emu
/
citra
Archived
1
0
Fork 0

gl_shader_decompiler: some small fixes

- remove unnecessary ";"
- use std::tie for lexicographical ordering
- simplify loop condition
    The offset always has step +1 on each iteration, so it would just hit one of the two boundary anyway
This commit is contained in:
wwylele 2018-03-25 15:49:46 +03:00
parent f8a292f920
commit 4991b15ee5
1 changed files with 10 additions and 14 deletions

View File

@ -42,10 +42,7 @@ struct Subroutine {
std::set<u32> labels; ///< Addresses refereced by JMP instructions. std::set<u32> labels; ///< Addresses refereced by JMP instructions.
bool operator<(const Subroutine& rhs) const { bool operator<(const Subroutine& rhs) const {
if (begin == rhs.begin) { return std::tie(begin, end) < std::tie(rhs.begin, rhs.end);
return end < rhs.end;
}
return begin < rhs.begin;
} }
}; };
@ -122,8 +119,7 @@ private:
if (!inserted) if (!inserted)
return exit_method; return exit_method;
u32 offset = begin; for (u32 offset = begin; offset != end && offset != PROGRAM_END; ++offset) {
for (u32 offset = begin; offset < (begin > end ? PROGRAM_END : end); ++offset) {
const Instruction instr = {program_code[offset]}; const Instruction instr = {program_code[offset]};
switch (instr.opcode.Value()) { switch (instr.opcode.Value()) {
case OpCode::Id::END: { case OpCode::Id::END: {
@ -294,7 +290,7 @@ private:
UNREACHABLE(); UNREACHABLE();
return ""; return "";
} }
}; }
/// Generates code representing a source register. /// Generates code representing a source register.
std::string GetSourceRegister(const SourceRegister& source_reg, std::string GetSourceRegister(const SourceRegister& source_reg,
@ -317,7 +313,7 @@ private:
UNREACHABLE(); UNREACHABLE();
return ""; return "";
} }
}; }
/// Generates code representing a destination register. /// Generates code representing a destination register.
std::string GetDestRegister(const DestRegister& dest_reg) const { std::string GetDestRegister(const DestRegister& dest_reg) const {
@ -332,7 +328,7 @@ private:
UNREACHABLE(); UNREACHABLE();
return ""; return "";
} }
}; }
/// Generates code representing a bool uniform /// Generates code representing a bool uniform
std::string GetUniformBool(u32 index) const { std::string GetUniformBool(u32 index) const {
@ -341,7 +337,7 @@ private:
return "((gl_PrimitiveIDIn == 0) || uniforms.b[15])"; return "((gl_PrimitiveIDIn == 0) || uniforms.b[15])";
} }
return "uniforms.b[" + std::to_string(index) + "]"; return "uniforms.b[" + std::to_string(index) + "]";
}; }
/** /**
* Adds code that calls a subroutine. * Adds code that calls a subroutine.
@ -356,7 +352,7 @@ private:
} else { } else {
shader.AddLine(subroutine.GetName() + "();"); shader.AddLine(subroutine.GetName() + "();");
} }
}; }
/** /**
* Writes code that does an assignment operation. * Writes code that does an assignment operation.
@ -395,7 +391,7 @@ private:
} }
shader.AddLine(dest + " = " + src + ";"); shader.AddLine(dest + " = " + src + ";");
}; }
/** /**
* Compiles a single instruction from PICA to GLSL. * Compiles a single instruction from PICA to GLSL.
@ -769,7 +765,7 @@ private:
} }
} }
return offset + 1; return offset + 1;
}; }
/** /**
* Compiles a range of instructions from PICA to GLSL. * Compiles a range of instructions from PICA to GLSL.
@ -783,7 +779,7 @@ private:
program_counter = CompileInstr(program_counter); program_counter = CompileInstr(program_counter);
} }
return program_counter; return program_counter;
}; }
void Generate() { void Generate() {
if (sanitize_mul) { if (sanitize_mul) {