aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-11-20 19:10:02 +0100
committerDmitry Vyukov <dvyukov@google.com>2020-11-21 08:46:20 +0100
commite1dea42221c13dabdf9d4938428f1ef91863b813 (patch)
treee3006261831248e7a815c3386bc683b1f408bd57 /pkg/ifuzz/ifuzzimpl/ifuzzimpl.go
parent6e337f5d06138208368afa1ee9f4b6037ef0f069 (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.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
+}