diff options
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 +} |
