diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-11-20 19:10:02 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-11-21 08:46:20 +0100 |
| commit | e1dea42221c13dabdf9d4938428f1ef91863b813 (patch) | |
| tree | e3006261831248e7a815c3386bc683b1f408bd57 /pkg/ifuzz/ifuzzimpl/ifuzzimpl.go | |
| parent | 6e337f5d06138208368afa1ee9f4b6037ef0f069 (diff) | |
pkg/ifuzz/ifuzzimpl: move IsCompatible from x86
We now can implement IsCompatible portably.
Diffstat (limited to 'pkg/ifuzz/ifuzzimpl/ifuzzimpl.go')
| -rw-r--r-- | pkg/ifuzz/ifuzzimpl/ifuzzimpl.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go b/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go index 831e1ba3f..32f285250 100644 --- a/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go +++ b/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go @@ -82,3 +82,20 @@ func (modeInsns *ModeInsns) Add(insn Insn) { } } } + +func (cfg *Config) IsCompatible(insn Insn) bool { + _, mode, pseudo, priv := insn.Info() + if cfg.Mode < 0 || cfg.Mode >= ModeLast { + panic("bad mode") + } + if priv && !cfg.Priv { + return false + } + if pseudo && !cfg.Exec { + return false + } + if mode&(1<<uint(cfg.Mode)) == 0 { + return false + } + return true +} |
