aboutsummaryrefslogtreecommitdiff
path: root/sim/ppc/ppc-opcode-flat
diff options
context:
space:
mode:
Diffstat (limited to 'sim/ppc/ppc-opcode-flat')
-rw-r--r--sim/ppc/ppc-opcode-flat86
1 files changed, 10 insertions, 76 deletions
diff --git a/sim/ppc/ppc-opcode-flat b/sim/ppc/ppc-opcode-flat
index 21079f8..54a8433 100644
--- a/sim/ppc/ppc-opcode-flat
+++ b/sim/ppc/ppc-opcode-flat
@@ -17,79 +17,13 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
-# Instruction decode:
-#
-# The table that follows is used by gen to construct a decision tree
-# that can identify each possible instruction. Gen then outputs this
-# decision tree as (according to config) a table or switch statement
-# as the function idecode.
-#
-# In parallel to this, as mentioned above, WITH_EXPANDED_SEMANTICS
-# determines of the semantic functions themselves should be expanded
-# in a similar way.
-#
-# The table contains the following entries:
-#
-# <valid>
-#
-# Must be 1 for the entry to be considered. The last entry must be
-# zero.
-#
-# <first>
-# <last>
-#
-# Range of bits (within the instruction) that should be searched for
-# an instruction field. Within such ranges, gen looks for opcodes
-# (constants), registers (strings) and reserved bits (slash) and
-# according to the rules that follows includes or excludes them from
-# a possible instruction field.
-#
-# <force_first>
-# <force_last>
-#
-# If an instructioin field was found, enlarge the field size so that
-# it is forced to at least include bits starting from <force_first>
-# (<force_last>). To stop this occuring, use <force_first> = <last>
-# + 1 and <force_last> = <first> - 1.
-#
-# <force_slash>
-#
-# Treat `/' fields as a constant instead of variable when looking for
-# an instruction field.
-#
-# <force_expansion>
-#
-# Treat any contained register (string) fields as constant when
-# determining the instruction field. For the instruction decode (and
-# controled by IDECODE_EXPAND_SEMANTICS) this forces the expansion of
-# what would otherwize be non constant bits of an instruction.
-#
-# <use_switch>
-#
-# Should this table be expanded using a switch statement (val 1) and
-# if so, should it be padded with entries so as to force the compiler
-# to generate a jump table (val 2).
-#
-# <special_mask>
-# <special_value>
-# <special_rule>
-#
-# Special rule to fine tune how specific (or groups) of instructions
-# are expanded. The applicability of the rule is determined by
-#
-# <special_mask> != 0 && (instruction> & <special_mask>) == <special_value>
-#
-# Where <instruction> is obtained by looking only at constant fields
-# with in an instructions spec. When determining an expansion, the
-# rule is only considered when a node contains a single instruction.
-# <special_rule> can be any of:
-#
-# 0: for this instruction, expand by earlier rules
-# 1: expand bits <force_low> .. <force_hi> only
-# 2: boolean expansion of only zero/non-zero cases
-#
- 0: 5: 0: 5:0:: 2:0x00000000:0x00000000:0
-21:31:32:-1:0:OE,LR,AA,Rc,LK:1:0x00000000:0x00000000:0
- 6: 9: 6: 9:0:BO: 1:0xfc000000:0x40000000:1
-11:15:11:15:0:RA: 1:0xfc000000:0x38000000:2
-11:15:11:15:0:RA: 1:0xfc000000:0x3c000000:2
+# sed < ppc-opcode-complex > ppc-opcode-flat -e 's/array/switch/'
+#
+padded-switch,normal: 0: 5: 0: 5:
+padded-switch,normal: 21:31:32:-1:OE,LR,AA,Rc,LK:
+padded-switch,expand-forced: 6: 9: 6: 9:BO: 0xfc000000:0x40000000
+switch,boolean: 11:15:11:15:0RA: 0xfc000000:0x38000000:0
+switch,boolean: 11:15:11:15:RA: 0xfc000000:0x3c000000:0
+# BLR instruction
+switch,boolean: 11:20:11:20:SPR: 0xfc0007ff:0x7c0003a6:0x100
+switch,boolean: 11:20:11:20:SPR: 0xfc0007ff:0x7c0002a6:0x100