From 9071fc0e22cf194e6e048dff403155cbb0205a1f Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 20 Nov 2020 18:24:56 +0100 Subject: pkg/ifuzz/ifuzzimpl: move ModeInsns into tests ModeInsns is only used in tests. Move it there. --- pkg/ifuzz/ifuzz_test.go | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'pkg/ifuzz/ifuzz_test.go') diff --git a/pkg/ifuzz/ifuzz_test.go b/pkg/ifuzz/ifuzz_test.go index 70177b5ef..d62048304 100644 --- a/pkg/ifuzz/ifuzz_test.go +++ b/pkg/ifuzz/ifuzz_test.go @@ -28,13 +28,7 @@ func testMode(t *testing.T, arch string) { for mode := ifuzzimpl.Mode(0); mode < ifuzzimpl.ModeLast; mode++ { for priv := 0; priv < 2; priv++ { for exec := 0; exec < 2; exec++ { - cfg := &Config{ - Arch: arch, - Mode: mode, - Priv: priv != 0, - Exec: exec != 0, - } - insns := ifuzzimpl.ModeInsns(cfg) + insns := allInsns(arch, mode, priv != 0, exec != 0) t.Logf("mode=%v priv=%v exec=%v: %v instructions", mode, priv, exec, len(insns)) for _, insn := range insns { all[insn] = true @@ -68,14 +62,13 @@ func testDecode(t *testing.T, arch string) { for repeat := 0; repeat < 10; repeat++ { for mode := ifuzzimpl.Mode(0); mode < ifuzzimpl.ModeLast; mode++ { - cfg := &Config{ - Arch: arch, + cfg := &ifuzzimpl.Config{ Mode: mode, Priv: true, Exec: true, } failed := false - for _, insn := range ifuzzimpl.ModeInsns(cfg) { + for _, insn := range allInsns(arch, mode, true, true) { text0 := insn.Encode(cfg, r) text := text0 repeat: @@ -127,3 +120,15 @@ func testDecode(t *testing.T, arch string) { } } } + +func allInsns(arch string, mode ifuzzimpl.Mode, priv, exec bool) []ifuzzimpl.Insn { + insnset := ifuzzimpl.Arches[arch] + insns := insnset.GetInsns(mode, ifuzzimpl.TypeUser) + if priv { + insns = append(insns, insnset.GetInsns(mode, ifuzzimpl.TypePriv)...) + if exec { + insns = append(insns, insnset.GetInsns(mode, ifuzzimpl.TypeExec)...) + } + } + return insns +} -- cgit mrf-deployment