mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-11 23:56:34 +00:00
Optimization: Make SVC use RSB
This commit is contained in:
@@ -166,6 +166,7 @@ struct LinkBlockFast {
|
||||
struct PopRSBHint {};
|
||||
|
||||
struct If;
|
||||
struct CheckHalt;
|
||||
/// A Terminal is the terminal instruction in a MicroBlock.
|
||||
using Terminal = boost::variant<
|
||||
Invalid,
|
||||
@@ -174,7 +175,8 @@ using Terminal = boost::variant<
|
||||
LinkBlock,
|
||||
LinkBlockFast,
|
||||
PopRSBHint,
|
||||
boost::recursive_wrapper<If>
|
||||
boost::recursive_wrapper<If>,
|
||||
boost::recursive_wrapper<CheckHalt>
|
||||
>;
|
||||
|
||||
/**
|
||||
@@ -188,6 +190,15 @@ struct If {
|
||||
Terminal else_;
|
||||
};
|
||||
|
||||
/**
|
||||
* This terminal instruction checks if a halt was requested. If it wasn't, else_ is
|
||||
* executed.
|
||||
*/
|
||||
struct CheckHalt {
|
||||
CheckHalt(Terminal else_) : else_(else_) {}
|
||||
Terminal else_;
|
||||
};
|
||||
|
||||
} // namespace Term
|
||||
|
||||
using Term::Terminal;
|
||||
|
||||
Reference in New Issue
Block a user