Added disassembler support for the ARM parallel and saturated instructions (#44)
This commit is contained in:
parent
cda25c12b3
commit
ed71e31cea
1 changed files with 48 additions and 16 deletions
|
@ -717,24 +717,56 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parallel Add/Subtract (Halving) instructions
|
// Parallel Add/Subtract (Halving) instructions
|
||||||
std::string arm_SHADD8(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
std::string arm_SHADD8(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
std::string arm_SHADD16(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
return fmt::format("shadd8{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
std::string arm_SHASX(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
}
|
||||||
std::string arm_SHSAX(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
std::string arm_SHADD16(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
std::string arm_SHSUB8(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
return fmt::format("shadd16{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
std::string arm_SHSUB16(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
}
|
||||||
std::string arm_UHADD8(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
std::string arm_SHASX(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
std::string arm_UHADD16(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
return fmt::format("shasx{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
std::string arm_UHASX(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
}
|
||||||
std::string arm_UHSAX(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
std::string arm_SHSAX(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
std::string arm_UHSUB8(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
return fmt::format("shsax{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
std::string arm_UHSUB16(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
}
|
||||||
|
std::string arm_SHSUB8(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("shsub8{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
std::string arm_SHSUB16(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("shsub16{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
std::string arm_UHADD8(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("uhadd8{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
std::string arm_UHADD16(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("uhadd16{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
std::string arm_UHASX(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("uhasx{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
std::string arm_UHSAX(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("uhsax{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
std::string arm_UHSUB8(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("uhsub8{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
std::string arm_UHSUB16(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("uhsub16{} {}, {}, {}", CondToString(cond), d, n, m);
|
||||||
|
}
|
||||||
|
|
||||||
// Saturated Add/Subtract instructions
|
// Saturated Add/Subtract instructions
|
||||||
std::string arm_QADD(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
std::string arm_QADD(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
std::string arm_QSUB(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
return fmt::format("qadd{} {}, {}, {}", CondToString(cond), d, m, n);
|
||||||
std::string arm_QDADD(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
}
|
||||||
std::string arm_QDSUB(Cond cond, Reg n, Reg d, Reg m) { return "ice"; }
|
std::string arm_QSUB(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("qsub{} {}, {}, {}", CondToString(cond), d, m, n);
|
||||||
|
}
|
||||||
|
std::string arm_QDADD(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("qdadd{} {}, {}, {}", CondToString(cond), d, m, n);
|
||||||
|
}
|
||||||
|
std::string arm_QDSUB(Cond cond, Reg n, Reg d, Reg m) {
|
||||||
|
return fmt::format("qdsub{} {}, {}, {}", CondToString(cond), d, m, n);
|
||||||
|
}
|
||||||
|
|
||||||
// Synchronization Primitive instructions
|
// Synchronization Primitive instructions
|
||||||
std::string arm_CLREX() {
|
std::string arm_CLREX() {
|
||||||
|
|
Loading…
Reference in a new issue