Merge pull request #443 from lioncash/flag

A64: Rearrange flag format/manipulation instructions
This commit is contained in:
Merry 2019-03-06 14:13:59 +00:00 committed by MerryMage
commit 6d7e7c3269
2 changed files with 12 additions and 16 deletions

View file

@ -80,8 +80,13 @@ INST(MSR_reg, "MSR (register)", "11010
//INST(SYSL, "SYSL", "1101010100101oooNNNNMMMMooottttt") //INST(SYSL, "SYSL", "1101010100101oooNNNNMMMMooottttt")
INST(MRS, "MRS", "110101010011poooNNNNMMMMooottttt") INST(MRS, "MRS", "110101010011poooNNNNMMMMooottttt")
// System - PSTATE // System - Flag manipulation instructions
//INST(CFINV, "CFINV", "11010101000000000100000000011111") // ARMv8.4 //INST(CFINV, "CFINV", "11010101000000000100000000011111") // ARMv8.4
//INST(RMIF, "RMIF", "10111010000iiiiii00001nnnnn0IIII") // ARMv8.4
//INST(SETF8, "SETF8", "0011101000000000000010nnnnn01101") // ARMv8.4
//INST(SETF16, "SETF16", "0011101000000000010010nnnnn01101") // ARMv8.4
// System - Flag format instructions
//INST(XAFlag, "XAFlag", "11010101000000000100000000111111") // ARMv8.5 //INST(XAFlag, "XAFlag", "11010101000000000100000000111111") // ARMv8.5
//INST(AXFlag, "AXFlag", "11010101000000000100000001011111") // ARMv8.5 //INST(AXFlag, "AXFlag", "11010101000000000100000001011111") // ARMv8.5
@ -96,13 +101,6 @@ INST(DC_CVAU, "DC CVAU", "11010
INST(DC_CVAP, "DC CVAP", "110101010000101101111100001ttttt") INST(DC_CVAP, "DC CVAP", "110101010000101101111100001ttttt")
INST(DC_CIVAC, "DC CIVAC", "110101010000101101111110001ttttt") INST(DC_CIVAC, "DC CIVAC", "110101010000101101111110001ttttt")
// Data processing - Rotate right into flags
//INST(RMIF, "RMIF", "10111010000iiiiii00001nnnnn0IIII") // ARMv8.4
// Data processing - Evaluate into flags
//INST(SETF8, "SETF8", "0011101000000000000010nnnnn01101") // ARMv8.4
//INST(SETF16, "SETF16", "0011101000000000010010nnnnn01101") // ARMv8.4
// Unconditonal branch (Register) // Unconditonal branch (Register)
INST(BLR, "BLR", "1101011000111111000000nnnnn00000") INST(BLR, "BLR", "1101011000111111000000nnnnn00000")
INST(BR, "BR", "1101011000011111000000nnnnn00000") INST(BR, "BR", "1101011000011111000000nnnnn00000")

View file

@ -155,8 +155,13 @@ struct TranslatorVisitor final {
bool SYSL(Imm<3> op1, Imm<4> CRn, Imm<4> CRm, Imm<3> op2, Reg Rt); bool SYSL(Imm<3> op1, Imm<4> CRn, Imm<4> CRm, Imm<3> op2, Reg Rt);
bool MRS(Imm<1> o0, Imm<3> op1, Imm<4> CRn, Imm<4> CRm, Imm<3> op2, Reg Rt); bool MRS(Imm<1> o0, Imm<3> op1, Imm<4> CRn, Imm<4> CRm, Imm<3> op2, Reg Rt);
// System - PSTATE // System - Flag manipulation instructions
bool CFINV(); bool CFINV();
bool RMIF(Imm<6> lsb, Reg Rn, Imm<4> mask);
bool SETF8(Reg Rn);
bool SETF16(Reg Rn);
// System - Flag format instructions
bool XAFlag(); bool XAFlag();
bool AXFlag(); bool AXFlag();
@ -171,13 +176,6 @@ struct TranslatorVisitor final {
bool DC_CVAP(Reg Rt); bool DC_CVAP(Reg Rt);
bool DC_CIVAC(Reg Rt); bool DC_CIVAC(Reg Rt);
// Data processing - Register - Rotate right into flags
bool RMIF(Imm<6> lsb, Reg Rn, Imm<4> mask);
// Data processing - Register - Evaluate into flags
bool SETF8(Reg Rn);
bool SETF16(Reg Rn);
// Unconditonal branch (Register) // Unconditonal branch (Register)
bool BR(Reg Rn); bool BR(Reg Rn);
bool BRA(bool Z, bool M, Reg Rn, Reg Rm); bool BRA(bool Z, bool M, Reg Rn, Reg Rm);