176a177,180
> class FpUnaryOp(X86Microop):
> __metaclass__ = FpOpMeta
> # This class itself doesn't act as a microop
> abstract = True
178c182,210
< class FpOp(X86Microop):
---
> # Default template parameter values
> flag_code = ""
> cond_check = "true"
> else_code = ";"
>
> def __init__(self, dest, src1, spm=0, \
> SetStatus=False, dataSize="env.dataSize"):
> self.dest = dest
> self.src1 = src1
> self.src2 = "InstRegIndex(0)"
> self.spm = spm
> self.dataSize = dataSize
> if SetStatus:
> self.className += "Flags"
> if spm:
> self.className += "Top"
>
> def getAllocator(self, microFlags):
> return '''new %(class_name)s(machInst, macrocodeBlock,
> %(flags)s, %(src1)s, %(src2)s, %(dest)s,
> %(dataSize)s, %(spm)d)''' % {
> "class_name" : self.className,
> "flags" : self.microFlagsText(microFlags),
> "src1" : self.src1, "src2" : self.src2,
> "dest" : self.dest,
> "dataSize" : self.dataSize,
> "spm" : self.spm}
>
> class FpBinaryOp(X86Microop):
211,215c243
< class Movfp(FpOp):
< def __init__(self, dest, src1, spm=0, \
< SetStatus=False, dataSize="env.dataSize"):
< super(Movfp, self).__init__(dest, src1, "InstRegIndex(0)", \
< spm, SetStatus, dataSize)
---
> class Movfp(FpUnaryOp):
221c249
< class Xorfp(FpOp):
---
> class Xorfp(FpBinaryOp):
224c252
< class Sqrtfp(FpOp):
---
> class Sqrtfp(FpBinaryOp):
226a255,261
> class Cosfp(FpUnaryOp):
> code = 'FpDestReg = cos(FpSrcReg1);'
>
> class Sinfp(FpUnaryOp):
> code = 'FpDestReg = sin(FpSrcReg1);'
>
>
228c263
< class ConvOp(FpOp):
---
> class ConvOp(FpBinaryOp):
261c296
< class addfp(FpOp):
---
> class addfp(FpBinaryOp):
264c299
< class mulfp(FpOp):
---
> class mulfp(FpBinaryOp):
267c302
< class divfp(FpOp):
---
> class divfp(FpBinaryOp):
270c305
< class subfp(FpOp):
---
> class subfp(FpBinaryOp):
273c308
< class Compfp(FpOp):
---
> class Compfp(FpBinaryOp):