diff --git a/src/mem/slicc/symbols/Type.py b/src/mem/slicc/symbols/Type.py --- a/src/mem/slicc/symbols/Type.py +++ b/src/mem/slicc/symbols/Type.py @@ -544,6 +544,29 @@ } ''') + code(''' +inline MachineType +ConvertGenericMachToMach(GenericMachineType genMachType) +{ +''') + print self.symtab.find("GenericMachineType") + for (ident, enum) in self.symtab.find("GenericMachineType").enums.iteritems(): + if ident in self.symtab.find("MachineType").enums: + code(''' + if (genMachType == GenericMachineType_${{ident}}) + return MachineType_${{enum.ident}}; +''') + else: + code(''' + if (genMachType == GenericMachineType_${{ident}}) + return MachineType_NUM; +''') + code(''' + panic("cannot convert to a MachineType"); +} +''') + + if self.isStateDecl: code('''