c552b06a8c
Auxiliary Functions and Formats for FP in general arch/mips/isa/decoder.isa: ISA Parser doesnt accept operands of different types in one instruction so fix this for unorderedFP functions... Add basic support for Paired Singled (PS) FP ops which happen to be part of the MIPS 32-ASE but turned out to be included in the MIPS32ISA manual... The PS instructions allow SIMD in a pipeline... arch/mips/isa/formats/fp.isa: Add some more Formats for FP operation. I will add some auxiliary code through these formats to alleviate code redundancy in the decoder.isa arch/mips/isa/operands.isa: Add operands for Paired Singles Ops arch/mips/isa_traits.cc: removed convert&round function and replace with fpConvert. The whole "rounding mode" stuff is something that should be considered for full-system mode... Also added skeletons for the unorderedFP,truncFP,and condition code funcs. arch/mips/isa_traits.hh: declare some Functions arch/mips/types.hh: add new conversion types --HG-- extra : convert_revision : 79251d590a27b74a3d6a62a2fbb937df3e59963f
45 lines
1.6 KiB
Text
45 lines
1.6 KiB
Text
def operand_types {{
|
|
'sb' : ('signed int', 8),
|
|
'ub' : ('unsigned int', 8),
|
|
'sh' : ('signed int', 16),
|
|
'uh' : ('unsigned int', 16),
|
|
'sw' : ('signed int', 32),
|
|
'uw' : ('unsigned int', 32),
|
|
'sd' : ('signed int', 64),
|
|
'ud' : ('unsigned int', 64),
|
|
'sf' : ('float', 32),
|
|
'df' : ('float', 64),
|
|
'qf' : ('float', 128)
|
|
}};
|
|
|
|
def operands {{
|
|
'Rd': ('IntReg', 'uw', 'RD', 'IsInteger', 1),
|
|
'Rs': ('IntReg', 'uw', 'RS', 'IsInteger', 2),
|
|
'Rt': ('IntReg', 'uw', 'RT', 'IsInteger', 3),
|
|
'r31': ('IntReg', 'uw','R31','IsInteger', 4),
|
|
'R0': ('IntReg', 'uw','R0', 'IsInteger', 5),
|
|
'R2': ('IntReg', 'uw','2', 'IsInteger', 5),
|
|
|
|
'IntImm': ('IntReg', 'uw', 'INTIMM', 'IsInteger', 3),
|
|
|
|
'Fd': ('FloatReg', 'sf', 'FD', 'IsFloating', 1),
|
|
'Fs': ('FloatReg', 'sf', 'FS', 'IsFloating', 2),
|
|
'Ft': ('FloatReg', 'sf', 'FT', 'IsFloating', 3),
|
|
'Fr': ('FloatReg', 'sf', 'FR', 'IsFloating', 3),
|
|
|
|
#Operands For Paired Singles FP Operations
|
|
'Fd1': ('FloatReg', 'sf', 'FD', 'IsFloating', 4),
|
|
'Fd2': ('FloatReg', 'sf', 'FD+1', 'IsFloating', 4),
|
|
'Fs1': ('FloatReg', 'sf', 'FS', 'IsFloating', 5),
|
|
'Fs2': ('FloatReg', 'sf', 'FS+1', 'IsFloating', 5),
|
|
'Ft1': ('FloatReg', 'sf', 'FT', 'IsFloating', 6),
|
|
'Ft2': ('FloatReg', 'sf', 'FT+1', 'IsFloating', 6),
|
|
'Fr1': ('FloatReg', 'sf', 'FR', 'IsFloating', 7),
|
|
'Fr2': ('FloatReg', 'sf', 'FR+1', 'IsFloating', 7),
|
|
|
|
|
|
'Mem': ('Mem', 'uw', None, ('IsMemRef', 'IsLoad', 'IsStore'), 4),
|
|
|
|
'NPC': ('NPC', 'uw', None, ( None, None, 'IsControl' ), 4),
|
|
'NNPC':('NNPC', 'uw', None, ( None, None, 'IsControl' ), 4)
|
|
}};
|