mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 06:29:05 +00:00
Have ConstantExprs upgrade opcodes the same way as instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31841 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1506,9 +1506,19 @@ inline unsigned BytecodeReader::upgradeCEOpcodes(
|
|||||||
Opcode = 10; // Div
|
Opcode = 10; // Div
|
||||||
else if (Opcode >=13 && Opcode <= 15) // URem through FRem
|
else if (Opcode >=13 && Opcode <= 15) // URem through FRem
|
||||||
Opcode = 11; // Rem
|
Opcode = 11; // Rem
|
||||||
else if (Opcode > 15) // Everything above FRem
|
else if (Opcode >= 16 && Opcode <= 35) // And through Shr
|
||||||
// Adjust for new instruction codes
|
// Adjust for new instruction codes
|
||||||
Opcode -= 4;
|
Opcode -= 4;
|
||||||
|
else if (Opcode >= 36 && Opcode <= 42) // Everything after Select
|
||||||
|
// In vers 6 bytecode we eliminated the placeholders for the obsolete
|
||||||
|
// VAARG and VANEXT instructions. Consequently those two slots were
|
||||||
|
// filled starting with Select (36) which was 34. So now we only need
|
||||||
|
// to subtract two. This circumvents hitting opcodes 32 and 33
|
||||||
|
Opcode -= 2;
|
||||||
|
else { // Opcode < 10 or > 42
|
||||||
|
// No upgrade necessary.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Opcode) {
|
switch (Opcode) {
|
||||||
|
Reference in New Issue
Block a user