aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/ifuzz/ifuzzimpl/ifuzzimpl.go')
-rw-r--r--pkg/ifuzz/ifuzzimpl/ifuzzimpl.go17
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
+}