From 6e337f5d06138208368afa1ee9f4b6037ef0f069 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 20 Nov 2020 19:07:23 +0100 Subject: pkg/ifuzz/x86: deduplicate modeInsns population logic It's currently duplicated in x86 and powerpc. Move to ifuzzimpl. --- pkg/ifuzz/ifuzzimpl/ifuzzimpl.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'pkg/ifuzz/ifuzzimpl') diff --git a/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go b/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go index 31ca522cd..831e1ba3f 100644 --- a/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go +++ b/pkg/ifuzz/ifuzzimpl/ifuzzimpl.go @@ -20,7 +20,7 @@ type ( ) type Insn interface { - Info() (string, bool) + Info() (name string, mode Mode, pseudo, priv bool) Encode(cfg *Config, r *rand.Rand) []byte } @@ -61,3 +61,24 @@ const ( ) var SpecialNumbers = [...]uint64{0, 1 << 15, 1 << 16, 1 << 31, 1 << 32, 1 << 47, 1 << 47, 1 << 63} + +type ModeInsns [ModeLast][TypeLast][]Insn + +func (modeInsns *ModeInsns) Add(insn Insn) { + _, mode, pseudo, priv := insn.Info() + for m := Mode(0); m < ModeLast; m++ { + if mode&(1<