sparc: Convert SPARC to use local register index storage.
authorGabe Black <gabe.black@gmail.com>
Sun, 1 Nov 2020 11:52:41 +0000 (03:52 -0800)
committerGabe Black <gabe.black@gmail.com>
Tue, 24 Nov 2020 06:25:14 +0000 (06:25 +0000)
commit05f4da760045a6d687aa8a9bdf579fffc6710b7d
tree1e9f28b6db19c0a0bb5332a21f5adcb5032e2b9a
parent2b5b4726677ceca7d509a612fcc1921462d31b11
sparc: Convert SPARC to use local register index storage.

Once all ISAs are converted, the base StaticInst class will be able to
drop its local arrays, and will no longer need to know what the global
maximum number of source or destination registers is for a given
instruction.

Most of the convertion was very simple and just involved adding tags to
declare and install the register arrays in all the class definitions.
Since SPARC has a relatively simple ISA definition, there weren't many
places that needed to be updated.

The exception was the BlockMem template, which was declaring the microop
classes within the body of the macroop. That was ok when those
declarations didn't need anything other than the name of their parent,
but now they also need to know how big to declare their arrays based on
their actual implementation.

To facilitate that, and to significantly streamline the definition of
the macroop class, the microop class definitions were moved to their own
template, and only the declaration was left in the parent class.

Change-Id: I09e6b1d1041c6a0aeaee63ce5f9a18cf482b6203
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36879
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/sparc/isa/formats/basic.isa
src/arch/sparc/isa/formats/mem/basicmem.isa
src/arch/sparc/isa/formats/mem/blockmem.isa
src/arch/sparc/isa/formats/nop.isa
src/arch/sparc/isa/formats/priv.isa