Index: src/assembler_ia32.h |
diff --git a/src/assembler_ia32.h b/src/assembler_ia32.h |
index 0080f33178bb0c2dae2ca1a9eb975faedce9da11..22ecb6e7be3dd5a4e4b3ad0edd977be4d7e2ea01 100644 |
--- a/src/assembler_ia32.h |
+++ b/src/assembler_ia32.h |
@@ -397,6 +397,15 @@ public: |
TypedEmitXmmImm XmmImm; |
}; |
+ // Cross Xmm/GPR cast instructions. |
+ template <typename DReg_t, typename SReg_t> struct CastEmitterRegOp { |
+ typedef void (AssemblerX86::*TypedEmitRegs)(Type, DReg_t, SReg_t); |
+ typedef void (AssemblerX86::*TypedEmitAddr)(Type, DReg_t, const Address &); |
+ |
+ TypedEmitRegs RegReg; |
+ TypedEmitAddr RegAddr; |
+ }; |
+ |
/* |
* Emit Machine Instructions. |
*/ |
@@ -537,23 +546,22 @@ public: |
void minpd(XmmRegister dst, XmmRegister src); |
void maxpd(XmmRegister dst, XmmRegister src); |
void sqrtpd(XmmRegister dst); |
- void cvtps2pd(XmmRegister dst, XmmRegister src); |
- void cvtpd2ps(XmmRegister dst, XmmRegister src); |
void shufpd(XmmRegister dst, XmmRegister src, const Immediate &mask); |
- void cvtsi2ss(XmmRegister dst, GPRRegister src); |
- void cvtsi2sd(XmmRegister dst, GPRRegister src); |
+ void cvtdq2ps(Type, XmmRegister dst, XmmRegister src); |
+ void cvtdq2ps(Type, XmmRegister dst, const Address &src); |
- void cvtss2si(GPRRegister dst, XmmRegister src); |
- void cvtss2sd(XmmRegister dst, XmmRegister src); |
+ void cvttps2dq(Type, XmmRegister dst, XmmRegister src); |
+ void cvttps2dq(Type, XmmRegister dst, const Address &src); |
- void cvtsd2si(GPRRegister dst, XmmRegister src); |
- void cvtsd2ss(XmmRegister dst, XmmRegister src); |
+ void cvtsi2ss(Type DestTy, XmmRegister dst, GPRRegister src); |
+ void cvtsi2ss(Type DestTy, XmmRegister dst, const Address &src); |
- void cvttss2si(GPRRegister dst, XmmRegister src); |
- void cvttsd2si(GPRRegister dst, XmmRegister src); |
+ void cvtfloat2float(Type SrcTy, XmmRegister dst, XmmRegister src); |
+ void cvtfloat2float(Type SrcTy, XmmRegister dst, const Address &src); |
- void cvtdq2pd(XmmRegister dst, XmmRegister src); |
+ void cvttss2si(Type SrcTy, GPRRegister dst, XmmRegister src); |
+ void cvttss2si(Type SrcTy, GPRRegister dst, const Address &src); |
void ucomiss(Type Ty, XmmRegister a, XmmRegister b); |
void ucomiss(Type Ty, XmmRegister a, const Address &b); |